| 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 |