diff options
| author | Igor Minar | 2013-08-27 17:20:30 -0700 |
|---|---|---|
| committer | Igor Minar | 2013-08-27 17:23:36 -0700 |
| commit | 4114f9c21bec5a396e59954dfc42d2c96527ac3d (patch) | |
| tree | feae4ef9b6f1b32cb2d5558f3a86f98bbc6382bc | |
| parent | 70b44ad32a79e0746e19a74bde35f49c79f89942 (diff) | |
| download | angular.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.js | 13 | ||||
| -rw-r--r-- | test/ng/timeoutSpec.js | 2 | ||||
| -rw-r--r-- | test/ngMock/angular-mocksSpec.js | 84 |
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(); - }); - }); + })); }); |
