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']); +      }); +    });    });  | 
