TNL-2384 Refactored Studio's PagingView to use RequireJS Text and moved it to common so that it can also be used by LMS.
133 lines
5.7 KiB
JavaScript
133 lines
5.7 KiB
JavaScript
define(['jquery', 'js/models/xblock_validation', 'js/views/xblock_validation', 'common/js/spec_helpers/template_helpers'],
|
|
function($, XBlockValidationModel, XBlockValidationView, TemplateHelpers) {
|
|
|
|
beforeEach(function () {
|
|
TemplateHelpers.installTemplate('xblock-validation-messages');
|
|
});
|
|
|
|
describe('XBlockValidationView helper methods', function() {
|
|
var model, view;
|
|
|
|
beforeEach(function () {
|
|
model = new XBlockValidationModel({parse: true});
|
|
view = new XBlockValidationView({model: model});
|
|
view.render();
|
|
});
|
|
|
|
it('has a getIcon method', function() {
|
|
var getIcon = view.getIcon.bind(view);
|
|
|
|
expect(getIcon(model.WARNING)).toBe('fa-exclamation-triangle');
|
|
expect(getIcon(model.NOT_CONFIGURED)).toBe('fa-exclamation-triangle');
|
|
expect(getIcon(model.ERROR)).toBe('fa-exclamation-circle');
|
|
expect(getIcon("unknown")).toBeNull();
|
|
});
|
|
|
|
it('has a getDisplayName method', function() {
|
|
var getDisplayName = view.getDisplayName.bind(view);
|
|
|
|
expect(getDisplayName(model.WARNING)).toBe("Warning");
|
|
expect(getDisplayName(model.NOT_CONFIGURED)).toBe("Warning");
|
|
expect(getDisplayName(model.ERROR)).toBe("Error");
|
|
expect(getDisplayName("unknown")).toBeNull();
|
|
});
|
|
|
|
it('can add additional classes', function() {
|
|
var noContainerContent = "no-container-content", notConfiguredModel, nonRootView, rootView;
|
|
|
|
expect(view.getAdditionalClasses()).toBe("");
|
|
expect(view.$('.validation')).not.toHaveClass(noContainerContent);
|
|
|
|
notConfiguredModel = new XBlockValidationModel({
|
|
"empty": false, "summary": {"text": "Not configured", "type": model.NOT_CONFIGURED},
|
|
"xblock_id": "id"
|
|
},
|
|
{parse: true}
|
|
);
|
|
nonRootView = new XBlockValidationView({model: notConfiguredModel});
|
|
nonRootView.render();
|
|
expect(nonRootView.getAdditionalClasses()).toBe("");
|
|
expect(view.$('.validation')).not.toHaveClass(noContainerContent);
|
|
|
|
rootView = new XBlockValidationView({model: notConfiguredModel, root: true});
|
|
rootView.render();
|
|
expect(rootView.getAdditionalClasses()).toBe(noContainerContent);
|
|
expect(rootView.$('.validation')).toHaveClass(noContainerContent);
|
|
});
|
|
|
|
});
|
|
|
|
describe('XBlockValidationView rendering', function() {
|
|
var model, view;
|
|
|
|
beforeEach(function () {
|
|
model = new XBlockValidationModel({
|
|
"empty": false,
|
|
"summary": {
|
|
"text": "Summary message", "type": "error",
|
|
"action_label": "Summary Action", "action_class": "edit-button"
|
|
},
|
|
"messages": [
|
|
{
|
|
"text": "First message", "type": "warning",
|
|
"action_label": "First Message Action", "action_runtime_event": "fix-up"
|
|
},
|
|
{"text": "Second message", "type": "error"}
|
|
],
|
|
"xblock_id": "id"
|
|
});
|
|
view = new XBlockValidationView({model: model});
|
|
view.render();
|
|
});
|
|
|
|
it('renders summary and detailed messages types', function() {
|
|
var details;
|
|
|
|
expect(view.$('.xblock-message')).toHaveClass("has-errors");
|
|
details = view.$('.xblock-message-item');
|
|
expect(details.length).toBe(2);
|
|
expect(details[0]).toHaveClass("warning");
|
|
expect(details[1]).toHaveClass("error");
|
|
});
|
|
|
|
it('renders summary and detailed messages text', function() {
|
|
var details;
|
|
|
|
expect(view.$('.xblock-message').text()).toContain("Summary message");
|
|
|
|
details = view.$('.xblock-message-item');
|
|
expect(details.length).toBe(2);
|
|
expect($(details[0]).text()).toContain("Warning");
|
|
expect($(details[0]).text()).toContain("First message");
|
|
expect($(details[1]).text()).toContain("Error");
|
|
expect($(details[1]).text()).toContain("Second message");
|
|
});
|
|
|
|
it('renders action info', function() {
|
|
expect(view.$('a.edit-button .action-button-text').text()).toContain("Summary Action");
|
|
|
|
expect(view.$('a.notification-action-button .action-button-text').text()).
|
|
toContain("First Message Action");
|
|
expect(view.$('a.notification-action-button').data("notification-action")).toBe("fix-up");
|
|
});
|
|
|
|
it('renders a summary only', function() {
|
|
var summaryOnlyModel = new XBlockValidationModel({
|
|
"empty": false,
|
|
"summary": {"text": "Summary message", "type": "warning"},
|
|
"xblock_id": "id"
|
|
}), summaryOnlyView, details;
|
|
|
|
summaryOnlyView = new XBlockValidationView({model: summaryOnlyModel});
|
|
summaryOnlyView.render();
|
|
|
|
expect(summaryOnlyView.$('.xblock-message')).toHaveClass("has-warnings");
|
|
expect(view.$('.xblock-message').text()).toContain("Summary message");
|
|
|
|
details = summaryOnlyView.$('.xblock-message-item');
|
|
expect(details.length).toBe(0);
|
|
});
|
|
});
|
|
}
|
|
);
|