aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/angular-mocks.js15
-rw-r--r--test/angular-mocksSpec.js17
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;');
});
});