Skip to content

Commit 42e6dda

Browse files
committed
Merges master.
2 parents 07bc828 + 5324ac9 commit 42e6dda

File tree

11 files changed

+95
-6
lines changed

11 files changed

+95
-6
lines changed

dist/regexValues/duration.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22
Object.defineProperty(exports, "__esModule", { value: true });
33
var rulr_1 = require("rulr");
44
var TypeWarning_1 = require("../warnings/TypeWarning");
5-
exports.default = rulr_1.checkRegex(/^P((\d+([\.,]\d+)?Y)?(\d+([\.,]\d+)?M)?(\d+([\.,]\d+)?W)?(\d+([\.,]\d+)?D)?)?(T(\d+([\.,]\d+)?H)?(\d+([\.,]\d+)?M)?(\d+([\.,]\d+)?S)?)?$/i, TypeWarning_1.createTypeWarning('ISO Duration'));
5+
exports.default = rulr_1.checkRegex(/^(-?)P(?=\d|T\d)(?:(\d+)Y)?(?:(\d+)M)?(?:(\d+)([DW]))?(?:T(?:(\d+)H)?(?:(\d+)M)?(?:(\d+(?:\.\d+)?)S)?)?$/, TypeWarning_1.createTypeWarning('ISO Duration'));

dist/schemaRules/definition.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
Object.defineProperty(exports, "__esModule", { value: true });
33
var rulr_1 = require("rulr");
44
var InvalidComponentsWarning_1 = require("../warnings/InvalidComponentsWarning");
5+
var MissingInteractionTypeWarning_1 = require("../warnings/MissingInteractionTypeWarning");
56
var factory_1 = require("../factory");
67
var getSupportedComponents = function (interactionType) {
78
switch (interactionType) {
@@ -55,4 +56,16 @@ exports.default = rulr_1.composeRules([
5556
];
5657
return [];
5758
},
59+
function (data, path) {
60+
if (data == null || data.constructor !== Object)
61+
return [];
62+
var missingInteractionType = (data.correctResponsesPattern !== undefined &&
63+
data.interactionType === undefined);
64+
if (missingInteractionType) {
65+
return [
66+
new MissingInteractionTypeWarning_1.default(data, path)
67+
];
68+
}
69+
return [];
70+
}
5871
]);

dist/tests/regexValues/duration.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
33
var itsInvalid_1 = require("../itsInvalid");
44
var itsValid_1 = require("../itsValid");
55
var validData = 'P3Y6M4DT12H30M5S';
6+
var validData2 = 'P4W';
67
exports.default = function (test) {
78
itsInvalid_1.default('3Y6M4DT12H30M5S', 'not a Duration', test);
9+
itsInvalid_1.default('P4W1D', 'not a Duration', test);
810
itsInvalid_1.default(10, 'not a String', test);
911
itsValid_1.default(validData, test);
12+
itsValid_1.default(validData2, test);
1013
};

