diff options
| author | Misko Hevery | 2011-05-17 13:13:16 -0700 |
|---|---|---|
| committer | Misko Hevery | 2011-06-08 15:21:33 -0700 |
| commit | 4f2f3c9cbf345301ca8feac308878b7ac0d0a597 (patch) | |
| tree | 8f9e8290fbb2d5d82376a97195cbef7a285cfa70 | |
| parent | c1abc03cf3317058be76b0f554d0fdea13293d96 (diff) | |
| download | angular.js-4f2f3c9cbf345301ca8feac308878b7ac0d0a597.tar.bz2 | |
Added support for deferring callbacks in time
| -rw-r--r-- | src/angular-mocks.js | 15 | ||||
| -rw-r--r-- | test/angular-mocksSpec.js | 17 |
2 files changed, 28 insertions, 4 deletions
diff --git a/src/angular-mocks.js b/src/angular-mocks.js index 5cf7ff7c..0f806917 100644 --- a/src/angular-mocks.js +++ b/src/angular-mocks.js @@ -161,12 +161,19 @@ function MockBrowser() { self.lastCookieHash = {}; self.deferredFns = []; - self.defer = function(fn) { - self.deferredFns.push(fn); + self.defer = function(fn, delay) { + delay = delay || 0; + self.deferredFns.push({time:(self.defer.now + delay), fn:fn}); + self.deferredFns.sort(function(a,b){ return a.time - b.time;}); }; - self.defer.flush = function() { - while (self.deferredFns.length) self.deferredFns.shift()(); + self.defer.now = 0; + + self.defer.flush = function(time) { + self.defer.now += (time || 0); + while (self.deferredFns.length && self.deferredFns[0].time <= self.defer.now) { + self.deferredFns.shift().fn(); + } }; } MockBrowser.prototype = { diff --git a/test/angular-mocksSpec.js b/test/angular-mocksSpec.js index 22a711dc..5463f3a0 100644 --- a/test/angular-mocksSpec.js +++ b/test/angular-mocksSpec.js @@ -201,7 +201,24 @@ describe('mocks', function(){ browser.defer.flush(10); expect(browser.defer.now).toEqual(20); expect(log).toEqual('A;B;C;'); + }); + + it('should defer and flush over time', function(){ + browser.defer(logFn('A'), 1); + browser.defer(logFn('B'), 2); + browser.defer(logFn('C'), 3); + + browser.defer.flush(0); + expect(browser.defer.now).toEqual(0); + expect(log).toEqual(''); + + browser.defer.flush(1); + expect(browser.defer.now).toEqual(1); + expect(log).toEqual('A;'); + browser.defer.flush(2); + expect(browser.defer.now).toEqual(3); + expect(log).toEqual('A;B;C;'); }); }); |
