diff options
| -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(); -      }); -    }); +    }));    }); | 
