diff options
Diffstat (limited to 'test/BrowserSpecs.js')
| -rw-r--r-- | test/BrowserSpecs.js | 36 |
1 files changed, 33 insertions, 3 deletions
diff --git a/test/BrowserSpecs.js b/test/BrowserSpecs.js index b4ad688b..40e983da 100644 --- a/test/BrowserSpecs.js +++ b/test/BrowserSpecs.js @@ -5,8 +5,11 @@ describe('browser', function(){ var browser, fakeWindow, xhr, logs, scripts, removedScripts, setTimeoutQueue; function fakeSetTimeout(fn) { - setTimeoutQueue.push(fn); - return Math.random(); + return setTimeoutQueue.push(fn) - 1; //return position in the queue + } + + function fakeClearTimeout(deferId) { + setTimeoutQueue[deferId] = noop; //replace fn with noop to preserve other deferId indexes } fakeSetTimeout.flush = function() { @@ -25,7 +28,8 @@ describe('browser', function(){ xhr = null; fakeWindow = { location: {href:"http://server"}, - setTimeout: fakeSetTimeout + setTimeout: fakeSetTimeout, + clearTimeout: fakeClearTimeout }; var fakeBody = [{appendChild: function(node){scripts.push(node);}, @@ -161,6 +165,32 @@ describe('browser', function(){ fakeSetTimeout.flush(); expect(callback).toHaveBeenCalled(); }); + + + it('should return unique deferId', function() { + var deferId1 = browser.defer(noop), + deferId2 = browser.defer(noop); + + expect(deferId1).toBeDefined(); + expect(deferId2).toBeDefined(); + expect(deferId1).not.toEqual(deferId2); + }) + + + describe('cancel', function() { + it('should allow tasks to be canceled with returned deferId', function() { + var log = [], + deferId1 = browser.defer(function() { log.push('cancel me') }), + deferId2 = browser.defer(function() { log.push('ok') }), + deferId3 = browser.defer(function() { log.push('cancel me, now!') }); + + expect(log).toEqual([]); + browser.defer.cancel(deferId1); + browser.defer.cancel(deferId3); + fakeSetTimeout.flush(); + expect(log).toEqual(['ok']); + }); + }); }); |
