| OLD | NEW |
| 1 library ng_class_spec; | 1 library ng_class_spec; |
| 2 | 2 |
| 3 import '../_specs.dart'; | 3 import '../_specs.dart'; |
| 4 | 4 |
| 5 main() { | 5 main() { |
| 6 describe('ngClass', () { | 6 describe('ngClass', () { |
| 7 TestBed _; | 7 TestBed _; |
| 8 | 8 |
| 9 beforeEach(inject((TestBed tb) => _ = tb)); | 9 beforeEach(inject((TestBed tb) => _ = tb)); |
| 10 | 10 |
| 11 it('should add new and remove old classes dynamically', () { | 11 it('should add new and remove old classes dynamically', () { |
| 12 var element = _.compile('<div class="existing" ng-class="dynClass"></div>'
); | 12 var element = _.compile('<div class="existing" ng-class="dynClass"></div>'
); |
| 13 _.rootScope.dynClass = 'A'; | 13 _.rootScope.context['dynClass'] = 'A'; |
| 14 _.rootScope.$digest(); | 14 _.rootScope.apply(); |
| 15 expect(element.classes.contains('existing')).toBe(true); | 15 expect(element.classes.contains('existing')).toBe(true); |
| 16 expect(element.classes.contains('A')).toBe(true); | 16 expect(element.classes.contains('A')).toBe(true); |
| 17 | 17 |
| 18 _.rootScope.dynClass = 'B'; | 18 _.rootScope.context['dynClass'] = 'B'; |
| 19 _.rootScope.$digest(); | 19 _.rootScope.apply(); |
| 20 expect(element.classes.contains('existing')).toBe(true); | 20 expect(element.classes.contains('existing')).toBe(true); |
| 21 expect(element.classes.contains('A')).toBe(false); | 21 expect(element.classes.contains('A')).toBe(false); |
| 22 expect(element.classes.contains('B')).toBe(true); | 22 expect(element.classes.contains('B')).toBe(true); |
| 23 | 23 |
| 24 _.rootScope.dynClass = null; | 24 _.rootScope.context['dynClass'] = null; |
| 25 _.rootScope.$digest(); | 25 _.rootScope.apply(); |
| 26 expect(element.classes.contains('existing')).toBe(true); | 26 expect(element.classes.contains('existing')).toBe(true); |
| 27 expect(element.classes.contains('A')).toBe(false); | 27 expect(element.classes.contains('A')).toBe(false); |
| 28 expect(element.classes.contains('B')).toBe(false); | 28 expect(element.classes.contains('B')).toBe(false); |
| 29 }); | 29 }); |
| 30 | 30 |
| 31 | 31 |
| 32 it('should support adding multiple classes via an array', () { | 32 it('should support adding multiple classes via an array', () { |
| 33 var element = _.compile('<div class="existing" ng-class="[\'A\', \'B\']"><
/div>'); | 33 _.rootScope.context['a'] = 'a'; |
| 34 _.rootScope.$digest(); | 34 _.rootScope.context['b'] = ''; |
| 35 _.rootScope.context['c'] = null; |
| 36 var element = _.compile('<div class="existing" ng-class="[\'literalA\', a,
b, c]"></div>'); |
| 37 _.rootScope.apply(); |
| 35 expect(element.classes.contains('existing')).toBeTruthy(); | 38 expect(element.classes.contains('existing')).toBeTruthy(); |
| 36 expect(element.classes.contains('A')).toBeTruthy(); | 39 expect(element.classes.contains('a')).toBeTruthy(); |
| 37 expect(element.classes.contains('B')).toBeTruthy(); | 40 expect(element.classes.contains('b')).toBeFalsy(); |
| 41 expect(element.classes.contains('c')).toBeFalsy(); |
| 42 expect(element.classes.contains('null')).toBeFalsy(); |
| 43 _.rootScope.context['a'] = null; |
| 44 _.rootScope.context['b'] = 'b'; |
| 45 _.rootScope.context['c'] = 'c'; |
| 46 _.rootScope.apply(); |
| 47 expect(element.classes.contains('a')).toBeFalsy(); |
| 48 expect(element.classes.contains('b')).toBeTruthy(); |
| 49 expect(element.classes.contains('c')).toBeTruthy(); |
| 38 }); | 50 }); |
| 39 | 51 |
| 40 | 52 |
| 41 it('should support adding multiple classes conditionally via a map of class
names to boolean' + | 53 it('should support adding multiple classes conditionally via a map of class
names to boolean' + |
| 42 'expressions', () { | 54 'expressions', () { |
| 43 var element = _.compile( | 55 var element = _.compile( |
| 44 '<div class="existing" ' + | 56 '<div class="existing" ' + |
| 45 'ng-class="{A: conditionA, B: conditionB(), AnotB: conditionA&&!co
nditionB()}">' + | 57 'ng-class="{A: conditionA, B: conditionB(), AnotB: conditionA&&!co
nditionB()}">' + |
| 46 '</div>'); | 58 '</div>'); |
| 47 _.rootScope.conditionA = true; | 59 _.rootScope.context['conditionA'] = true; |
| 48 _.rootScope.conditionB = () { return false; }; | 60 _.rootScope.context['conditionB'] = () { return false; }; |
| 49 _.rootScope.$digest(); | 61 _.rootScope.apply(); |
| 50 expect(element.classes.contains('existing')).toBeTruthy(); | 62 expect(element.classes.contains('existing')).toBeTruthy(); |
| 51 expect(element.classes.contains('A')).toBeTruthy(); | 63 expect(element.classes.contains('A')).toBeTruthy(); |
| 52 expect(element.classes.contains('B')).toBeFalsy(); | 64 expect(element.classes.contains('B')).toBeFalsy(); |
| 53 expect(element.classes.contains('AnotB')).toBeTruthy(); | 65 expect(element.classes.contains('AnotB')).toBeTruthy(); |
| 54 | 66 |
| 55 _.rootScope.conditionB = () { return true; }; | 67 _.rootScope.context['conditionB'] = () { return true; }; |
| 56 _.rootScope.$digest(); | 68 _.rootScope.apply(); |
| 57 expect(element.classes.contains('existing')).toBeTruthy(); | 69 expect(element.classes.contains('existing')).toBeTruthy(); |
| 58 expect(element.classes.contains('A')).toBeTruthy(); | 70 expect(element.classes.contains('A')).toBeTruthy(); |
| 59 expect(element.classes.contains('B')).toBeTruthy(); | 71 expect(element.classes.contains('B')).toBeTruthy(); |
| 60 expect(element.classes.contains('AnotB')).toBeFalsy(); | 72 expect(element.classes.contains('AnotB')).toBeFalsy(); |
| 61 }); | 73 }); |
| 62 | 74 |
| 63 | 75 |
| 64 it('should remove classes when the referenced object is the same but its pro
perty is changed', | 76 it('should remove classes when the referenced object is the same but its pro
perty is changed', |
| 65 () { | 77 () { |
| 66 var element = _.compile('<div ng-class="classes"></div>'); | 78 var element = _.compile('<div ng-class="classes"></div>'); |
| 67 _.rootScope.classes = { 'A': true, 'B': true }; | 79 _.rootScope.context['classes'] = { 'A': true, 'B': true }; |
| 68 _.rootScope.$digest(); | 80 _.rootScope.apply(); |
| 69 expect(element.classes.contains('A')).toBeTruthy(); | 81 expect(element.classes.contains('A')).toBeTruthy(); |
| 70 expect(element.classes.contains('B')).toBeTruthy(); | 82 expect(element.classes.contains('B')).toBeTruthy(); |
| 71 _.rootScope.classes['A'] = false; | 83 _.rootScope.context['classes']['A'] = false; |
| 72 _.rootScope.$digest(); | 84 _.rootScope.apply(); |
| 73 expect(element.classes.contains('A')).toBeFalsy(); | 85 expect(element.classes.contains('A')).toBeFalsy(); |
| 74 expect(element.classes.contains('B')).toBeTruthy(); | 86 expect(element.classes.contains('B')).toBeTruthy(); |
| 75 }); | 87 }); |
| 76 | 88 |
| 77 it('should support adding multiple classes via a space delimited string', ()
{ | 89 it('should support adding multiple classes via a space delimited string', ()
{ |
| 78 var element = _.compile('<div class="existing" ng-class="\'A B\'"></div>')
; | 90 var element = _.compile('<div class="existing" ng-class="\'A B\'"></div>')
; |
| 79 _.rootScope.$digest(); | 91 _.rootScope.apply(); |
| 80 expect(element.classes.contains('existing')).toBeTruthy(); | 92 expect(element.classes.contains('existing')).toBeTruthy(); |
| 81 expect(element.classes.contains('A')).toBeTruthy(); | 93 expect(element.classes.contains('A')).toBeTruthy(); |
| 82 expect(element.classes.contains('B')).toBeTruthy(); | 94 expect(element.classes.contains('B')).toBeTruthy(); |
| 83 }); | 95 }); |
| 84 | 96 |
| 85 | 97 |
| 86 it('should preserve class added post compilation with pre-existing classes',
() { | 98 it('should preserve class added post compilation with pre-existing classes',
() { |
| 87 var element = _.compile('<div class="existing" ng-class="dynClass"></div>'
); | 99 var element = _.compile('<div class="existing" ng-class="dynClass"></div>'
); |
| 88 _.rootScope.dynClass = 'A'; | 100 _.rootScope.context['dynClass'] = 'A'; |
| 89 _.rootScope.$digest(); | 101 _.rootScope.apply(); |
| 90 expect(element.classes.contains('existing')).toBe(true); | 102 expect(element.classes.contains('existing')).toBe(true); |
| 91 | 103 |
| 92 // add extra class, change model and eval | 104 // add extra class, change model and eval |
| 93 element.classes.add('newClass'); | 105 element.classes.add('newClass'); |
| 94 _.rootScope.dynClass = 'B'; | 106 _.rootScope.context['dynClass'] = 'B'; |
| 95 _.rootScope.$digest(); | 107 _.rootScope.apply(); |
| 96 | 108 |
| 97 expect(element.classes.contains('existing')).toBe(true); | 109 expect(element.classes.contains('existing')).toBe(true); |
| 98 expect(element.classes.contains('B')).toBe(true); | 110 expect(element.classes.contains('B')).toBe(true); |
| 99 expect(element.classes.contains('newClass')).toBe(true); | 111 expect(element.classes.contains('newClass')).toBe(true); |
| 100 }); | 112 }); |
| 101 | 113 |
| 102 | 114 |
| 103 it('should preserve class added post compilation without pre-existing classe
s"', () { | 115 it('should preserve class added post compilation without pre-existing classe
s"', () { |
| 104 var element = _.compile('<div ng-class="dynClass"></div>'); | 116 var element = _.compile('<div ng-class="dynClass"></div>'); |
| 105 _.rootScope.dynClass = 'A'; | 117 _.rootScope.context['dynClass'] = 'A'; |
| 106 _.rootScope.$digest(); | 118 _.rootScope.apply(); |
| 107 expect(element.classes.contains('A')).toBe(true); | 119 expect(element.classes.contains('A')).toBe(true); |
| 108 | 120 |
| 109 // add extra class, change model and eval | 121 // add extra class, change model and eval |
| 110 element.classes.add('newClass'); | 122 element.classes.add('newClass'); |
| 111 _.rootScope.dynClass = 'B'; | 123 _.rootScope.context['dynClass'] = 'B'; |
| 112 _.rootScope.$digest(); | 124 _.rootScope.apply(); |
| 113 | 125 |
| 114 expect(element.classes.contains('B')).toBe(true); | 126 expect(element.classes.contains('B')).toBe(true); |
| 115 expect(element.classes.contains('newClass')).toBe(true); | 127 expect(element.classes.contains('newClass')).toBe(true); |
| 116 }); | 128 }); |
| 117 | 129 |
| 118 | 130 |
| 119 it('should preserve other classes with similar name"', () { | 131 it('should preserve other classes with similar name"', () { |
| 120 var element = _.compile('<div class="ui-panel ui-selected" ng-class="dynCl
s"></div>'); | 132 var element = _.compile('<div class="ui-panel ui-selected" ng-class="dynCl
s"></div>'); |
| 121 _.rootScope.dynCls = 'panel'; | 133 _.rootScope.context['dynCls'] = 'panel'; |
| 122 _.rootScope.$digest(); | 134 _.rootScope.apply(); |
| 123 _.rootScope.dynCls = 'foo'; | 135 _.rootScope.context['dynCls'] = 'foo'; |
| 124 _.rootScope.$digest(); | 136 _.rootScope.apply(); |
| 125 expect(element.className).toEqual('ui-panel ui-selected foo'); | 137 expect(element.className).toEqual('ui-panel ui-selected foo'); |
| 126 }); | 138 }); |
| 127 | 139 |
| 128 | 140 |
| 129 it('should not add duplicate classes', () { | 141 it('should not add duplicate classes', () { |
| 130 var element = _.compile('<div class="panel bar" ng-class="dynCls"></div>')
; | 142 var element = _.compile('<div class="panel bar" ng-class="dynCls"></div>')
; |
| 131 _.rootScope.dynCls = 'panel'; | 143 _.rootScope.context['dynCls'] = 'panel'; |
| 132 _.rootScope.$digest(); | 144 _.rootScope.apply(); |
| 133 expect(element.className).toEqual('panel bar'); | 145 expect(element.className).toEqual('panel bar'); |
| 134 }); | 146 }); |
| 135 | 147 |
| 136 | 148 |
| 137 it('should remove classes even if it was specified via class attribute', ()
{ | 149 it('should remove classes even if it was specified via class attribute', ()
{ |
| 138 var element = _.compile('<div class="panel bar" ng-class="dynCls"></div>')
; | 150 var element = _.compile('<div class="panel bar" ng-class="dynCls"></div>')
; |
| 139 _.rootScope.dynCls = 'panel'; | 151 _.rootScope.context['dynCls'] = 'panel'; |
| 140 _.rootScope.$digest(); | 152 _.rootScope.apply(); |
| 141 _.rootScope.dynCls = 'window'; | 153 _.rootScope.context['dynCls'] = 'window'; |
| 142 _.rootScope.$digest(); | 154 _.rootScope.apply(); |
| 143 expect(element.className).toEqual('bar window'); | 155 expect(element.className).toEqual('bar window'); |
| 144 }); | 156 }); |
| 145 | 157 |
| 146 | 158 |
| 147 it('should remove classes even if they were added by another code', () { | 159 it('should remove classes even if they were added by another code', () { |
| 148 var element = _.compile('<div ng-class="dynCls"></div>'); | 160 var element = _.compile('<div ng-class="dynCls"></div>'); |
| 149 _.rootScope.dynCls = 'foo'; | 161 _.rootScope.context['dynCls'] = 'foo'; |
| 150 _.rootScope.$digest(); | 162 _.rootScope.apply(); |
| 151 element.classes.add('foo'); | 163 element.classes.add('foo'); |
| 152 _.rootScope.dynCls = ''; | 164 _.rootScope.context['dynCls'] = ''; |
| 153 _.rootScope.$digest(); | 165 _.rootScope.apply(); |
| 154 }); | 166 }); |
| 155 | 167 |
| 156 | 168 |
| 157 it('should ngClass odd/even', () { | 169 it('should ngClass odd/even', () { |
| 158 var element = _.compile('<ul><li ng-repeat="i in [0,1]" class="existing" n
g-class-odd="\'odd\'" ng-class-even="\'even\'"></li><ul>'); | 170 var element = _.compile('<ul><li ng-repeat="i in [0,1]" class="existing" n
g-class-odd="\'odd\'" ng-class-even="\'even\'"></li><ul>'); |
| 159 _.rootScope.$digest(); | 171 _.rootScope.apply(); |
| 160 var e1 = element.nodes[1]; | 172 var e1 = element.nodes[1]; |
| 161 var e2 = element.nodes[2]; | 173 var e2 = element.nodes[2]; |
| 162 expect(e1.classes.contains('existing')).toBeTruthy(); | 174 expect(e1.classes.contains('existing')).toBeTruthy(); |
| 163 expect(e1.classes.contains('odd')).toBeTruthy(); | 175 expect(e1.classes.contains('odd')).toBeTruthy(); |
| 164 expect(e2.classes.contains('existing')).toBeTruthy(); | 176 expect(e2.classes.contains('existing')).toBeTruthy(); |
| 165 expect(e2.classes.contains('even')).toBeTruthy(); | 177 expect(e2.classes.contains('even')).toBeTruthy(); |
| 166 }); | 178 }); |
| 167 | 179 |
| 168 | 180 |
| 169 it('should allow both ngClass and ngClassOdd/Even on the same element', () { | 181 it('should allow both ngClass and ngClassOdd/Even on the same element', () { |
| 170 var element = _.compile('<ul>' + | 182 var element = _.compile('<ul>' + |
| 171 '<li ng-repeat="i in [0,1]" ng-class="\'plainClass\'" ' + | 183 '<li ng-repeat="i in [0,1]" ng-class="\'plainClass\'" ' + |
| 172 'ng-class-odd="\'odd\'" ng-class-even="\'even\'">{{\$index}}</li>' + | 184 'ng-class-odd="\'odd\'" ng-class-even="\'even\'">{{\$index}}</li>' + |
| 173 '<ul>'); | 185 '<ul>'); |
| 174 _.rootScope.$digest(); | 186 _.rootScope.apply(); |
| 175 var e1 = element.nodes[1]; | 187 var e1 = element.nodes[1]; |
| 176 var e2 = element.nodes[2]; | 188 var e2 = element.nodes[2]; |
| 177 | 189 |
| 178 expect(e1.classes.contains('plainClass')).toBeTruthy(); | 190 expect(e1.classes.contains('plainClass')).toBeTruthy(); |
| 179 expect(e1.classes.contains('odd')).toBeTruthy(); | 191 expect(e1.classes.contains('odd')).toBeTruthy(); |
| 180 expect(e1.classes.contains('even')).toBeFalsy(); | 192 expect(e1.classes.contains('even')).toBeFalsy(); |
| 181 expect(e2.classes.contains('plainClass')).toBeTruthy(); | 193 expect(e2.classes.contains('plainClass')).toBeTruthy(); |
| 182 expect(e2.classes.contains('even')).toBeTruthy(); | 194 expect(e2.classes.contains('even')).toBeTruthy(); |
| 183 expect(e2.classes.contains('odd')).toBeFalsy(); | 195 expect(e2.classes.contains('odd')).toBeFalsy(); |
| 184 }); | 196 }); |
| 185 | 197 |
| 186 it('should allow both ngClass and ngClassOdd/Even with multiple classes', ()
{ | 198 it('should allow both ngClass and ngClassOdd/Even with multiple classes', ()
{ |
| 187 var element = _.compile('<ul>' + | 199 var element = _.compile('<ul>' + |
| 188 '<li ng-repeat="i in [0,1]" ng-class="[\'A\', \'B\']" ' + | 200 '<li ng-repeat="i in [0,1]" ng-class="[\'A\', \'B\']" ' + |
| 189 'ng-class-odd="[\'C\', \'D\']" ng-class-even="[\'E\', \'F\']"></li>' + | 201 'ng-class-odd="[\'C\', \'D\']" ng-class-even="[\'E\', \'F\']"></li>' + |
| 190 '<ul>'); | 202 '<ul>'); |
| 191 _.rootScope.$apply(); | 203 _.rootScope.apply(); |
| 192 var e1 = element.nodes[1]; | 204 var e1 = element.nodes[1]; |
| 193 var e2 = element.nodes[2]; | 205 var e2 = element.nodes[2]; |
| 194 | 206 |
| 195 expect(e1.classes.contains('A')).toBeTruthy(); | 207 expect(e1.classes.contains('A')).toBeTruthy(); |
| 196 expect(e1.classes.contains('B')).toBeTruthy(); | 208 expect(e1.classes.contains('B')).toBeTruthy(); |
| 197 expect(e1.classes.contains('C')).toBeTruthy(); | 209 expect(e1.classes.contains('C')).toBeTruthy(); |
| 198 expect(e1.classes.contains('D')).toBeTruthy(); | 210 expect(e1.classes.contains('D')).toBeTruthy(); |
| 199 expect(e1.classes.contains('E')).toBeFalsy(); | 211 expect(e1.classes.contains('E')).toBeFalsy(); |
| 200 expect(e1.classes.contains('F')).toBeFalsy(); | 212 expect(e1.classes.contains('F')).toBeFalsy(); |
| 201 | 213 |
| 202 expect(e2.classes.contains('A')).toBeTruthy(); | 214 expect(e2.classes.contains('A')).toBeTruthy(); |
| 203 expect(e2.classes.contains('B')).toBeTruthy(); | 215 expect(e2.classes.contains('B')).toBeTruthy(); |
| 204 expect(e2.classes.contains('E')).toBeTruthy(); | 216 expect(e2.classes.contains('E')).toBeTruthy(); |
| 205 expect(e2.classes.contains('F')).toBeTruthy(); | 217 expect(e2.classes.contains('F')).toBeTruthy(); |
| 206 expect(e2.classes.contains('C')).toBeFalsy(); | 218 expect(e2.classes.contains('C')).toBeFalsy(); |
| 207 expect(e2.classes.contains('D')).toBeFalsy(); | 219 expect(e2.classes.contains('D')).toBeFalsy(); |
| 208 }); | 220 }); |
| 209 | 221 |
| 210 | 222 |
| 211 it('should reapply ngClass when interpolated class attribute changes', () { | 223 it('should reapply ngClass when interpolated class attribute changes', () { |
| 212 var element = _.compile('<div class="one {{cls}} three" ng-class="{four: f
our}"></div>'); | 224 var element = _.compile('<div class="one {{cls}} three" ng-class="{four: f
our}"></div>'); |
| 213 | 225 |
| 214 _.rootScope.$apply(() { | 226 _.rootScope.apply(() { |
| 215 _.rootScope.cls = "two"; | 227 _.rootScope.context['cls'] = "two"; |
| 216 _.rootScope.four = true; | 228 _.rootScope.context['four'] = true; |
| 217 }); | 229 }); |
| 218 expect(element).toHaveClass('one'); | 230 expect(element).toHaveClass('one'); |
| 219 expect(element).toHaveClass('two'); // interpolated | 231 expect(element).toHaveClass('two'); // interpolated |
| 220 expect(element).toHaveClass('three'); | 232 expect(element).toHaveClass('three'); |
| 221 expect(element).toHaveClass('four'); | 233 expect(element).toHaveClass('four'); |
| 222 | 234 |
| 223 _.rootScope.$apply(() { | 235 _.rootScope.apply(() { |
| 224 _.rootScope.cls = "too"; | 236 _.rootScope.context['cls'] = "too"; |
| 225 }); | 237 }); |
| 226 | 238 |
| 227 expect(element).toHaveClass('one'); | 239 expect(element).toHaveClass('one'); |
| 228 expect(element).toHaveClass('too'); // interpolated | 240 expect(element).toHaveClass('too'); // interpolated |
| 229 expect(element).toHaveClass('three'); | 241 expect(element).toHaveClass('three'); |
| 230 expect(element).toHaveClass('four'); // should still be there | 242 expect(element).toHaveClass('four'); // should still be there |
| 231 expect(element.classes.contains('two')).toBeFalsy(); | 243 expect(element.classes.contains('two')).toBeFalsy(); |
| 232 | 244 |
| 233 _.rootScope.$apply(() { | 245 _.rootScope.apply(() { |
| 234 _.rootScope.cls = "to"; | 246 _.rootScope.context['cls'] = "to"; |
| 235 }); | 247 }); |
| 236 | 248 |
| 237 expect(element).toHaveClass('one'); | 249 expect(element).toHaveClass('one'); |
| 238 expect(element).toHaveClass('to'); // interpolated | 250 expect(element).toHaveClass('to'); // interpolated |
| 239 expect(element).toHaveClass('three'); | 251 expect(element).toHaveClass('three'); |
| 240 expect(element).toHaveClass('four'); // should still be there | 252 expect(element).toHaveClass('four'); // should still be there |
| 241 expect(element.classes.contains('two')).toBeFalsy(); | 253 expect(element.classes.contains('two')).toBeFalsy(); |
| 242 expect(element.classes.contains('too')).toBeFalsy(); | 254 expect(element.classes.contains('too')).toBeFalsy(); |
| 243 }); | 255 }); |
| 244 | 256 |
| 245 | 257 |
| 246 it('should not mess up class value due to observing an interpolated class at
tribute', () { | 258 it('should not mess up class value due to observing an interpolated class at
tribute', () { |
| 247 _.rootScope.foo = true; | 259 _.rootScope.context['foo'] = true; |
| 248 _.rootScope.$watch("anything", () { | 260 _.rootScope.watch("anything", (_0, _1) { |
| 249 _.rootScope.foo = false; | 261 _.rootScope.context['foo'] = false; |
| 250 }); | 262 }); |
| 251 var element = _.compile('<div ng-class="{foo:foo}"></div>'); | 263 var element = _.compile('<div ng-class="{foo:foo}"></div>'); |
| 252 _.rootScope.$digest(); | 264 _.rootScope.apply(); |
| 253 expect(element.classes.contains('foo')).toBe(false); | 265 expect(element.classes.contains('foo')).toBe(false); |
| 254 }); | 266 }); |
| 255 | 267 |
| 256 | 268 |
| 257 it('should update ngClassOdd/Even when model is changed by filtering', () { | 269 it('should update ngClassOdd/Even when model is changed by filtering', () { |
| 258 var element = _.compile('<ul>' + | 270 var element = _.compile('<ul>' + |
| 259 '<li ng-repeat="i in items" ' + | 271 '<li ng-repeat="i in items" ' + |
| 260 'ng-class-odd="\'odd\'" ng-class-even="\'even\'"></li>' + | 272 'ng-class-odd="\'odd\'" ng-class-even="\'even\'"></li>' + |
| 261 '<ul>'); | 273 '<ul>'); |
| 262 _.rootScope.items = ['a','b','c']; | 274 _.rootScope.context['items'] = ['a','b','c']; |
| 263 _.rootScope.$digest(); | 275 _.rootScope.apply(); |
| 264 | 276 |
| 265 _.rootScope.items = ['a','b']; | 277 _.rootScope.context['items'] = ['a','b']; |
| 266 _.rootScope.$digest(); | 278 _.rootScope.apply(); |
| 267 | 279 |
| 268 var e1 = element.nodes[1]; | 280 var e1 = element.nodes[1]; |
| 269 var e2 = element.nodes[2]; | 281 var e2 = element.nodes[2]; |
| 270 | 282 |
| 271 expect(e1.classes.contains('odd')).toBeTruthy(); | 283 expect(e1.classes.contains('odd')).toBeTruthy(); |
| 272 expect(e1.classes.contains('even')).toBeFalsy(); | 284 expect(e1.classes.contains('even')).toBeFalsy(); |
| 273 | 285 |
| 274 expect(e2.classes.contains('even')).toBeTruthy(); | 286 expect(e2.classes.contains('even')).toBeTruthy(); |
| 275 expect(e2.classes.contains('odd')).toBeFalsy(); | 287 expect(e2.classes.contains('odd')).toBeFalsy(); |
| 276 }); | 288 }); |
| 277 | 289 |
| 278 | 290 |
| 279 it('should update ngClassOdd/Even when model is changed by sorting', () { | 291 it('should update ngClassOdd/Even when model is changed by sorting', () { |
| 280 var element = _.compile('<ul>' + | 292 var element = _.compile('<ul>' + |
| 281 '<li ng-repeat="i in items" ' + | 293 '<li ng-repeat="i in items" ' + |
| 282 'ng-class-odd="\'odd\'" ng-class-even="\'even\'">i</li>' + | 294 'ng-class-odd="\'odd\'" ng-class-even="\'even\'">i</li>' + |
| 283 '<ul>'); | 295 '<ul>'); |
| 284 _.rootScope.items = ['a','b']; | 296 _.rootScope.context['items'] = ['a','b']; |
| 285 _.rootScope.$digest(); | 297 _.rootScope.apply(); |
| 286 | 298 |
| 287 _.rootScope.items = ['b','a']; | 299 _.rootScope.context['items'] = ['b','a']; |
| 288 _.rootScope.$digest(); | 300 _.rootScope.apply(); |
| 289 | 301 |
| 290 var e1 = element.nodes[1]; | 302 var e1 = element.nodes[1]; |
| 291 var e2 = element.nodes[2]; | 303 var e2 = element.nodes[2]; |
| 292 | 304 |
| 293 expect(e1.classes.contains('odd')).toBeTruthy(); | 305 expect(e1.classes.contains('odd')).toBeTruthy(); |
| 294 expect(e1.classes.contains('even')).toBeFalsy(); | 306 expect(e1.classes.contains('even')).toBeFalsy(); |
| 295 | 307 |
| 296 expect(e2.classes.contains('even')).toBeTruthy(); | 308 expect(e2.classes.contains('even')).toBeTruthy(); |
| 297 expect(e2.classes.contains('odd')).toBeFalsy(); | 309 expect(e2.classes.contains('odd')).toBeFalsy(); |
| 298 }); | 310 }); |
| 299 }); | 311 }); |
| 300 } | 312 } |
| OLD | NEW |