dist/tests/schemaRules/definition.js

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,12 @@
11
"use strict";
2+
var __assign = (this && this.__assign) || Object.assign || function(t) {
3+
for (var s, i = 1, n = arguments.length; i < n; i++) {
4+
s = arguments[i];
5+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6+
t[p] = s[p];
7+
}
8+
return t;
9+
};
210
Object.defineProperty(exports, "__esModule", { value: true });
311
var describeInteractionProp_1 = require("../describeInteractionProp");
412
var describeOptionalProp_1 = require("../describeOptionalProp");
@@ -9,13 +17,19 @@ var validData = {};
917
var correctResponsesPattern = collection_1.default(factory_1.stringValue);
1018
exports.default = function (test) {
1119
itsInvalid_1.default(10, 'not an object', test);
20+
itsInvalid_1.default({
21+
type: 'http://adlnet.gov/expapi/activities/cmi.interaction',
22+
correctResponsesPattern: [
23+
'Bob\'s your uncle'
24+
]
25+
}, 'Missing interactionType', test);
1226
describeOptionalProp_1.default('name', factory_1.languageMap, validData, test);
1327
describeOptionalProp_1.default('description', factory_1.languageMap, validData, test);
1428
describeOptionalProp_1.default('type', factory_1.iri, validData, test);
1529
describeOptionalProp_1.default('moreInfo', factory_1.iri, validData, test);
1630
describeOptionalProp_1.default('extensions', factory_1.extensions, validData, test);
1731
describeOptionalProp_1.default('interactionType', factory_1.interactionType, validData, test);
18-
describeOptionalProp_1.default('correctResponsesPattern', correctResponsesPattern, validData, test);
32+
describeOptionalProp_1.default('correctResponsesPattern', correctResponsesPattern, __assign({}, validData, { type: 'http://adlnet.gov/expapi/activities/cmi.interaction', interactionType: 'fill-in' }), test);
1933
describeInteractionProp_1.default(['choices'], 'choice', test);
2034
describeInteractionProp_1.default(['choices'], 'sequencing', test);
2135
describeInteractionProp_1.default(['scale'], 'likert', test);
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import { Path, Warning } from 'rulr';
2+
export default class MissingInteractionTypeWarning extends Warning {
3+
constructor(data: any, path: Path);
4+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
"use strict";
2+
var __extends = (this && this.__extends) || (function () {
3+
var extendStatics = Object.setPrototypeOf ||
4+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
5+
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
6+
return function (d, b) {
7+
extendStatics(d, b);
8+
function __() { this.constructor = d; }
9+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
10+
};
11+
})();
12+
Object.defineProperty(exports, "__esModule", { value: true });
13+
var rulr_1 = require("rulr");
14+
var MissingInteractionTypeWarning = (function (_super) {
15+
__extends(MissingInteractionTypeWarning, _super);
16+
function MissingInteractionTypeWarning(data, path) {
17+
return _super.call(this, data, path) || this;
18+
}
19+
return MissingInteractionTypeWarning;
20+
}(rulr_1.Warning));
21+
exports.default = MissingInteractionTypeWarning;

src/regexValues/duration.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@ import { checkRegex, Rule } from 'rulr';
33
import { createTypeWarning } from '../warnings/TypeWarning';
44

55
export default checkRegex(
6-
/^P((\d+([\.,]\d+)?Y)?(\d+([\.,]\d+)?M)?(\d+([\.,]\d+)?W)?(\d+([\.,]\d+)?D)?)?(T(\d+([\.,]\d+)?H)?(\d+([\.,]\d+)?M)?(\d+([\.,]\d+)?S)?)?$/i
6+
/^(-?)P(?=\d|T\d)(?:(\d+)Y)?(?:(\d+)M)?(?:(\d+)([DW]))?(?:T(?:(\d+)H)?(?:(\d+)M)?(?:(\d+(?:\.\d+)?)S)?)?$/
77
, createTypeWarning('ISO Duration')) as Rule;

src/schemaRules/definition.ts

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import {
2-
restrictToSchema, restrictToCollection, composeRules, optional, Rule
2+
restrictToSchema, restrictToCollection, composeRules, optional, Rule, Warning
33
} from 'rulr';
44
import InvalidComponentsWarning from '../warnings/InvalidComponentsWarning';
5+
import MissingInteractionTypeWarning from '../warnings/MissingInteractionTypeWarning';
56
import {
67
languageMap,
78
iri,
@@ -54,7 +55,7 @@ export default composeRules([
5455
target: optional(restrictToCollection(() => interactionComponent)),
5556
steps: optional(restrictToCollection(() => interactionComponent)),
5657
}),
57-
(data, path) => {
58+
(data, path): Warning[] => {
5859
if (data == null || data.constructor !== Object) return [];
5960
const interactionType = data.interactionType;
6061
const unsupportedComponents = getUnsupportedComponents(interactionType);
@@ -66,4 +67,17 @@ export default composeRules([
6667
];
6768
return [];
6869
},
70+
(data, path): Warning[] => {
71+
if (data == null || data.constructor !== Object) return [];
72+
const missingInteractionType = (
73+
data.correctResponsesPattern !== undefined &&
74+
data.interactionType === undefined
75+
);
76+
if (missingInteractionType) {
77+
return [
78+
new MissingInteractionTypeWarning(data, path)
79+
];
80+
}
81+
return [];
82+
}
6983
]) as Rule;

src/tests/regexValues/duration.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,12 @@ import itsInvalid from '../itsInvalid';
33
import itsValid from '../itsValid';
44

55
const validData = 'P3Y6M4DT12H30M5S';
6+
const validData2 = 'P4W';
67

78
export default (test: Test) => {
89
itsInvalid('3Y6M4DT12H30M5S', 'not a Duration', test);
10+
itsInvalid('P4W1D', 'not a Duration', test);
911
itsInvalid(10, 'not a String', test);
1012
itsValid(validData, test);
13+
itsValid(validData2, test);
1114
};

src/tests/schemaRules/definition.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,24 @@ const correctResponsesPattern = collection(stringValue);
1616

1717
export default (test: Test) => {
1818
itsInvalid(10, 'not an object', test);
19+
itsInvalid({
20+
type: 'http://adlnet.gov/expapi/activities/cmi.interaction',
21+
correctResponsesPattern: [
22+
'Bob\'s your uncle'
23+
]
24+
}, 'Missing interactionType', test);
1925

2026
describeOptionalProp('name', languageMap, validData, test);
2127
describeOptionalProp('description', languageMap, validData, test);
2228
describeOptionalProp('type', iri, validData, test);
2329
describeOptionalProp('moreInfo', iri, validData, test);
2430
describeOptionalProp('extensions', extensions, validData, test);
2531
describeOptionalProp('interactionType', interactionType, validData, test);
26-
describeOptionalProp('correctResponsesPattern', correctResponsesPattern, validData, test);
32+
describeOptionalProp('correctResponsesPattern', correctResponsesPattern, {
33+
...validData,
34+
type: 'http://adlnet.gov/expapi/activities/cmi.interaction',
35+
interactionType: 'fill-in'
36+
}, test);
2737

2838
describeInteractionProp(['choices'], 'choice', test);
2939
describeInteractionProp(['choices'], 'sequencing', test);

0 commit comments

Comments
 (0)