@@ -461,6 +461,47 @@ describe('ngClass', function() {
461461 expect ( e2 . hasClass ( 'odd' ) ) . toBeFalsy ( ) ;
462462 } ) ) ;
463463
464+
465+ it ( 'should add/remove the correct classes when the expression and `$index` change simultaneously' ,
466+ inject ( function ( $compile , $rootScope ) {
467+ element = $compile (
468+ '<div>' +
469+ '<div ng-class-odd="foo"></div>' +
470+ '<div ng-class-even="foo"></div>' +
471+ '</div>' ) ( $rootScope ) ;
472+ var odd = element . children ( ) . eq ( 0 ) ;
473+ var even = element . children ( ) . eq ( 1 ) ;
474+
475+ $rootScope . $apply ( '$index = 0; foo = "class1"' ) ;
476+
477+ expect ( odd ) . toHaveClass ( 'class1' ) ;
478+ expect ( odd ) . not . toHaveClass ( 'class2' ) ;
479+ expect ( even ) . not . toHaveClass ( 'class1' ) ;
480+ expect ( even ) . not . toHaveClass ( 'class2' ) ;
481+
482+ $rootScope . $apply ( '$index = 1; foo = "class2"' ) ;
483+
484+ expect ( odd ) . not . toHaveClass ( 'class1' ) ;
485+ expect ( odd ) . not . toHaveClass ( 'class2' ) ;
486+ expect ( even ) . not . toHaveClass ( 'class1' ) ;
487+ expect ( even ) . toHaveClass ( 'class2' ) ;
488+
489+ $rootScope . $apply ( 'foo = "class1"' ) ;
490+
491+ expect ( odd ) . not . toHaveClass ( 'class1' ) ;
492+ expect ( odd ) . not . toHaveClass ( 'class2' ) ;
493+ expect ( even ) . toHaveClass ( 'class1' ) ;
494+ expect ( even ) . not . toHaveClass ( 'class2' ) ;
495+
496+ $rootScope . $apply ( '$index = 2' ) ;
497+
498+ expect ( odd ) . toHaveClass ( 'class1' ) ;
499+ expect ( odd ) . not . toHaveClass ( 'class2' ) ;
500+ expect ( even ) . not . toHaveClass ( 'class1' ) ;
501+ expect ( even ) . not . toHaveClass ( 'class2' ) ;
502+ } )
503+ ) ;
504+
464505 it ( 'should support mixed array/object variable with a mutating object' ,
465506 inject ( function ( $rootScope , $compile ) {
466507 element = $compile ( '<div ng-class="classVar"></div>' ) ( $rootScope ) ;
0 commit comments