From 2428907259fa80ec3b1b4bfd85ea20028a9f4fa5 Mon Sep 17 00:00:00 2001 From: Di Peng Date: Thu, 7 Jul 2011 11:42:02 -0700 Subject: fix(ng:class): preserve classes added post compilation - make sure ng:class preserve classes added after compilation Closes #355 --- test/directivesSpec.js | 41 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) (limited to 'test') diff --git a/test/directivesSpec.js b/test/directivesSpec.js index 713147ad..a640fc50 100644 --- a/test/directivesSpec.js +++ b/test/directivesSpec.js @@ -177,7 +177,7 @@ describe("directive", function(){ describe('ng:class', function() { - it('should add new and remove old classes dynamically', function() { + it('should change current class or remove old classes dynamically', function() { var scope = compile('
'); scope.dynClass = 'A'; scope.$eval(); @@ -204,6 +204,45 @@ describe("directive", function(){ expect(element.hasClass('A')).toBeTruthy(); expect(element.hasClass('B')).toBeTruthy(); }); + + it('should preserve class added post compilation', function() { + var scope = compile(''); + scope.dynClass = 'A'; + scope.$eval(); + expect(element.hasClass('existing')).toBe(true); + + // add extra class, change model and eval + element.addClass('newClass'); + scope.dynClass = 'B'; + scope.$eval(); + + expect(element.hasClass('existing')).toBe(true); + expect(element.hasClass('B')).toBe(true); + expect(element.hasClass('newClass')).toBe(true); + }); + + it('should preserve class added post compilation even without existing classes"', function() { + var scope = compile(''); + scope.dynClass = 'A'; + scope.$eval(); + expect(element.hasClass('A')).toBe(true); + + // add extra class, change model and eval + element.addClass('newClass'); + scope.dynClass = 'B'; + scope.$eval(); + + expect(element.hasClass('B')).toBe(true); + expect(element.hasClass('newClass')).toBe(true); + }); + + it('should preserve right classes"', function() { + var scope = compile(''); + scope.dynCls = 'panel'; + scope.dynCls = 'foo'; + scope.$eval(); + expect(element.attr('class')).toBe('ui-panel ui-selected ng-directive foo'); + }); }); -- cgit v1.2.3