aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorMisko Hevery2013-05-02 10:47:30 -0400
committerMisko Hevery2013-05-02 15:22:16 -0400
commitfd21c7502f0a25364a810c26ebeecb678e5783c5 (patch)
tree27137cbebe756dbda887690e6fd0f779b443e8e1 /test
parent80341cb9badd952fdc80094df4123629313b4cc4 (diff)
downloadangular.js-fd21c7502f0a25364a810c26ebeecb678e5783c5.tar.bz2
fix(ngAnamite): eval ng-animate expression on each animation
Diffstat (limited to 'test')
-rw-r--r--test/ng/animatorSpec.js25
1 files changed, 22 insertions, 3 deletions
diff --git a/test/ng/animatorSpec.js b/test/ng/animatorSpec.js
index 1b393e91..daab9721 100644
--- a/test/ng/animatorSpec.js
+++ b/test/ng/animatorSpec.js
@@ -336,10 +336,29 @@ describe("$animator", function() {
}));
});
- it("should throw an error when an invalid ng-animate syntax is provided", inject(function($compile, $rootScope) {
+ describe('anmation evaluation', function () {
+ it('should re-evaluate the animation expression on each animation', inject(function($animator, $rootScope) {
+ var parent = jqLite('<div><span></span></div>');
+ var element = parent.find('span');
+
+ $rootScope.animationFn = function () { throw new Error('too early'); };
+ var animate = $animator($rootScope, { ngAnimate: 'animationFn()' });
+ var log = '';
+
+ $rootScope.animationFn = function () { log = 'abc' };
+ animate.enter(element, parent);
+ expect(log).toEqual('abc');
+
+ $rootScope.animationFn = function () { log = 'xyz' };
+ animate.enter(element, parent);
+ expect(log).toEqual('xyz');
+ }));
+ });
+
+ it("should throw an error when an invalid ng-animate syntax is provided", inject(function($animator, $rootScope) {
expect(function() {
- element = $compile('<div ng-repeat="i in is" ng-animate=":"></div>')($rootScope);
- $rootScope.$digest();
+ var animate = $animator($rootScope, { ngAnimate: ':' });
+ animate.enter();
}).toThrow("Syntax Error: Token ':' not a primary expression at column 1 of the expression [:] starting at [:].");
}));
});