Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(158)

Side by Side Diff: third_party/pkg/angular/test/directive/ng_class_spec.dart

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

Powered by Google App Engine
This is Rietveld 408576698