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

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

Issue 180843004: Revert revision 33053 (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 6 years, 9 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(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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698