(function () { 'use strict'; QUnit.module("Ajax", { afterEach: function() { $.mockjax.clear(); } }); QUnit.test("service factory", function(assert) { var container = { context: { CSRF_COOKIE_NAME: 'doesnt-matter' } }; var service = getMisagoService('ajax'); var ajax = service(container); assert.ok(ajax, "service factory has returned service instance."); }); QUnit.test("ajax success", function(assert) { $.mockjax({ url: '/working-url/', status: 200, responseText: { 'detail': 'ok' } }); var container = { context: { CSRF_COOKIE_NAME: 'doesnt-matter' } }; var service = getMisagoService('ajax'); var ajax = service(container); var done = assert.async(); ajax.ajax('GET', '/working-url/').then(function(data) { assert.equal(data.detail, 'ok', 'ajax succeeded on /working-url/'); done(); }); }); QUnit.test("ajax fail", function(assert) { $.mockjax({ url: '/failing-url/', status: 400, responseText: { 'detail': 'fail' } }); var container = { context: { CSRF_COOKIE_NAME: 'doesnt-matter' } }; var service = getMisagoService('ajax'); var ajax = service(container); var done = assert.async(); ajax.ajax('GET', '/failing-url/').then(function() { assert.ok(false, 'ajax succeeded on /failing-url/'); }, function(rejection) { assert.equal(rejection.detail, 'fail', 'ajax handled error from /failing-url/'); done(); }); }); }());