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