UNPKG

dojo

Version:

Dojo core is a powerful, lightweight library that makes common tasks quicker and easier. Animate elements, manipulate the DOM, and query with easy CSS syntax, all without sacrificing performance.

145 lines (125 loc) 2.94 kB
define([ 'intern!object', 'intern/chai!assert', 'dojo/promise/all', '../../../request/xhr', '../../../request/notify', '../../../errors/CancelError' ], function (registerSuite, assert, all, xhr, notify, CancelError) { function remover() { var args = arguments; return function () { for (var i=0; i<args.length; i++) { args[i].remove(); } return null; }; } var handle; registerSuite({ name: 'dojo/request/notify', afterEach: function () { if (handle) { handle = handle(); } }, 'start/send': function () { var dfd = this.async(), startCount = 0, sendCount = 0; handle = remover( notify('start', function () { startCount++; }), notify('send', function () { sendCount++; }) ); all([ xhr.get('/__services/request/xhr?delay=1000'), xhr.get('/__services/request/xhr?delay=1000') ]).then( dfd.callback(function () { assert.strictEqual(startCount, 1); assert.strictEqual(sendCount, 2); }), dfd.reject ); }, load: function () { var dfd = this.async(); var doneFired = false; handle = remover( notify('done', function () { doneFired = true; }), notify('load', dfd.rejectOnError(function (response) { assert.deepEqual(response.data.query, { foo: 'bar' }); assert.ok(!doneFired); })), notify('stop', dfd.callback(function () { assert.ok(doneFired); })) ); xhr.get('/__services/request/xhr?foo=bar', { handleAs: 'json' }); }, error: function () { var dfd = this.async(); var doneFired = false; handle = remover( notify('done', dfd.rejectOnError(function (data) { doneFired = true; assert.instanceOf(data, Error); })), notify('error', dfd.rejectOnError(function (data) { assert.instanceOf(data, Error); assert.ok(!doneFired); })), notify('stop', dfd.callback(function () { assert.ok(doneFired); })) ); xhr.get('doesntExist.text'); }, 'done/stop': function () { var dfd = this.async(), doneCount = 0, stopCount = 0, stopCalledAfterDone = false; handle = remover( notify('done', function () { doneCount++; stopCalledAfterDone = stopCount === 0; }), notify('stop', function () { stopCount++; }) ); all([ xhr.get('/__services/request/xhr?delay=1000'), xhr.get('/__services/request/xhr?delay=1000') ]).then( dfd.callback(function () { assert.ok(stopCalledAfterDone); assert.strictEqual(doneCount, 2); assert.strictEqual(stopCount, 1); }), dfd.reject ); }, cancel: function () { var dfd = this.async(); handle = remover( notify('send', function (response, cancel) { cancel(); }) ); xhr.get('/__services/request/xhr?delay=1000').then( dfd.reject, dfd.callback(function (error) { assert.instanceOf(error, CancelError); }) ); } }); });