diff options
| author | Igor Minar | 2011-05-28 01:48:14 -0700 |
|---|---|---|
| committer | Igor Minar | 2011-07-18 14:14:19 -0700 |
| commit | 2b2df4754d8ee212741a78c068ba320d962556ba (patch) | |
| tree | 0a11ccedacf00fa3f7b987185bb912960ca4bf78 /test/BrowserSpecs.js | |
| parent | 120701b9d9ebdd9352c7fca2b8a381597a808362 (diff) | |
| download | angular.js-2b2df4754d8ee212741a78c068ba320d962556ba.tar.bz2 | |
feat($browser.$defer.cancel): support canceling defered tasks
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']); + }); + }); }); |
