Files
edx-platform/cms/static/cms/js/spec/main_spec.js
2016-08-08 15:04:06 -04:00

83 lines
3.8 KiB
JavaScript

/* globals sandbox */
(function(sandbox) {
'use strict';
require(['jquery', 'backbone', 'cms/js/main', 'edx-ui-toolkit/js/utils/spec-helpers/ajax-helpers', 'jquery.cookie'],
function($, Backbone, main, AjaxHelpers) {
describe('CMS', function() {
it('should initialize URL', function() {
expect(window.CMS.URL).toBeDefined();
});
});
describe('main helper', function() {
beforeEach(function() {
this.previousAjaxSettings = $.extend(true, {}, $.ajaxSettings);
spyOn($, 'cookie').and.callFake(function(param) {
if (param === 'csrftoken') {
return 'stubCSRFToken';
}
});
return main();
});
afterEach(function() {
$.ajaxSettings = this.previousAjaxSettings;
return $.ajaxSettings;
});
it('turn on Backbone emulateHTTP', function() {
expect(Backbone.emulateHTTP).toBeTruthy();
});
it('setup AJAX CSRF token', function() {
expect($.ajaxSettings.headers['X-CSRFToken']).toEqual('stubCSRFToken');
});
});
describe('AJAX Errors', function() {
var server;
server = null;
beforeEach(function() {
appendSetFixtures(sandbox({
id: 'page-notification'
}));
});
afterEach(function() {
return server && server.restore();
});
it('successful AJAX request does not pop an error notification', function() {
server = AjaxHelpers.server([
200, {
'Content-Type': 'application/json'
}, '{}'
]);
expect($('#page-notification')).toBeEmpty();
$.ajax('/test');
expect($('#page-notification')).toBeEmpty();
server.respond();
expect($('#page-notification')).toBeEmpty();
});
it('AJAX request with error should pop an error notification', function() {
server = AjaxHelpers.server([
500, {
'Content-Type': 'application/json'
}, '{}'
]);
$.ajax('/test');
server.respond();
expect($('#page-notification')).not.toBeEmpty();
expect($('#page-notification')).toContainElement('div.wrapper-notification-error');
});
it('can override AJAX request with error so it does not pop an error notification', function() {
server = AjaxHelpers.server([
500, {
'Content-Type': 'application/json'
}, '{}'
]);
$.ajax({
url: '/test',
notifyOnError: false
});
server.respond();
expect($('#page-notification')).toBeEmpty();
});
});
});
}).call(this, sandbox);