Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 6ea225e

Browse files
committed
Added support for deffering callbacks in time
1 parent d3593e8 commit 6ea225e

File tree

2 files changed

+28
-4
lines changed

2 files changed

+28
-4
lines changed

src/angular-mocks.js

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -154,12 +154,19 @@ function MockBrowser() {
154154
self.lastCookieHash = {};
155155
self.deferredFns = [];
156156

157-
self.defer = function(fn) {
158-
self.deferredFns.push(fn);
157+
self.defer = function(fn, delay) {
158+
delay = delay || 0;
159+
self.deferredFns.push({time:(self.defer.now + delay), fn:fn});
160+
self.deferredFns.sort(function(a,b){ return a.time - b.time;});
159161
};
160162

161-
self.defer.flush = function() {
162-
while (self.deferredFns.length) self.deferredFns.shift()();
163+
self.defer.now = 0;
164+
165+
self.defer.flush = function(time) {
166+
self.defer.now += (time || 0);
167+
while (self.deferredFns.length && self.deferredFns[0].time <= self.defer.now) {
168+
self.deferredFns.shift().fn();
169+
}
163170
};
164171
}
165172
MockBrowser.prototype = {

test/angular-mocksSpec.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,24 @@ describe('mocks', function(){
201201
browser.defer.flush(10);
202202
expect(browser.defer.now).toEqual(20);
203203
expect(log).toEqual('A;B;C;');
204+
});
205+
206+
it('should defer and flush over time', function(){
207+
browser.defer(logFn('A'), 1);
208+
browser.defer(logFn('B'), 2);
209+
browser.defer(logFn('C'), 3);
210+
211+
browser.defer.flush(0);
212+
expect(browser.defer.now).toEqual(0);
213+
expect(log).toEqual('');
214+
215+
browser.defer.flush(1);
216+
expect(browser.defer.now).toEqual(1);
217+
expect(log).toEqual('A;');
204218

219+
browser.defer.flush(2);
220+
expect(browser.defer.now).toEqual(3);
221+
expect(log).toEqual('A;B;C;');
205222
});
206223
});
207224

0 commit comments

Comments
 (0)