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_multi_test; | 5 library polymer_elements.test.iron_selector_multi_test; |
6 | 6 |
7 import 'dart:html'; | 7 import 'dart:html'; |
| 8 import 'package:polymer_interop/polymer_interop.dart'; |
8 import 'package:polymer_elements/iron_selector.dart'; | 9 import 'package:polymer_elements/iron_selector.dart'; |
9 import 'package:test/test.dart'; | 10 import 'package:test/test.dart'; |
10 import 'package:web_components/web_components.dart'; | 11 import 'package:web_components/web_components.dart'; |
11 import 'common.dart'; | 12 import 'common.dart'; |
12 | 13 |
13 main() async { | 14 main() async { |
14 await initWebComponents(); | 15 await initWebComponents(); |
15 | 16 |
16 group('multi', () { | 17 group('multi', () { |
17 IronSelector s; | 18 IronSelector s; |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
74 // tap on already selected item should deselect it | 75 // tap on already selected item should deselect it |
75 s.children[0].dispatchEvent(new CustomEvent('tap', canBubble: true)); | 76 s.children[0].dispatchEvent(new CustomEvent('tap', canBubble: true)); |
76 // check selectedValues | 77 // check selectedValues |
77 expect(s.selectedValues.length, 0); | 78 expect(s.selectedValues.length, 0); |
78 // check class | 79 // check class |
79 expect(s.children[0].classes.contains('iron-selected'), isFalse); | 80 expect(s.children[0].classes.contains('iron-selected'), isFalse); |
80 // check events | 81 // check events |
81 expect(selectEventCounter, 1); | 82 expect(selectEventCounter, 1); |
82 expect(deselectEventCounter, 1); | 83 expect(deselectEventCounter, 1); |
83 }); | 84 }); |
| 85 |
| 86 test('fires selected-values-changed when selection changes', () { |
| 87 var selectedValuesChangedEventCounter = 0; |
| 88 |
| 89 s.on['selected-values-changed'].listen((e) { |
| 90 selectedValuesChangedEventCounter++; |
| 91 }); |
| 92 |
| 93 tap(Polymer.dom(s).children[0]); |
| 94 tap(Polymer.dom(s).children[0]); |
| 95 tap(Polymer.dom(s).children[0]); |
| 96 |
| 97 expect(selectedValuesChangedEventCounter, isNot(0)); |
| 98 }); |
| 99 |
| 100 test('selects from items created by dom-repeat', () async { |
| 101 var selectEventCounter = 0; |
| 102 var firstChild; |
| 103 |
| 104 s = document.querySelector('#repeatedItems'); |
| 105 s.on['iron-select'].first.then((e) { |
| 106 selectEventCounter++; |
| 107 }); |
| 108 |
| 109 // NOTE(cdata): I guess `dom-repeat` doesn't stamp synchronously.. |
| 110 await wait(1); |
| 111 firstChild = Polymer.dom(s).querySelector('div'); |
| 112 tap(firstChild); |
| 113 |
| 114 expect(s.selectedItems[0].text, 'foo'); |
| 115 }); |
84 | 116 |
85 /* test('toggle multi from true to false', () { | 117 /* test('toggle multi from true to false', () { |
86 // set selected | 118 // set selected |
87 s.selected = [0, 2]; | 119 s.selected = [0, 2]; |
88 var first = s.selected[0]; | 120 var first = s.selected[0]; |
89 // set mutli to false, so to make it single-selection | 121 // set mutli to false, so to make it single-selection |
90 s.multi = false; | 122 s.multi = false; |
91 // selected should not be an array | 123 // selected should not be an array |
92 assert.isNotArray(s.selected); | 124 assert.isNotArray(s.selected); |
93 // selected should be the first value from the old array | 125 // selected should be the first value from the old array |
94 expect(s.selected, first); | 126 expect(s.selected, first); |
95 }); */ | 127 }); */ |
96 | 128 |
97 }); | 129 }); |
98 } | 130 } |
OLD | NEW |