diff options
Diffstat (limited to 'test/ng')
| -rw-r--r-- | test/ng/rootScopeSpec.js | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/test/ng/rootScopeSpec.js b/test/ng/rootScopeSpec.js index e47111e2..f9cf9412 100644 --- a/test/ng/rootScopeSpec.js +++ b/test/ng/rootScopeSpec.js @@ -258,6 +258,31 @@ describe('Scope', function() { })); + it('should prevent infinite loop when creating and resolving a promise in a watched expression', function() { + module(function($rootScopeProvider) { + $rootScopeProvider.digestTtl(10); + }); + inject(function($rootScope, $q) { + var d = $q.defer(); + + d.resolve('Hello, world.'); + $rootScope.$watch(function () { + var $d2 = $q.defer(); + $d2.resolve('Goodbye.'); + $d2.promise.then(function () { }); + return d.promise; + }, function () { return 0; }); + + expect(function() { + $rootScope.$digest(); + }).toThrowMinErr('$rootScope', 'infdig', '10 $digest() iterations reached. Aborting!\n'+ + 'Watchers fired in the last 5 iterations: []'); + + expect($rootScope.$$phase).toBeNull(); + }); + }); + + it('should not fire upon $watch registration on initial $digest', inject(function($rootScope) { var log = ''; $rootScope.a = 1; |
