OLD | NEW |
---|---|
1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 /** | 5 /** |
6 * @fileoverview Tests for MD Bookmarks which are run as interactive ui tests. | 6 * @fileoverview Tests for MD Bookmarks which are run as interactive ui tests. |
7 * Should be used for tests which care about focus. | 7 * Should be used for tests which care about focus. |
8 */ | 8 */ |
9 | 9 |
10 var ROOT_PATH = '../../../../../'; | 10 var ROOT_PATH = '../../../../../'; |
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
173 bookmarks.actions.changeFolderOpen('2', true), store.lastAction); | 173 bookmarks.actions.changeFolderOpen('2', true), store.lastAction); |
174 | 174 |
175 keydown('2', 'ArrowRight'); | 175 keydown('2', 'ArrowRight'); |
176 assertDeepEquals( | 176 assertDeepEquals( |
177 bookmarks.actions.changeFolderOpen('2', false), store.lastAction); | 177 bookmarks.actions.changeFolderOpen('2', false), store.lastAction); |
178 | 178 |
179 document.body.style.direction = 'ltr'; | 179 document.body.style.direction = 'ltr'; |
180 }); | 180 }); |
181 }); | 181 }); |
182 | 182 |
183 suite('<bookmarks-list>', function() { | |
184 var list; | |
185 var store; | |
186 var items; | |
187 var multiKey = cr.isMac ? 'meta' : 'ctrl'; | |
188 | |
189 function keydown(item, key, modifiers) { | |
190 MockInteractions.keyDownOn(item, '', modifiers, key); | |
191 } | |
192 | |
193 setup(function() { | |
194 store = new bookmarks.TestStore({ | |
195 nodes: testTree(createFolder( | |
196 '1', | |
197 [ | |
198 createItem('2'), | |
199 createItem('3'), | |
200 createItem('4'), | |
201 createItem('5'), | |
202 createItem('6'), | |
203 createFolder('7', []), | |
204 ])), | |
205 selectedFolder: '1', | |
206 }); | |
207 store.setReducersEnabled(true); | |
208 bookmarks.Store.instance_ = store; | |
209 | |
210 list = document.createElement('bookmarks-list'); | |
211 list.style.height = '100%'; | |
212 list.style.width = '100%'; | |
213 list.style.position = 'absolute'; | |
214 replaceBody(list); | |
215 Polymer.dom.flush(); | |
216 items = list.root.querySelectorAll('bookmarks-item'); | |
217 }); | |
218 | |
219 test('simple keyboard selection', function() { | |
220 var focusedItem = items[0]; | |
221 assertEquals('0', focusedItem.getAttribute('tabindex')); | |
222 assertEquals( | |
223 '0', focusedItem.$$('.more-vert-button').getAttribute('tabindex')); | |
224 focusedItem.focus(); | |
225 | |
226 keydown(focusedItem, 'ArrowDown'); | |
227 focusedItem = items[1]; | |
228 assertEquals('0', focusedItem.getAttribute('tabindex')); | |
229 assertEquals( | |
230 '0', focusedItem.$$('.more-vert-button').getAttribute('tabindex')); | |
231 assertDeepEquals(['3'], normalizeSet(store.data.selection.items)); | |
232 | |
233 keydown(focusedItem, 'ArrowUp'); | |
234 focusedItem = items[0]; | |
235 assertEquals('0', focusedItem.getAttribute('tabindex')); | |
236 assertDeepEquals(['2'], normalizeSet(store.data.selection.items)); | |
237 | |
238 keydown(focusedItem, 'End'); | |
239 focusedItem = items[5]; | |
240 assertDeepEquals(['7'], normalizeSet(store.data.selection.items)); | |
241 | |
242 keydown(focusedItem, 'Home'); | |
243 focusedItem = items[0]; | |
244 assertDeepEquals(['2'], normalizeSet(store.data.selection.items)); | |
245 | |
246 keydown(focusedItem, 'Escape'); | |
247 assertDeepEquals([], normalizeSet(store.data.selection.items)); | |
248 | |
249 keydown(focusedItem, 'a', 'ctrl'); | |
250 assertDeepEquals( | |
251 ['2', '3', '4', '5', '6', '7'], | |
252 normalizeSet(store.data.selection.items)); | |
253 }); | |
254 | |
255 test('shift selection', function() { | |
256 // TODO(calamity): Make the first item the anchor index when a new folder | |
257 // is selected. | |
258 var focusedItem = items[0]; | |
259 focusedItem.focus(); | |
260 | |
261 keydown(focusedItem, 'ArrowDown'); | |
262 focusedItem = items[1]; | |
263 assertDeepEquals(['3'], normalizeSet(store.data.selection.items)); | |
264 | |
265 keydown(focusedItem, 'ArrowUp', 'shift'); | |
266 focusedItem = items[0]; | |
267 assertDeepEquals(['2', '3'], normalizeSet(store.data.selection.items)); | |
268 | |
269 keydown(focusedItem, 'ArrowDown', 'shift'); | |
270 focusedItem = items[1]; | |
271 assertDeepEquals(['3'], normalizeSet(store.data.selection.items)); | |
272 | |
273 keydown(focusedItem, 'ArrowDown', 'shift'); | |
274 focusedItem = items[2]; | |
275 assertDeepEquals(['3', '4'], normalizeSet(store.data.selection.items)); | |
276 | |
277 keydown(focusedItem, 'End', 'shift'); | |
278 focusedItem = items[2]; | |
279 assertDeepEquals( | |
280 ['3', '4', '5', '6', '7'], normalizeSet(store.data.selection.items)); | |
281 | |
282 keydown(focusedItem, 'Home', 'shift'); | |
283 focusedItem = items[2]; | |
284 assertDeepEquals(['2', '3'], normalizeSet(store.data.selection.items)); | |
285 }); | |
286 | |
287 test('ctrl selection', function() { | |
288 var focusedItem = items[0]; | |
289 focusedItem.focus(); | |
290 | |
291 keydown(focusedItem, ' ', 'ctrl'); | |
292 assertDeepEquals(['2'], normalizeSet(store.data.selection.items)); | |
293 | |
294 keydown(focusedItem, 'ArrowDown', 'ctrl'); | |
295 focusedItem = items[1]; | |
296 assertDeepEquals(['2'], normalizeSet(store.data.selection.items)); | |
tsergeant
2017/05/22 05:19:00
Should you be checking that the anchor changes her
calamity
2017/05/23 05:27:29
Done.
| |
297 | |
298 keydown(focusedItem, 'ArrowDown', 'ctrl'); | |
299 focusedItem = items[2]; | |
300 assertDeepEquals(['2'], normalizeSet(store.data.selection.items)); | |
301 | |
302 keydown(focusedItem, ' ', 'ctrl'); | |
303 assertDeepEquals(['2', '4'], normalizeSet(store.data.selection.items)); | |
304 | |
305 keydown(focusedItem, ' ', 'ctrl'); | |
306 assertDeepEquals(['2'], normalizeSet(store.data.selection.items)); | |
307 }); | |
308 | |
309 test('ctrl+shift selection', function() { | |
310 var focusedItem = items[0]; | |
311 focusedItem.focus(); | |
312 | |
313 keydown(focusedItem, ' ', 'ctrl'); | |
314 assertDeepEquals(['2'], normalizeSet(store.data.selection.items)); | |
315 | |
316 keydown(focusedItem, 'ArrowDown', 'ctrl'); | |
317 focusedItem = items[1]; | |
318 assertDeepEquals(['2'], normalizeSet(store.data.selection.items)); | |
319 | |
320 keydown(focusedItem, 'ArrowDown', 'ctrl'); | |
321 focusedItem = items[2]; | |
322 assertDeepEquals(['2'], normalizeSet(store.data.selection.items)); | |
323 | |
324 keydown(focusedItem, 'ArrowDown', ['ctrl', 'shift']); | |
325 focusedItem = items[3]; | |
326 assertDeepEquals( | |
327 ['2', '4', '5'], normalizeSet(store.data.selection.items)); | |
328 | |
329 keydown(focusedItem, 'ArrowDown', ['ctrl', 'shift']); | |
330 focusedItem = items[3]; | |
331 assertDeepEquals( | |
332 ['2', '4', '5', '6'], normalizeSet(store.data.selection.items)); | |
333 }); | |
334 }); | |
335 | |
183 mocha.run(); | 336 mocha.run(); |
184 }); | 337 }); |
OLD | NEW |