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 suite('selection state', function() { | 5 suite('selection state', function() { |
6 var state; | 6 var state; |
7 var action; | 7 var action; |
8 | 8 |
9 function select(items, anchor, add) { | 9 function select(items, anchor, add) { |
10 return { | 10 return { |
11 name: 'select-items', | 11 name: 'select-items', |
12 add: add, | 12 add: add, |
13 anchor: anchor, | 13 anchor: anchor, |
14 items: items, | 14 items: items, |
15 }; | 15 }; |
16 } | 16 } |
17 | 17 |
18 setup(function() { | 18 setup(function() { |
19 state = { | 19 state = { |
20 anchor: null, | 20 anchor: null, |
21 items: {}, | 21 items: {}, |
22 }; | 22 }; |
23 }); | 23 }); |
24 | 24 |
25 test('can select an item', function() { | 25 test('can select an item', function() { |
26 action = select(['1'], '1', false); | 26 action = select(['1'], '1', false); |
27 state = bookmarks.SelectionState.updateSelection(state, action); | 27 state = bookmarks.SelectionState.updateSelection(state, action); |
28 | 28 |
29 assertDeepEquals({'1': true}, state.items); | 29 assertDeepEquals(['1'], normalizeSet(state.items)); |
30 assertEquals('1', state.anchor); | 30 assertEquals('1', state.anchor); |
31 | 31 |
32 // Replace current selection. | 32 // Replace current selection. |
33 action = select(['2'], '2', false); | 33 action = select(['2'], '2', false); |
34 state = bookmarks.SelectionState.updateSelection(state, action); | 34 state = bookmarks.SelectionState.updateSelection(state, action); |
35 assertDeepEquals({'2': true}, state.items); | 35 assertDeepEquals(['2'], normalizeSet(state.items)); |
36 assertEquals('2', state.anchor); | 36 assertEquals('2', state.anchor); |
37 | 37 |
38 // Add to current selection. | 38 // Add to current selection. |
39 action = select(['3'], '3', true); | 39 action = select(['3'], '3', true); |
40 state = bookmarks.SelectionState.updateSelection(state, action); | 40 state = bookmarks.SelectionState.updateSelection(state, action); |
41 assertDeepEquals({'2': true, '3': true}, state.items); | 41 assertDeepEquals(['2', '3'], normalizeSet(state.items)); |
42 assertEquals('3', state.anchor); | 42 assertEquals('3', state.anchor); |
43 }); | 43 }); |
44 | 44 |
45 test('can select multiple items', function() { | 45 test('can select multiple items', function() { |
46 action = select(['1', '2', '3'], '3', false); | 46 action = select(['1', '2', '3'], '3', false); |
47 state = bookmarks.SelectionState.updateSelection(state, action); | 47 state = bookmarks.SelectionState.updateSelection(state, action); |
48 assertDeepEquals({'1': true, '2': true, '3': true}, state.items); | 48 assertDeepEquals(['1', '2', '3'], normalizeSet(state.items)); |
49 | 49 |
50 action = select(['3', '4'], '4', true); | 50 action = select(['3', '4'], '4', true); |
51 state = bookmarks.SelectionState.updateSelection(state, action); | 51 state = bookmarks.SelectionState.updateSelection(state, action); |
52 assertDeepEquals({'1': true, '2': true, '3': true, '4': true}, state.items); | 52 assertDeepEquals(['1', '2', '3', '4'], normalizeSet(state.items)); |
53 }); | 53 }); |
54 | 54 |
55 test('is cleared when selected folder changes', function() { | 55 test('is cleared when selected folder changes', function() { |
56 action = select(['1', '2', '3'], '3', false); | 56 action = select(['1', '2', '3'], '3', false); |
57 state = bookmarks.SelectionState.updateSelection(state, action); | 57 state = bookmarks.SelectionState.updateSelection(state, action); |
58 | 58 |
59 action = bookmarks.actions.selectFolder('2'); | 59 action = bookmarks.actions.selectFolder('2'); |
60 state = bookmarks.SelectionState.updateSelection(state, action); | 60 state = bookmarks.SelectionState.updateSelection(state, action); |
61 assertDeepEquals({}, state.items); | 61 assertDeepEquals({}, state.items); |
62 }); | 62 }); |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
96 | 96 |
97 setup(function() { | 97 setup(function() { |
98 nodes = testTree( | 98 nodes = testTree( |
99 createFolder( | 99 createFolder( |
100 '1', | 100 '1', |
101 [ | 101 [ |
102 createFolder('2', []), | 102 createFolder('2', []), |
103 createItem('3'), | 103 createItem('3'), |
104 ]), | 104 ]), |
105 createFolder('4', [])); | 105 createFolder('4', [])); |
106 state = {}; | 106 state = new Set(); |
107 }); | 107 }); |
108 | 108 |
109 test('toggle folder open state', function() { | 109 test('toggle folder open state', function() { |
110 action = bookmarks.actions.changeFolderOpen('2', false); | 110 action = bookmarks.actions.changeFolderOpen('2', false); |
111 state = | 111 state = |
112 bookmarks.ClosedFolderState.updateClosedFolders(state, action, nodes); | 112 bookmarks.ClosedFolderState.updateClosedFolders(state, action, nodes); |
113 assertFalse(!!state['1']); | 113 assertFalse(state.has('1')); |
114 assertTrue(state['2']); | 114 assertTrue(state.has('2')); |
115 }); | 115 }); |
116 | 116 |
117 test('select folder with closed parent', function() { | 117 test('select folder with closed parent', function() { |
118 // Close '1' | 118 // Close '1' |
119 action = bookmarks.actions.changeFolderOpen('1', false); | 119 action = bookmarks.actions.changeFolderOpen('1', false); |
120 state = | 120 state = |
121 bookmarks.ClosedFolderState.updateClosedFolders(state, action, nodes); | 121 bookmarks.ClosedFolderState.updateClosedFolders(state, action, nodes); |
122 assertTrue(state['1']); | 122 assertTrue(state.has('1')); |
123 assertFalse(!!state['2']); | 123 assertFalse(state.has('2')); |
124 | 124 |
125 // Should re-open when '2' is selected. | 125 // Should re-open when '2' is selected. |
126 action = bookmarks.actions.selectFolder('2'); | 126 action = bookmarks.actions.selectFolder('2'); |
127 state = | 127 state = |
128 bookmarks.ClosedFolderState.updateClosedFolders(state, action, nodes); | 128 bookmarks.ClosedFolderState.updateClosedFolders(state, action, nodes); |
129 assertFalse(!!state['1']); | 129 assertFalse(state.has('1')); |
130 }); | 130 }); |
131 | 131 |
132 test('move nodes in a closed folder', function() { | 132 test('move nodes in a closed folder', function() { |
133 // Moving bookmark items should not open folders. | 133 // Moving bookmark items should not open folders. |
134 state = {'1': true}; | 134 state = new Set(['1']); |
135 action = bookmarks.actions.moveBookmark('3', '1', 1, '1', 0); | 135 action = bookmarks.actions.moveBookmark('3', '1', 1, '1', 0); |
136 state = | 136 state = |
137 bookmarks.ClosedFolderState.updateClosedFolders(state, action, nodes); | 137 bookmarks.ClosedFolderState.updateClosedFolders(state, action, nodes); |
138 | 138 |
139 assertTrue(state['1']); | 139 assertTrue(state.has('1')); |
140 | 140 |
141 // Moving folders should open their parents. | 141 // Moving folders should open their parents. |
142 state = {'1': true, '2': true}; | 142 state = new Set(['1', '2']); |
143 action = bookmarks.actions.moveBookmark('4', '2', 0, '0', 1); | 143 action = bookmarks.actions.moveBookmark('4', '2', 0, '0', 1); |
144 state = | 144 state = |
145 bookmarks.ClosedFolderState.updateClosedFolders(state, action, nodes); | 145 bookmarks.ClosedFolderState.updateClosedFolders(state, action, nodes); |
146 assertFalse(!!state['1']); | 146 assertFalse(state.has('1')); |
147 assertFalse(!!state['2']); | 147 assertFalse(state.has('2')); |
148 }); | 148 }); |
149 }); | 149 }); |
150 | 150 |
151 suite('selected folder', function() { | 151 suite('selected folder', function() { |
152 var nodes; | 152 var nodes; |
153 var state; | 153 var state; |
154 var action; | 154 var action; |
155 | 155 |
156 setup(function() { | 156 setup(function() { |
157 nodes = testTree(createFolder('1', [ | 157 nodes = testTree(createFolder('1', [ |
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
308 // Case 2: Clear search by selecting a new folder. | 308 // Case 2: Clear search by selecting a new folder. |
309 action = bookmarks.actions.selectFolder('2'); | 309 action = bookmarks.actions.selectFolder('2'); |
310 var selectedState = bookmarks.reduceAction(searchedState, action); | 310 var selectedState = bookmarks.reduceAction(searchedState, action); |
311 | 311 |
312 assertEquals('2', selectedState.selectedFolder); | 312 assertEquals('2', selectedState.selectedFolder); |
313 assertDeepEquals(['3'], bookmarks.util.getDisplayedList(selectedState)); | 313 assertDeepEquals(['3'], bookmarks.util.getDisplayedList(selectedState)); |
314 assertEquals('', selectedState.search.term); | 314 assertEquals('', selectedState.search.term); |
315 assertDeepEquals([], selectedState.search.results); | 315 assertDeepEquals([], selectedState.search.results); |
316 }); | 316 }); |
317 }); | 317 }); |
OLD | NEW |