153 lines
6.8 KiB
JavaScript
153 lines
6.8 KiB
JavaScript
define(['js/models/xblock_validation'],
|
|
function(XBlockValidationModel) {
|
|
var verifyModel;
|
|
|
|
verifyModel = function(model, expected_empty, expected_summary, expected_messages, expected_xblock_id) {
|
|
expect(model.get("empty")).toBe(expected_empty);
|
|
expect(model.get("summary")).toEqual(expected_summary);
|
|
expect(model.get("messages")).toEqual(expected_messages);
|
|
expect(model.get("xblock_id")).toBe(expected_xblock_id);
|
|
};
|
|
|
|
describe('XBlockValidationModel', function() {
|
|
it('handles empty variable', function() {
|
|
verifyModel(new XBlockValidationModel({parse: true}), true, {}, [], null);
|
|
verifyModel(new XBlockValidationModel({"empty": true}, {parse: true}), true, {}, [], null);
|
|
|
|
// It is assumed that the "empty" state on the JSON object passed in is correct
|
|
// (no attempt is made to correct other variables based on empty==true).
|
|
verifyModel(
|
|
new XBlockValidationModel(
|
|
{"empty": true, "messages": [{"text": "Bad JSON case"}], "xblock_id": "id"},
|
|
{parse: true}
|
|
),
|
|
true,
|
|
{},
|
|
[{"text": "Bad JSON case"}], "id"
|
|
);
|
|
});
|
|
|
|
it('creates a summary if not defined', function() {
|
|
// Single warning message.
|
|
verifyModel(
|
|
new XBlockValidationModel({
|
|
"empty": false,
|
|
"xblock_id": "id"
|
|
}, {parse: true}),
|
|
false,
|
|
{"text": "This component has validation issues.", "type": "warning"},
|
|
[],
|
|
"id"
|
|
);
|
|
// Two messages that compute to a "warning" state in the summary.
|
|
verifyModel(
|
|
new XBlockValidationModel({
|
|
"empty": false,
|
|
"messages": [{"text": "one", "type": "not-configured"}, {"text": "two", "type": "warning"}],
|
|
"xblock_id": "id"
|
|
}, {parse: true}),
|
|
false,
|
|
{"text": "This component has validation issues.", "type": "warning"},
|
|
[{"text": "one", "type": "not-configured"}, {"text": "two", "type": "warning"}],
|
|
"id"
|
|
);
|
|
// Two messages, with one of them "error", resulting in an "error" state in the summary.
|
|
verifyModel(
|
|
new XBlockValidationModel({
|
|
"empty": false,
|
|
"messages": [{"text": "one", "type": "warning"}, {"text": "two", "type": "error"}],
|
|
"xblock_id": "id"
|
|
}, {parse: true}),
|
|
false,
|
|
{"text": "This component has validation issues.", "type": "error"},
|
|
[{"text": "one", "type": "warning"}, {"text": "two", "type": "error"}],
|
|
"id"
|
|
);
|
|
});
|
|
|
|
it('respects summary properties that are defined', function() {
|
|
// Summary already present (both text and type), no messages.
|
|
verifyModel(
|
|
new XBlockValidationModel({
|
|
"empty": false,
|
|
"xblock_id": "id",
|
|
"summary": {"text": "my summary", "type": "custom type"}
|
|
}, {parse: true}),
|
|
false,
|
|
{"text": "my summary", "type": "custom type"},
|
|
[],
|
|
"id"
|
|
);
|
|
// Summary text present, but not type (will get default value of warning).
|
|
verifyModel(
|
|
new XBlockValidationModel({
|
|
"empty": false,
|
|
"xblock_id": "id",
|
|
"summary": {"text": "my summary"}
|
|
}, {parse: true}),
|
|
false,
|
|
{"text": "my summary", "type": "warning"},
|
|
[],
|
|
"id"
|
|
);
|
|
// Summary type present, but not text.
|
|
verifyModel(
|
|
new XBlockValidationModel({
|
|
"empty": false,
|
|
"summary": {"type": "custom type"},
|
|
"messages": [{"text": "one", "type": "not-configured"}, {"text": "two", "type": "warning"}],
|
|
"xblock_id": "id"
|
|
}, {parse: true}),
|
|
false,
|
|
{"text": "This component has validation issues.", "type": "custom type"},
|
|
[{"text": "one", "type": "not-configured"}, {"text": "two", "type": "warning"}],
|
|
"id"
|
|
);
|
|
// Summary text present, type will be computed as error.
|
|
verifyModel(
|
|
new XBlockValidationModel({
|
|
"empty": false,
|
|
"summary": {"text": "my summary"},
|
|
"messages": [{"text": "one", "type": "warning"}, {"text": "two", "type": "error"}],
|
|
"xblock_id": "id"
|
|
}, {parse: true}),
|
|
false,
|
|
{"text": "my summary", "type": "error"},
|
|
[{"text": "one", "type": "warning"}, {"text": "two", "type": "error"}],
|
|
"id"
|
|
);
|
|
});
|
|
|
|
it('clears messages if showSummaryOnly is true', function() {
|
|
verifyModel(
|
|
new XBlockValidationModel({
|
|
"empty": false,
|
|
"xblock_id": "id",
|
|
"summary": {"text": "my summary"},
|
|
"messages": [{"text": "one", "type": "warning"}, {"text": "two", "type": "error"}],
|
|
"showSummaryOnly": true
|
|
}, {parse: true}),
|
|
false,
|
|
{"text": "my summary", "type": "error"},
|
|
[],
|
|
"id"
|
|
);
|
|
|
|
verifyModel(
|
|
new XBlockValidationModel({
|
|
"empty": false,
|
|
"xblock_id": "id",
|
|
"summary": {"text": "my summary"},
|
|
"messages": [{"text": "one", "type": "warning"}, {"text": "two", "type": "error"}],
|
|
"showSummaryOnly": false
|
|
}, {parse: true}),
|
|
false,
|
|
{"text": "my summary", "type": "error"},
|
|
[{"text": "one", "type": "warning"}, {"text": "two", "type": "error"}],
|
|
"id"
|
|
);
|
|
});
|
|
});
|
|
}
|
|
);
|