From eb3efe17bb2a864ed06586225d00d4430f85aea7 Mon Sep 17 00:00:00 2001 From: Jason Bedard Date: Thu, 8 Jun 2017 22:04:30 -0700 Subject: [PATCH] test($parse): add one-time/interceptor tests --- test/ng/parseSpec.js | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/test/ng/parseSpec.js b/test/ng/parseSpec.js index 0af6b7ebcf6f..cfa713d60279 100644 --- a/test/ng/parseSpec.js +++ b/test/ng/parseSpec.js @@ -3340,6 +3340,32 @@ describe('parser', function() { scope.$digest(); expect(called).toBe(true); })); + + it('should not affect when a one-time binding becomes stable', inject(function($parse) { + scope.$watch($parse('::x')); + scope.$watch($parse('::x', identity)); + scope.$watch($parse('::x', function() { return 1; })); //interceptor that returns non-undefined + + scope.$digest(); + expect(scope.$$watchersCount).toBe(3); + + scope.x = 1; + scope.$digest(); + expect(scope.$$watchersCount).toBe(0); + })); + + it('should not affect when a one-time literal binding becomes stable', inject(function($parse) { + scope.$watch($parse('::[x]')); + scope.$watch($parse('::[x]', identity)); + scope.$watch($parse('::[x]', function() { return 1; })); //interceptor that returns non-literal + + scope.$digest(); + expect(scope.$$watchersCount).toBe(3); + + scope.x = 1; + scope.$digest(); + expect(scope.$$watchersCount).toBe(0); + })); }); describe('literals', function() {