Chromium Code Reviews| 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_); |
| + }); |
| }); |