83 lines
3.8 KiB
JavaScript
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);
|