aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/ngMock/angular-mocks.js9
-rw-r--r--test/ngMock/angular-mocksSpec.js17
2 files changed, 22 insertions, 4 deletions
diff --git a/src/ngMock/angular-mocks.js b/src/ngMock/angular-mocks.js
index 05fdc4ed..d0c1b9b2 100644
--- a/src/ngMock/angular-mocks.js
+++ b/src/ngMock/angular-mocks.js
@@ -105,16 +105,17 @@ angular.mock.$Browser = function() {
*/
self.defer.flush = function(delay) {
var flushedSomething = false;
+ now = self.defer.now;
if (angular.isDefined(delay)) {
- self.defer.now += delay;
+ now += delay;
} else {
if (self.deferredFns.length) {
- self.defer.now = self.deferredFns[self.deferredFns.length-1].time;
+ now = self.deferredFns[self.deferredFns.length-1].time;
}
}
- while (self.deferredFns.length && self.deferredFns[0].time <= self.defer.now) {
+ while (self.deferredFns.length && self.deferredFns[0].time <= now) {
flushedSomething = true;
self.deferredFns.shift().fn();
}
@@ -126,6 +127,8 @@ angular.mock.$Browser = function() {
throw Error('No deferred tasks with delay up to ' + delay + 'ms to be flushed!')
}
}
+
+ self.defer.now = now;
};
/**
diff --git a/test/ngMock/angular-mocksSpec.js b/test/ngMock/angular-mocksSpec.js
index 88e1876f..67fd13a1 100644
--- a/test/ngMock/angular-mocksSpec.js
+++ b/test/ngMock/angular-mocksSpec.js
@@ -404,7 +404,7 @@ describe('ngMock', function() {
expect(function() {$timeout.flush(100);}).toThrow();
expect(log).toEqual(['t1']);
- $timeout.flush(900);
+ $timeout.flush(1000);
expect(log).toEqual(['t1', 't2']);
expect(function() {$timeout.flush();}).toThrow();
});
@@ -425,6 +425,21 @@ describe('ngMock', function() {
});
+ it('should not update the current time if an exception is thrown during a flush', function() {
+ $timeout(log.fn('t1'), 100);
+ $timeout(log.fn('t2'), 101);
+
+ expect(function() { $timeout.flush(90); }).toThrow();
+ expect(function() { $timeout.flush(90); }).toThrow();
+
+ $timeout.flush(100);
+ expect(log).toEqual(['t1']);
+
+ $timeout.flush(1);
+ expect(log).toEqual(['t1', 't2']);
+ });
+
+
describe('verifyNoPendingTasks', function() {
it('should throw an exception when not flushed', function() {