OLD | NEW |
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 @TestOn('browser') | 4 @TestOn('browser') |
5 library polymer_elements.test.iron_selector_template_repeat_test; | 5 library polymer_elements.test.iron_selector_template_repeat_test; |
6 | 6 |
7 import 'dart:async'; | 7 import 'dart:async'; |
8 import 'dart:html'; | 8 import 'dart:html'; |
9 import 'dart:js'; | 9 import 'dart:js'; |
| 10 import 'package:polymer/polymer.dart'; |
10 import 'package:polymer_elements/iron_selector.dart'; | 11 import 'package:polymer_elements/iron_selector.dart'; |
11 import 'package:test/test.dart'; | 12 import 'package:test/test.dart'; |
12 import 'package:web_components/web_components.dart'; | 13 import 'package:web_components/web_components.dart'; |
13 import 'common.dart'; | 14 import 'common.dart'; |
14 | 15 |
15 main() async { | 16 main() async { |
16 await initWebComponents(); | 17 await initWebComponents(); |
17 | 18 |
18 group('dom-repeat', () { | 19 group('dom-repeat', () { |
19 JsObject scope, t; | 20 DomBind scope; |
| 21 DomRepeat t; |
20 IronSelector s; | 22 IronSelector s; |
21 | 23 |
22 setUp(() { | 24 setUp(() { |
23 scope = new JsObject.fromBrowserObject( | 25 scope = document.querySelector('template[is="dom-bind"]'); |
24 document.querySelector('template[is="dom-bind"]')); | 26 s = scope.$['selector']; |
25 s = scope[r'$']['selector']; | 27 t = scope.$['t']; |
26 t = new JsObject.fromBrowserObject(scope[r'$']['t']); | 28 t.items = [ |
27 t['items'] = new JsObject.jsify([ | |
28 {'name': 'item0'}, | 29 {'name': 'item0'}, |
29 {'name': 'item1'}, | 30 {'name': 'item1'}, |
30 {'name': 'item2'}, | 31 {'name': 'item2'}, |
31 {'name': 'item3'} | 32 {'name': 'item3'} |
32 ]); | 33 ]; |
33 }); | 34 }); |
34 | 35 |
35 tearDown(() { | 36 tearDown(() { |
36 t['items'] = new JsObject.jsify([]); | 37 t.items = []; |
37 }); | 38 }); |
38 | 39 |
39 test('supports repeated items', () { | 40 test('supports repeated items', () { |
40 return wait(1).then((_) { | 41 return wait(1).then((_) { |
41 // check items | 42 // check items |
42 expect(s.items.length, 4); | 43 expect(s.items.length, 4); |
43 // check selected | 44 // check selected |
44 expect(s.selected, '1'); | 45 expect(s.selected, '1'); |
45 // check selected item | 46 // check selected item |
46 var item = s.selectedItem; | 47 var item = s.selectedItem; |
47 expect(s.items[1], item); | 48 expect(s.items[1], item); |
48 // check selected class | 49 // check selected class |
49 expect(item.classes.contains('iron-selected'), isTrue); | 50 expect(item.classes.contains('iron-selected'), isTrue); |
50 }); | 51 }); |
51 }); | 52 }); |
52 | 53 |
53 test('update items', () { | 54 test('update items', () { |
54 var done = new Completer(); | 55 var done = new Completer(); |
55 wait(1).then((_) { | 56 wait(1).then((_) { |
56 // check items | 57 // check items |
57 expect(s.items.length, 4); | 58 expect(s.items.length, 4); |
58 // check selected | 59 // check selected |
59 expect(s.selected, '1'); | 60 expect(s.selected, '1'); |
60 // update items | 61 // update items |
61 t['items'] = new JsObject.jsify([{'name': 'foo'}, {'name': 'bar'}]); | 62 t.items = [{'name': 'foo'}, {'name': 'bar'}]; |
62 wait(1).then((_) { | 63 wait(1).then((_) { |
63 // check items | 64 // check items |
64 expect(s.items.length, 2); | 65 expect(s.items.length, 2); |
65 // check selected (should still honor the selected) | 66 // check selected (should still honor the selected) |
66 expect(s.selected, '1'); | 67 expect(s.selected, '1'); |
67 // check selected class | 68 // check selected class |
68 expect(s.querySelector('#bar').classes.contains('iron-selected'), | 69 expect(s.querySelector('#bar').classes.contains('iron-selected'), |
69 isTrue); | 70 isTrue); |
70 done.complete(); | 71 done.complete(); |
71 }); | 72 }); |
72 }); | 73 }); |
73 return done.future; | 74 return done.future; |
74 }); | 75 }); |
75 | 76 |
76 test('set selected to something else', () { | 77 test('set selected to something else', () { |
77 return wait(1).then((_) { | 78 return wait(1).then((_) { |
78 // set selected to something else | 79 // set selected to something else |
79 s.selected = 3; | 80 s.selected = 3; |
80 // check selected item | 81 // check selected item |
81 var item = s.selectedItem; | 82 var item = s.selectedItem; |
82 expect(s.items[3], item); | 83 expect(s.items[3], item); |
83 // check selected class | 84 // check selected class |
84 expect(item.classes.contains('iron-selected'), isTrue); | 85 expect(item.classes.contains('iron-selected'), isTrue); |
85 }); | 86 }); |
86 }); | 87 }); |
87 }); | 88 }); |
88 } | 89 } |
OLD | NEW |