mirror of
https://github.com/Hopiu/angular.js.git
synced 2026-05-23 13:25:48 +00:00
Added support for deferring callbacks in time
This commit is contained in:
parent
c1abc03cf3
commit
4f2f3c9cbf
2 changed files with 28 additions and 4 deletions
15
src/angular-mocks.js
vendored
15
src/angular-mocks.js
vendored
|
|
@ -161,12 +161,19 @@ function MockBrowser() {
|
||||||
self.lastCookieHash = {};
|
self.lastCookieHash = {};
|
||||||
self.deferredFns = [];
|
self.deferredFns = [];
|
||||||
|
|
||||||
self.defer = function(fn) {
|
self.defer = function(fn, delay) {
|
||||||
self.deferredFns.push(fn);
|
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() {
|
self.defer.now = 0;
|
||||||
while (self.deferredFns.length) self.deferredFns.shift()();
|
|
||||||
|
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 = {
|
MockBrowser.prototype = {
|
||||||
|
|
|
||||||
17
test/angular-mocksSpec.js
vendored
17
test/angular-mocksSpec.js
vendored
|
|
@ -201,7 +201,24 @@ describe('mocks', function(){
|
||||||
browser.defer.flush(10);
|
browser.defer.flush(10);
|
||||||
expect(browser.defer.now).toEqual(20);
|
expect(browser.defer.now).toEqual(20);
|
||||||
expect(log).toEqual('A;B;C;');
|
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;');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue