aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIgor Minar2013-08-27 17:20:30 -0700
committerIgor Minar2013-08-27 17:23:36 -0700
commit4114f9c21bec5a396e59954dfc42d2c96527ac3d (patch)
treefeae4ef9b6f1b32cb2d5558f3a86f98bbc6382bc
parent70b44ad32a79e0746e19a74bde35f49c79f89942 (diff)
downloadangular.js-4114f9c21bec5a396e59954dfc42d2c96527ac3d.tar.bz2
revert: feat(mocks): make $timeout#flush throw an exception when empty
This reverts commit cbf06a5d64aba537f0e2679a194d3998d8365493. This turned out to be a bad idea because it allow us to fast-forward the wall clock time (see previous commit).
-rw-r--r--src/ngMock/angular-mocks.js13
-rw-r--r--test/ng/timeoutSpec.js2
-rw-r--r--test/ngMock/angular-mocksSpec.js84
3 files changed, 35 insertions, 64 deletions
diff --git a/src/ngMock/angular-mocks.js b/src/ngMock/angular-mocks.js
index 05fdc4ed..125a42a6 100644
--- a/src/ngMock/angular-mocks.js
+++ b/src/ngMock/angular-mocks.js
@@ -104,28 +104,19 @@ angular.mock.$Browser = function() {
* @param {number=} number of milliseconds to flush. See {@link #defer.now}
*/
self.defer.flush = function(delay) {
- var flushedSomething = false;
-
if (angular.isDefined(delay)) {
self.defer.now += delay;
} else {
if (self.deferredFns.length) {
self.defer.now = self.deferredFns[self.deferredFns.length-1].time;
+ } else {
+ throw Error('No deferred tasks to be flushed');
}
}
while (self.deferredFns.length && self.deferredFns[0].time <= self.defer.now) {
- flushedSomething = true;
self.deferredFns.shift().fn();
}
-
- if (!flushedSomething) {
- if (angular.isUndefined(delay)) {
- throw Error('No deferred tasks to be flushed!');
- } else {
- throw Error('No deferred tasks with delay up to ' + delay + 'ms to be flushed!')
- }
- }
};
/**
diff --git a/test/ng/timeoutSpec.js b/test/ng/timeoutSpec.js
index e4a2bc39..832528e9 100644
--- a/test/ng/timeoutSpec.js
+++ b/test/ng/timeoutSpec.js
@@ -14,7 +14,7 @@ describe('$timeout', function() {
$browser.defer.flush();
expect(counter).toBe(1);
- expect(function() {$browser.defer.flush();}).toThrow('No deferred tasks to be flushed!');
+ expect(function() {$browser.defer.flush();}).toThrow('No deferred tasks to be flushed');
expect(counter).toBe(1);
}));
diff --git a/test/ngMock/angular-mocksSpec.js b/test/ngMock/angular-mocksSpec.js
index 88e1876f..13e08a68 100644
--- a/test/ngMock/angular-mocksSpec.js
+++ b/test/ngMock/angular-mocksSpec.js
@@ -319,7 +319,7 @@ describe('ngMock', function() {
browser.defer(logFn('B'), 2);
browser.defer(logFn('C'), 3);
- expect(function() {browser.defer.flush(0);}).toThrow('No deferred tasks with delay up to 0ms to be flushed!');
+ browser.defer.flush(0);
expect(browser.defer.now).toEqual(0);
expect(log).toEqual('');
@@ -333,15 +333,7 @@ describe('ngMock', function() {
});
it('should throw an exception if there is nothing to be flushed', function() {
- expect(function() {browser.defer.flush();}).toThrow('No deferred tasks to be flushed!');
- });
-
- it('should throw an exception if there is nothing to be flushed within the delay provided', function() {
- browser.defer(logFn('A'), 1);
- expect(function() {browser.defer.flush(0);}).toThrow('No deferred tasks with delay up to 0ms to be flushed!');
-
- browser.defer.flush(1);
- expect(log).toEqual('A;');
+ expect(function() {browser.defer.flush();}).toThrow('No deferred tasks to be flushed');
});
});
@@ -372,45 +364,52 @@ describe('ngMock', function() {
describe('$timeout', function() {
- var log, $timeout;
+ it('should expose flush method that will flush the pending queue of tasks', inject(
+ function($timeout) {
+ var logger = [],
+ logFn = function(msg) { return function() { logger.push(msg) }};
- beforeEach(module(provideLog));
+ $timeout(logFn('t1'));
+ $timeout(logFn('t2'), 200);
+ $timeout(logFn('t3'));
+ expect(logger).toEqual([]);
- beforeEach(inject(function(_log_, _$timeout_) {
- log = _log_;
- $timeout = _$timeout_;
+ $timeout.flush();
+ expect(logger).toEqual(['t1', 't3', 't2']);
}));
- it('should expose flush method that will flush the pending queue of tasks', function() {
+ it('should throw an exception when not flushed', inject(function($timeout){
+ $timeout(noop);
+
+ var expectedError = 'Deferred tasks to flush (1): {id: 0, time: 0}';
+ expect(function() {$timeout.verifyNoPendingTasks();}).toThrow(expectedError);
+ }));
- $timeout(log.fn('t1'));
- $timeout(log.fn('t2'), 200);
- $timeout(log.fn('t3'));
- expect(log).toEqual([]);
+ it('should do nothing when all tasks have been flushed', inject(function($timeout) {
+ $timeout(noop);
$timeout.flush();
- expect(log).toEqual(['t1', 't3', 't2']);
- });
+ expect(function() {$timeout.verifyNoPendingTasks();}).not.toThrow();
+ }));
- it('should flush tasks only up to a delay if flush delay is provided', function() {
- $timeout(log.fn('t1'), 100);
+ it('should check against the delay if provided within timeout', inject(function($timeout) {
+ $timeout(noop, 100);
$timeout.flush(100);
- expect(log).toEqual(['t1']);
+ expect(function() {$timeout.verifyNoPendingTasks();}).not.toThrow();
- $timeout(log.fn('t2'), 1000);
- expect(function() {$timeout.flush(100);}).toThrow();
- expect(log).toEqual(['t1']);
+ $timeout(noop, 1000);
+ $timeout.flush(100);
+ expect(function() {$timeout.verifyNoPendingTasks();}).toThrow();
$timeout.flush(900);
- expect(log).toEqual(['t1', 't2']);
- expect(function() {$timeout.flush();}).toThrow();
- });
+ expect(function() {$timeout.verifyNoPendingTasks();}).not.toThrow();
+ }));
- it('should assert against the delay value', function() {
+ it('should assert against the delay value', inject(function($timeout) {
var count = 0;
var iterate = function() {
count++;
@@ -422,26 +421,7 @@ describe('ngMock', function() {
expect(count).toBe(1);
$timeout.flushNext(123);
expect(count).toBe(2);
- });
-
-
- describe('verifyNoPendingTasks', function() {
-
- it('should throw an exception when not flushed', function() {
- $timeout(noop);
-
- var expectedError = 'Deferred tasks to flush (1): {id: 0, time: 0}';
- expect(function() {$timeout.verifyNoPendingTasks();}).toThrow(expectedError);
- });
-
-
- it('should do nothing when all tasks have been flushed', function() {
- $timeout(noop);
-
- $timeout.flush();
- expect(function() {$timeout.verifyNoPendingTasks();}).not.toThrow();
- });
- });
+ }));
});