Index: chrome/test/data/webui/md_bookmarks/store_test.js |
diff --git a/chrome/test/data/webui/md_bookmarks/store_test.js b/chrome/test/data/webui/md_bookmarks/store_test.js |
index a1cf7e0e42cf12e54260a79b23a8a7a35bce2eaf..7b00db0b9ae6dea26d0690eac8e35d49dd488132 100644 |
--- a/chrome/test/data/webui/md_bookmarks/store_test.js |
+++ b/chrome/test/data/webui/md_bookmarks/store_test.js |
@@ -13,6 +13,8 @@ suite('<bookmarks-store>', function() { |
[ |
createItem('2', {url: 'link2'}), |
createFolder('3', []), |
+ createItem('6', {url: 'link4'}), |
+ createItem('7', {url: 'link5'}), |
]), |
createItem('4', {url: 'link4'}), |
createItem('5', {url: 'link5'}), |
@@ -57,6 +59,8 @@ suite('<bookmarks-store>', function() { |
'3': 'rootNode.children.#0.children.#1', |
'4': 'rootNode.children.#1', |
'5': 'rootNode.children.#2', |
+ '6': 'rootNode.children.#0.children.#2', |
+ '7': 'rootNode.children.#0.children.#3', |
}; |
for (var id in store.idToNodeMap_) |
@@ -66,24 +70,24 @@ suite('<bookmarks-store>', function() { |
test('store updates on selected event', function() { |
// First child of root is selected by default. |
assertEquals('1', store.selectedId); |
- assertTrue(store.idToNodeMap_['1'].isSelected); |
+ assertTrue(store.idToNodeMap_['1'].isSelectedFolder); |
// Selecting a selected folder doesn't deselect it. |
store.fire('selected-folder-changed', '1'); |
assertEquals('1', store.selectedId); |
- assertTrue(store.idToNodeMap_['1'].isSelected); |
+ assertTrue(store.idToNodeMap_['1'].isSelectedFolder); |
// Select a deeply nested descendant. |
store.fire('selected-folder-changed', '3'); |
assertEquals('3', store.selectedId); |
- assertTrue(store.idToNodeMap_['3'].isSelected); |
- assertFalse(store.idToNodeMap_['1'].isSelected); |
+ assertTrue(store.idToNodeMap_['3'].isSelectedFolder); |
+ assertFalse(store.idToNodeMap_['1'].isSelectedFolder); |
// Select a folder in separate subtree. |
store.fire('selected-folder-changed', '5'); |
assertEquals('5', store.selectedId); |
- assertTrue(store.idToNodeMap_['5'].isSelected); |
- assertFalse(store.idToNodeMap_['3'].isSelected); |
+ assertTrue(store.idToNodeMap_['5'].isSelectedFolder); |
+ assertFalse(store.idToNodeMap_['3'].isSelectedFolder); |
}); |
test('store updates on open and close', function() { |
@@ -106,8 +110,8 @@ suite('<bookmarks-store>', function() { |
store.fire('folder-open-changed', {id: '1', open: false}); |
assertFalse(store.idToNodeMap_['1'].isOpen); |
assertEquals('1', store.selectedId); |
- assertTrue(store.idToNodeMap_['1'].isSelected); |
- assertFalse(store.idToNodeMap_['3'].isSelected); |
+ assertTrue(store.idToNodeMap_['1'].isSelectedFolder); |
+ assertFalse(store.idToNodeMap_['3'].isSelectedFolder); |
}); |
test('deleting a node updates the tree', function() { |
@@ -128,6 +132,8 @@ suite('<bookmarks-store>', function() { |
'2': 'rootNode.children.#0.children.#0', |
'3': 'rootNode.children.#0.children.#1', |
'5': 'rootNode.children.#1', |
+ '6': 'rootNode.children.#0.children.#2', |
+ '7': 'rootNode.children.#0.children.#3', |
}; |
for (var id in store.idToNodeMap_) |
@@ -160,47 +166,62 @@ suite('<bookmarks-store>', function() { |
// Selected folder gets removed. |
store.selectedId = '2'; |
store.onBookmarkRemoved_('2', {parentId:'1', index:'0'}); |
- assertTrue(store.idToNodeMap_['1'].isSelected); |
+ assertTrue(store.idToNodeMap_['1'].isSelectedFolder); |
assertEquals('1', store.selectedId); |
// A folder with selected folder in it gets removed. |
store.selectedId = '3'; |
store.onBookmarkRemoved_('1', {parentId:'0', index:'0'}); |
- assertTrue(store.idToNodeMap_['0'].isSelected); |
+ assertTrue(store.idToNodeMap_['0'].isSelectedFolder); |
assertEquals('0', store.selectedId); |
}); |
test('displayedList updates after searchTerm changes', function() { |
- var SEARCH_RESULTS = [ |
- 'cat', |
- 'apple', |
- 'Paris', |
- ]; |
- |
+ var SEARCH_RESULTS = TEST_TREE.children[0].children; |
calamity
2017/01/17 06:12:22
Can we just make these the same results as before,
jiaxi
2017/01/20 04:51:09
Done.
|
chrome.bookmarks.search = function(searchTerm, callback) { |
callback(SEARCH_RESULTS); |
}; |
// Search for a non-empty string. |
store.searchTerm = 'a'; |
- assertFalse(store.rootNode.children[0].isSelected); |
+ assertFalse(store.rootNode.children[0].isSelectedFolder); |
assertEquals(null, store.selectedId); |
- assertEquals(SEARCH_RESULTS, store.displayedList); |
+ for (var i = 0; i < SEARCH_RESULTS.length; i++) |
+ assertEquals(SEARCH_RESULTS[i], store.displayedList[i]); |
// Clear the searchTerm. |
store.searchTerm = ''; |
var defaultFolder = store.rootNode.children[0]; |
- assertTrue(defaultFolder.isSelected); |
+ assertTrue(defaultFolder.isSelectedFolder); |
assertEquals(defaultFolder.id, store.selectedId); |
assertEquals(defaultFolder.children, store.displayedList); |
// Search with no bookmarks returned. |
- var EMPTY_RESULT = []; |
chrome.bookmarks.search = function(searchTerm, callback) { |
- callback(EMPTY_RESULT); |
+ callback([]); |
}; |
store.searchTerm = 'asdf'; |
- assertEquals(EMPTY_RESULT, store.displayedList); |
+ assertEquals(0, store.displayedList.length); |
+ }); |
+ |
+ test('path gets linked correctly after searchTerm changes', function() { |
+ var SEARCH_RESULTS = [ |
+ createItem('2', {url: 'link2'}), |
+ createItem('4', {url: 'link4'}), |
+ createItem('5', {url: 'link5'}), |
+ ]; |
+ chrome.bookmarks.search = function(searchTerm, callback) { |
+ callback(SEARCH_RESULTS); |
+ }; |
+ |
+ var TEST_PATHS = [ |
+ 'rootNode.children.#0.children.#0', |
+ 'rootNode.children.#1', |
+ 'rootNode.children.#2', |
+ ]; |
+ store.searchTerm = 'a'; |
+ for(var i = 0; i < TEST_PATHS.length; i++) |
+ assertEquals(TEST_PATHS[i], store.displayedList[i].path); |
}); |
test('bookmark gets updated after editing', function() { |
@@ -222,4 +243,103 @@ suite('<bookmarks-store>', function() { |
assertEquals('test', store.idToNodeMap_['2'].title); |
assertEquals('http://www.google.com', store.idToNodeMap_['2'].url); |
}); |
+ |
+ test('single select selects the correct bookmark', function() { |
+ for (var id in store.idToNodeMap_) { |
+ assertFalse(store.idToNodeMap_[id].isSelected); |
+ } |
+ |
+ store.fire('select-single-item', {item: TEST_TREE.children[0].children[0]}); |
+ assertTrue(store.idToNodeMap_['2'].isSelected); |
+ assertEquals(0, store.prevSelectedItemIndex_); |
+ |
+ // Select other item will remove the previous selection. |
+ store.fire('select-single-item', {item: TEST_TREE.children[0].children[1]}); |
+ assertFalse(store.idToNodeMap_['2'].isSelected); |
+ assertTrue(store.idToNodeMap_['3'].isSelected); |
+ assertEquals(1, store.prevSelectedItemIndex_); |
+ |
+ // Changing the selected folder will remove the select status of the |
+ // bookmark. |
+ store.selectedId = '3'; |
+ assertFalse(store.idToNodeMap_['2'].isSelected); |
+ assertEquals(undefined, store.prevSelectedItemIndex_); |
+ }); |
+ |
+ test('shift select selects the correct bookmarks', function() { |
+ // When nothing has been selected, it selects a single item. |
+ assertEquals(undefined, store.prevSelectedItemIndex_); |
+ store.fire( |
+ 'shift-select-multiple-items', |
+ {item: TEST_TREE.children[0].children[2]}); |
+ assertTrue(store.idToNodeMap_['6'].isSelected); |
+ assertEquals(2, store.prevSelectedItemIndex_); |
+ |
+ // Select an item below the previous selected item. |
+ store.fire( |
+ 'shift-select-multiple-items', |
+ {item: TEST_TREE.children[0].children[3]}); |
+ assertEquals(2, store.prevSelectedItemIndex_); |
+ assertTrue(store.idToNodeMap_['6'].isSelected); |
+ assertTrue(store.idToNodeMap_['7'].isSelected); |
+ |
+ // Select an item above the previous selected item. |
+ store.fire( |
+ 'shift-select-multiple-items', |
+ {item: TEST_TREE.children[0].children[0]}); |
+ assertEquals(2, store.prevSelectedItemIndex_); |
+ assertTrue(store.idToNodeMap_['2'].isSelected); |
+ assertTrue(store.idToNodeMap_['3'].isSelected); |
+ assertTrue(store.idToNodeMap_['6'].isSelected); |
+ assertFalse(store.idToNodeMap_['7'].isSelected); |
calamity
2017/01/17 06:12:22
Consider doing what happens in history_list_test.j
jiaxi
2017/01/20 04:51:09
Done.
|
+ }); |
+ |
+ test('ctrl select selects the correct bookmarks', function() { |
+ // When nothing has been selected, it selects a single item. |
+ assertEquals(undefined, store.prevSelectedItemIndex_); |
+ store.fire( |
+ 'ctrl-select-multiple-items', |
+ {item: TEST_TREE.children[0].children[2]}); |
+ assertTrue(store.idToNodeMap_['6'].isSelected); |
+ assertEquals(2, store.prevSelectedItemIndex_); |
+ |
+ // Select a new item will not deselect the previous item, but will update |
+ // prevSelectedItemIndex_. |
+ store.fire( |
+ 'ctrl-select-multiple-items', |
+ {item: TEST_TREE.children[0].children[0]}); |
+ assertTrue(store.idToNodeMap_['2'].isSelected); |
+ assertFalse(store.idToNodeMap_['3'].isSelected); |
+ assertTrue(store.idToNodeMap_['6'].isSelected); |
+ assertEquals(0, store.prevSelectedItemIndex_); |
+ }); |
+ |
+ test('selection in search mode', function() { |
+ // Item gets unselected in search. |
+ var SEARCH_RESULTS = [ |
+ createItem('4', {url: 'link4'}), |
+ createItem('2', {url: 'link2'}), |
+ createItem('5', {url: 'link5'}), |
+ ]; |
+ chrome.bookmarks.search = function(searchTerm, callback) { |
+ callback(SEARCH_RESULTS); |
+ }; |
+ |
+ store.selectedId = '1'; |
+ store.fire('select-single-item', {item: TEST_TREE.children[0].children[1]}); |
+ store.searchTerm = 'a'; |
+ assertFalse(store.idToNodeMap_['3'].isSelected); |
+ assertEquals(undefined, store.prevSelectedItemIndex_); |
+ |
+ // prevSelectedItemIndex_ gets updated properly in single select. |
+ store.fire('select-single-item', {item: TEST_TREE.children[0].children[0]}); |
+ assertTrue(store.idToNodeMap_['2'].isSelected); |
+ assertEquals(1, store.prevSelectedItemIndex_); |
+ |
+ // prevSelectedItemIndex_ gets updated properly in ctrl select. |
+ store.fire('ctrl-select-multiple-items', {item: TEST_TREE.children[1]}); |
+ assertTrue(store.idToNodeMap_['2'].isSelected); |
+ assertTrue(store.idToNodeMap_['4'].isSelected); |
+ assertEquals(0, store.prevSelectedItemIndex_); |
+ }); |
}); |