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