OLD | NEW |
1 @TestOn('browser') | 1 @TestOn('browser') |
2 library polymer_elements.test.iron_overlay_behavior_test; | 2 library polymer_elements.test.iron_overlay_behavior_test; |
3 | 3 |
4 import 'dart:async'; | 4 import 'dart:async'; |
5 import 'dart:convert'; | 5 import 'dart:convert'; |
6 import 'dart:html'; | 6 import 'dart:html'; |
7 import 'dart:js'; | 7 import 'dart:js'; |
8 import 'package:polymer_interop/polymer_interop.dart'; | 8 import 'package:polymer_interop/polymer_interop.dart'; |
9 import 'package:polymer/polymer.dart'; | 9 import 'package:polymer/polymer.dart'; |
10 import 'package:test/test.dart'; | 10 import 'package:test/test.dart'; |
11 import 'package:web_components/web_components.dart'; | 11 import 'package:web_components/web_components.dart'; |
12 import 'common.dart'; | 12 import 'common.dart'; |
13 import 'fixtures/test_overlay.dart'; | 13 import 'fixtures/test_overlay.dart'; |
14 | 14 |
15 runAfterOpen(overlay, cb) { | 15 runAfterOpen(overlay, cb) { |
16 overlay.on['iron-overlay-opened'].take(1).listen((_) { | 16 overlay.on['iron-overlay-opened'].take(1).listen((_) async { |
| 17 await wait(1); |
17 cb(); | 18 cb(); |
18 }); | 19 }); |
19 overlay.open(); | 20 overlay.open(); |
20 } | 21 } |
21 | 22 |
22 main() async { | 23 main() async { |
23 await initPolymer(); | 24 await initPolymer(); |
24 | 25 |
25 group('basic overlay tests', () { | 26 group('basic overlay tests', () { |
26 TestOverlay overlay; | 27 TestOverlay overlay; |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
120 document.activeElement, | 121 document.activeElement, |
121 reason: '<button autofocus> is focused'); | 122 reason: '<button autofocus> is focused'); |
122 done.complete(); | 123 done.complete(); |
123 }); | 124 }); |
124 return done.future; | 125 return done.future; |
125 }); | 126 }); |
126 | 127 |
127 test('cancel an overlay by clicking outside', () { | 128 test('cancel an overlay by clicking outside', () { |
128 var done = new Completer(); | 129 var done = new Completer(); |
129 runAfterOpen(overlay, () { | 130 runAfterOpen(overlay, () { |
130 overlay.on['iron-overlay-closed'].take(1).listen((event) { | 131 overlay.on['iron-overlay-canceled'].first.then((_) { |
| 132 done.complete(); |
| 133 }); |
| 134 fireEvent('click', null, document); |
| 135 }); |
| 136 return done.future; |
| 137 }); |
| 138 |
| 139 test('close an overlay by clicking outside', () { |
| 140 var done = new Completer(); |
| 141 runAfterOpen(overlay, () { |
| 142 overlay.on['iron-overlay-closed'].first.then((event) { |
131 expect(event.detail['canceled'], isTrue, | 143 expect(event.detail['canceled'], isTrue, |
132 reason: 'overlay is canceled'); | 144 reason: 'overlay is canceled'); |
133 done.complete(); | 145 done.complete(); |
134 }); | 146 }); |
135 fireEvent('click', null, document); | 147 fireEvent('click', null, document); |
136 }); | 148 }); |
137 return done.future; | 149 return done.future; |
138 }); | 150 }); |
139 | 151 |
| 152 test('cancel event can be prevented', () { |
| 153 var done = new Completer(); |
| 154 runAfterOpen(overlay, () { |
| 155 overlay.on['iron-overlay-canceled'].first.then((event) { |
| 156 event.preventDefault(); |
| 157 }); |
| 158 var listener = |
| 159 overlay.on['iron-overlay-closed'].listen((event) { |
| 160 throw 'iron-overlay-closed should not fire'; |
| 161 }); |
| 162 fireEvent('click', null, document); |
| 163 wait(10).then((_) { |
| 164 listener.cancel(); |
| 165 done.complete(); |
| 166 }); |
| 167 }); |
| 168 return done.future; |
| 169 }); |
| 170 |
140 test('cancel an overlay with esc key', () { | 171 test('cancel an overlay with esc key', () { |
141 var done = new Completer(); | 172 var done = new Completer(); |
142 runAfterOpen(overlay, () { | 173 runAfterOpen(overlay, () { |
| 174 overlay.on['iron-overlay-canceled'].first.then((event) { |
| 175 done.complete(); |
| 176 }); |
| 177 fireEvent('keydown', { |
| 178 'keyCode': 27 |
| 179 }, document); |
| 180 }); |
| 181 }); |
| 182 |
| 183 test('close an overlay with esc key', () { |
| 184 var done = new Completer(); |
| 185 runAfterOpen(overlay, () { |
143 overlay.on['iron-overlay-closed'].take(1).listen((event) { | 186 overlay.on['iron-overlay-closed'].take(1).listen((event) { |
144 expect(event.detail['canceled'], isTrue, | 187 expect(event.detail['canceled'], isTrue, |
145 reason: 'overlay is canceled'); | 188 reason: 'overlay is canceled'); |
146 done.complete(); | 189 done.complete(); |
147 }); | 190 }); |
148 fireEvent('keydown', {'keyCode': 27}, document); | 191 fireEvent('keydown', {'keyCode': 27}, document); |
149 }); | 192 }); |
150 return done.future; | 193 return done.future; |
151 }); | 194 }); |
152 | 195 |
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
298 expect(overlay.getAttribute('aria-hidden'), isNull, | 341 expect(overlay.getAttribute('aria-hidden'), isNull, |
299 reason: 'overlay does not have aria-hidden attribute'); | 342 reason: 'overlay does not have aria-hidden attribute'); |
300 return wait(1).then((_) { | 343 return wait(1).then((_) { |
301 overlay.close(); | 344 overlay.close(); |
302 expect(overlay.getAttribute('aria-hidden'), 'true', | 345 expect(overlay.getAttribute('aria-hidden'), 'true', |
303 reason: 'overlay has aria-hidden="true"'); | 346 reason: 'overlay has aria-hidden="true"'); |
304 }); | 347 }); |
305 }); | 348 }); |
306 }); | 349 }); |
307 } | 350 } |
OLD | NEW |