@@ -177,7 +177,7 @@ describe("directive", function(){
177
177
178
178
179
179
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 ( ) {
181
181
var scope = compile ( '<div class="existing" ng:class="dynClass"></div>' ) ;
182
182
scope . dynClass = 'A' ;
183
183
scope . $eval ( ) ;
@@ -204,6 +204,45 @@ describe("directive", function(){
204
204
expect ( element . hasClass ( 'A' ) ) . toBeTruthy ( ) ;
205
205
expect ( element . hasClass ( 'B' ) ) . toBeTruthy ( ) ;
206
206
} ) ;
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
+ } ) ;
207
246
} ) ;
208
247
209
248
0 commit comments