@@ -177,7 +177,7 @@ describe("directive", function(){
177177
178178
179179 describe ( 'ng:class' , function ( ) {
180- it ( 'should add new and remove old classes dynamically' , function ( ) {
180+ it ( 'should change current class or remove old classes dynamically' , function ( ) {
181181 var scope = compile ( '<div class="existing" ng:class="dynClass"></div>' ) ;
182182 scope . dynClass = 'A' ;
183183 scope . $eval ( ) ;
@@ -204,6 +204,45 @@ describe("directive", function(){
204204 expect ( element . hasClass ( 'A' ) ) . toBeTruthy ( ) ;
205205 expect ( element . hasClass ( 'B' ) ) . toBeTruthy ( ) ;
206206 } ) ;
207+
208+ it ( 'should preserve class added post compilation' , function ( ) {
209+ var scope = compile ( '<div class="existing" ng:class="dynClass"></div>' ) ;
210+ scope . dynClass = 'A' ;
211+ scope . $eval ( ) ;
212+ expect ( element . hasClass ( 'existing' ) ) . toBe ( true ) ;
213+
214+ // add extra class, change model and eval
215+ element . addClass ( 'newClass' ) ;
216+ scope . dynClass = 'B' ;
217+ scope . $eval ( ) ;
218+
219+ expect ( element . hasClass ( 'existing' ) ) . toBe ( true ) ;
220+ expect ( element . hasClass ( 'B' ) ) . toBe ( true ) ;
221+ expect ( element . hasClass ( 'newClass' ) ) . toBe ( true ) ;
222+ } ) ;
223+
224+ it ( 'should preserve class added post compilation even without existing classes"' , function ( ) {
225+ var scope = compile ( '<div ng:class="dynClass"></div>' ) ;
226+ scope . dynClass = 'A' ;
227+ scope . $eval ( ) ;
228+ expect ( element . hasClass ( 'A' ) ) . toBe ( true ) ;
229+
230+ // add extra class, change model and eval
231+ element . addClass ( 'newClass' ) ;
232+ scope . dynClass = 'B' ;
233+ scope . $eval ( ) ;
234+
235+ expect ( element . hasClass ( 'B' ) ) . toBe ( true ) ;
236+ expect ( element . hasClass ( 'newClass' ) ) . toBe ( true ) ;
237+ } ) ;
238+
239+ it ( 'should preserve right classes"' , function ( ) {
240+ var scope = compile ( '<div class="ui-panel ui-selected" ng:class="dynCls"></div>' ) ;
241+ scope . dynCls = 'panel' ;
242+ scope . dynCls = 'foo' ;
243+ scope . $eval ( ) ;
244+ expect ( element . attr ( 'class' ) ) . toBe ( 'ui-panel ui-selected ng-directive foo' ) ;
245+ } ) ;
207246 } ) ;
208247
209248
0 commit comments