aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorIgor Minar2013-08-24 14:18:47 -0700
committerIgor Minar2013-08-25 14:46:54 -0700
commitcbf06a5d64aba537f0e2679a194d3998d8365493 (patch)
tree12e1b776021bbba6a96e276e3754582cf11ef6e5 /src
parent92700509c8eb0015d864efdc8a46b421a6256d03 (diff)
downloadangular.js-cbf06a5d64aba537f0e2679a194d3998d8365493.tar.bz2
feat(mocks): make $timeout#flush throw an exception when empty
When calling $timeout.flush with or without a delay an exception should be thrown if there is nothing to be flushed. This prevents tests from flushing stuff unnecessarily. BREAKING CHANGE: calling $timeout.flush(delay) when there is no task to be flushed within the delay throws an exception now. Please adjust the delay or remove the flush call from your tests as the exception is a signed of a programming error.
Diffstat (limited to 'src')
-rw-r--r--src/ngMock/angular-mocks.js13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/ngMock/angular-mocks.js b/src/ngMock/angular-mocks.js
index 125a42a6..05fdc4ed 100644
--- a/src/ngMock/angular-mocks.js
+++ b/src/ngMock/angular-mocks.js
@@ -104,19 +104,28 @@ 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!')
+ }
+ }
};
/**