| 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
|
| deleted file mode 100644
|
| index 9d08151f5c25d240d3b19652da813109e0b56106..0000000000000000000000000000000000000000
|
| --- a/chrome/test/data/webui/md_bookmarks/store_test.js
|
| +++ /dev/null
|
| @@ -1,442 +0,0 @@
|
| -// Copyright 2016 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -suite('<bookmarks-store>', function() {
|
| - var store;
|
| - var TEST_TREE;
|
| -
|
| - function replaceStore() {
|
| - store = document.createElement('bookmarks-store');
|
| - replaceBody(store);
|
| - store.setupStore_(TEST_TREE);
|
| - }
|
| -
|
| - function navigateTo(route) {
|
| - window.history.replaceState({}, '', route);
|
| - window.dispatchEvent(new CustomEvent('location-changed'));
|
| - }
|
| -
|
| - /**
|
| - * Overrides the chrome.bookmarks.search to pass results into the callback.
|
| - * @param {Array} results
|
| - */
|
| - function overrideBookmarksSearch(results) {
|
| - chrome.bookmarks.search = function(searchTerm, callback) {
|
| - callback(results);
|
| - };
|
| - }
|
| -
|
| - /**
|
| - * Overrides the chrome.bookmarks.getSubTree to pass results into the
|
| - * callback.
|
| - * @param {Array} results
|
| - */
|
| - function overrideBookmarksGetSubTree(results) {
|
| - chrome.bookmarks.getSubTree = function(parentId, callback) {
|
| - callback(results);
|
| - };
|
| - }
|
| -
|
| - setup(function() {
|
| - TEST_TREE = createFolder('0', [
|
| - createFolder(
|
| - '1',
|
| - [
|
| - createItem('2', {url: 'link2'}),
|
| - createFolder('3', []),
|
| - createItem('6', {url: 'link4'}),
|
| - createItem('7', {url: 'link5'}),
|
| - ]),
|
| - createItem('4', {url: 'link4'}),
|
| - createItem('5', {url: 'link5'}),
|
| - createFolder('8', []),
|
| - ]);
|
| -
|
| - replaceStore();
|
| - });
|
| -
|
| - teardown(function() {
|
| - // Clean up anything left in URL.
|
| - navigateTo('/');
|
| - });
|
| -
|
| - //////////////////////////////////////////////////////////////////////////////
|
| - // store initialization tests:
|
| -
|
| - test('initNodes inserts nodes into idToNodeMap', function() {
|
| - assertEquals(TEST_TREE, store.idToNodeMap_['0']);
|
| - assertEquals(TEST_TREE.children[0], store.idToNodeMap_['1']);
|
| - assertEquals(TEST_TREE.children[0].children[0], store.idToNodeMap_['2']);
|
| - assertEquals(TEST_TREE.children[0].children[1], store.idToNodeMap_['3']);
|
| - assertEquals(TEST_TREE.children[1], store.idToNodeMap_['4']);
|
| - assertEquals(TEST_TREE.children[2], store.idToNodeMap_['5']);
|
| - });
|
| -
|
| - test('correct paths generated for nodes', function() {
|
| - var TEST_PATHS = {
|
| - '0': 'rootNode',
|
| - '1': 'rootNode.children.#0',
|
| - '2': 'rootNode.children.#0.children.#0',
|
| - '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',
|
| - '8': 'rootNode.children.#3',
|
| - };
|
| -
|
| - for (var id in store.idToNodeMap_)
|
| - assertEquals(TEST_PATHS[id], store.idToNodeMap_[id].path);
|
| - });
|
| -
|
| - //////////////////////////////////////////////////////////////////////////////
|
| - // editing bookmarks tree tests:
|
| -
|
| - test('store updates on selected event', function() {
|
| - // First child of root is selected by default.
|
| - assertEquals('1', store.selectedId);
|
| - 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'].isSelectedFolder);
|
| -
|
| - // Select a deeply nested descendant.
|
| - store.fire('selected-folder-changed', '3');
|
| - assertEquals('3', store.selectedId);
|
| - assertTrue(store.idToNodeMap_['3'].isSelectedFolder);
|
| - assertFalse(store.idToNodeMap_['1'].isSelectedFolder);
|
| -
|
| - // Select a folder in separate subtree.
|
| - store.fire('selected-folder-changed', '8');
|
| - assertEquals('8', store.selectedId);
|
| - assertTrue(store.idToNodeMap_['8'].isSelectedFolder);
|
| - assertFalse(store.idToNodeMap_['3'].isSelectedFolder);
|
| - });
|
| -
|
| - test('store updates on open and close', function() {
|
| - // All folders are open by default.
|
| - for (var id in store.idToNodeMap_) {
|
| - if (store.idToNodeMap_[id].url)
|
| - continue;
|
| -
|
| - assertTrue(store.idToNodeMap_[id].isOpen);
|
| - }
|
| -
|
| - // Closing a folder doesn't close any descendants.
|
| - store.fire('folder-open-changed', {id: '1', open: false});
|
| - assertFalse(store.idToNodeMap_['1'].isOpen);
|
| - assertTrue(store.idToNodeMap_['3'].isOpen);
|
| - store.fire('folder-open-changed', {id: '1', open: true});
|
| -
|
| - // Closing an ancestor folder of a selected folder selects the ancestor.
|
| - store.fire('selected-folder-changed', '3');
|
| - store.fire('folder-open-changed', {id: '1', open: false});
|
| - assertFalse(store.idToNodeMap_['1'].isOpen);
|
| - assertEquals('1', store.selectedId);
|
| - assertTrue(store.idToNodeMap_['1'].isSelectedFolder);
|
| - assertFalse(store.idToNodeMap_['3'].isSelectedFolder);
|
| - });
|
| -
|
| - test('parent folder opens when descendant folder is selected', function() {
|
| - store.idToNodeMap_['0'].isOpen = false;
|
| - store.idToNodeMap_['1'].isOpen = false;
|
| - store.idToNodeMap_['3'].isOpen = false;
|
| - store.fire('selected-folder-changed', '3');
|
| - assertTrue(store.idToNodeMap_['0'].isOpen);
|
| - assertTrue(store.idToNodeMap_['1'].isOpen);
|
| - assertFalse(store.idToNodeMap_['3'].isOpen);
|
| - });
|
| -
|
| - test('deleting a node updates the tree', function() {
|
| - removeChild(TEST_TREE, 1);
|
| - overrideBookmarksGetSubTree([TEST_TREE]);
|
| - // Remove an empty folder/bookmark.
|
| - store.onBookmarkRemoved_('4', {parentId: '0', index: 1});
|
| -
|
| - // Check the tree is correct.
|
| - assertEquals('5', store.rootNode.children[1].id);
|
| -
|
| - // idToNodeMap_ has been updated.
|
| - assertEquals(undefined, store.idToNodeMap_['4']);
|
| - assertEquals(store.rootNode.children[1], store.idToNodeMap_['5']);
|
| -
|
| - // Paths have been updated.
|
| - var TEST_PATHS = {
|
| - '0': 'rootNode',
|
| - '1': 'rootNode.children.#0',
|
| - '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',
|
| - '8': 'rootNode.children.#2',
|
| - };
|
| -
|
| - for (var id in store.idToNodeMap_)
|
| - assertEquals(TEST_PATHS[id], store.idToNodeMap_[id].path);
|
| -
|
| - // Remove a folder with children.
|
| - removeChild(TEST_TREE, 0);
|
| - overrideBookmarksGetSubTree([TEST_TREE]);
|
| -
|
| - store.onBookmarkRemoved_('1', {parentId: '0', index: '0'});
|
| -
|
| - // Check the tree is correct.
|
| - assertEquals('5', store.rootNode.children[0].id);
|
| - assertEquals('8', store.rootNode.children[1].id);
|
| -
|
| - // idToNodeMap_ has been updated.
|
| - assertEquals(undefined, store.idToNodeMap_['1']);
|
| - assertEquals(undefined, store.idToNodeMap_['2']);
|
| - assertEquals(undefined, store.idToNodeMap_['3']);
|
| - assertEquals(undefined, store.idToNodeMap_['4']);
|
| - assertEquals(store.rootNode.children[0], store.idToNodeMap_['5']);
|
| - assertEquals(store.rootNode.children[1], store.idToNodeMap_['8']);
|
| -
|
| - // Paths have been updated.
|
| - TEST_PATHS = {
|
| - '0': 'rootNode',
|
| - '5': 'rootNode.children.#0',
|
| - '8': 'rootNode.children.#1'
|
| - };
|
| -
|
| - for (var id in store.idToNodeMap_)
|
| - assertEquals(TEST_PATHS[id], store.idToNodeMap_[id].path);
|
| - });
|
| -
|
| - test('selectedId updates after removing a selected folder', function() {
|
| - // Selected folder gets removed.
|
| - store.selectedId = '8';
|
| - removeChild(TEST_TREE, 3);
|
| - overrideBookmarksGetSubTree([TEST_TREE]);
|
| -
|
| - store.onBookmarkRemoved_('8', {parentId:'0', index:'3'});
|
| - assertTrue(store.idToNodeMap_['0'].isSelectedFolder);
|
| - assertEquals('0', store.selectedId);
|
| -
|
| - // A folder with selected folder in it gets removed.
|
| - store.selectedId = '3';
|
| - removeChild(TEST_TREE, 0);
|
| - overrideBookmarksGetSubTree([TEST_TREE]);
|
| -
|
| - store.onBookmarkRemoved_('1', {parentId:'0', index:'0'});
|
| - assertTrue(store.idToNodeMap_['0'].isSelectedFolder);
|
| - assertEquals('0', store.selectedId);
|
| - });
|
| -
|
| - test('bookmark gets updated after editing', function() {
|
| - // Edit title updates idToNodeMap_ properly.
|
| - store.onBookmarkChanged_('4', {'title': 'test'});
|
| - assertEquals('test', store.idToNodeMap_['4'].title);
|
| - assertEquals('link4', store.idToNodeMap_['4'].url);
|
| -
|
| - // Edit url updates idToNodeMap_ properly.
|
| - store.onBookmarkChanged_('5', {'url': 'http://www.google.com'});
|
| - assertEquals('', store.idToNodeMap_['5'].title);
|
| - assertEquals('http://www.google.com', store.idToNodeMap_['5'].url);
|
| -
|
| - // Edit url and title updates idToNodeMap_ properly.
|
| - store.onBookmarkChanged_('2', {
|
| - 'title': 'test',
|
| - 'url': 'http://www.google.com',
|
| - });
|
| - assertEquals('test', store.idToNodeMap_['2'].title);
|
| - assertEquals('http://www.google.com', store.idToNodeMap_['2'].url);
|
| - });
|
| -
|
| - test('folder gets updated after renaming', function() {
|
| - store.onBookmarkChanged_('3', {'title': 'Main Folder'});
|
| - assertEquals('Main Folder', store.idToNodeMap_['3'].title);
|
| - assertEquals(undefined, store.idToNodeMap_['3'].url);
|
| - });
|
| -
|
| - //////////////////////////////////////////////////////////////////////////////
|
| - // search tests:
|
| -
|
| - test('displayedList updates after searchTerm changes', function() {
|
| - var SEARCH_RESULTS = [
|
| - createItem('1', {title: 'cat'}),
|
| - createItem('2', {title: 'apple'}),
|
| - createItem('3', {title: 'paris'}),
|
| - ];
|
| - overrideBookmarksSearch(SEARCH_RESULTS);
|
| -
|
| - // Search for a non-empty string.
|
| - store.searchTerm = 'a';
|
| - assertFalse(store.rootNode.children[0].isSelectedFolder);
|
| - assertEquals(null, store.selectedId);
|
| - assertEquals(SEARCH_RESULTS, store.displayedList);
|
| -
|
| - // Clear the searchTerm.
|
| - store.searchTerm = '';
|
| - var defaultFolder = store.rootNode.children[0];
|
| - assertTrue(defaultFolder.isSelectedFolder);
|
| - assertEquals(defaultFolder.id, store.selectedId);
|
| - assertEquals(defaultFolder.children, store.displayedList);
|
| -
|
| - // Search with no bookmarks returned.
|
| - overrideBookmarksSearch([]);
|
| - store.searchTerm = 'asdf';
|
| - assertEquals(0, store.displayedList.length);
|
| - });
|
| -
|
| - //////////////////////////////////////////////////////////////////////////////
|
| - // selection tests:
|
| -
|
| - test('single select selects the correct bookmark', function() {
|
| - for (var id in store.idToNodeMap_)
|
| - assertFalse(store.idToNodeMap_[id].isSelectedItem);
|
| -
|
| - store.fire('select-item', {item: store.idToNodeMap_['2']});
|
| - assertDeepEquals(
|
| - [true, false, false, false],
|
| - store.displayedList.map(i => i.isSelectedItem));
|
| - assertEquals(0, store.anchorIndex_);
|
| -
|
| - // Select other item will remove the previous selection.
|
| - store.fire('select-item', {item: store.idToNodeMap_['3']});
|
| - assertDeepEquals(
|
| - [false, true, false, false],
|
| - store.displayedList.map(i => i.isSelectedItem));
|
| - assertEquals(1, store.anchorIndex_);
|
| -
|
| - // Deleting the selected item will unselect everything.
|
| - store.selectedId = '1';
|
| - store.fire('select-item', {item: store.idToNodeMap_['2']});
|
| - removeChild(TEST_TREE.children[0], 0);
|
| - overrideBookmarksGetSubTree([TEST_TREE.children[0]]);
|
| - store.onBookmarkRemoved_('2', {parentId: '1', index: 0});
|
| - assertDeepEquals(
|
| - [false, false, false],
|
| - store.displayedList.map(i => i.isSelectedItem));
|
| - assertEquals(null, store.anchorIndex_);
|
| -
|
| - // Changing the selected folder will remove the select status of the
|
| - // bookmark.
|
| - store.selectedId = '3';
|
| - assertDeepEquals(
|
| - [false, false, false],
|
| - store.idToNodeMap_['1'].children.map(i => i.isSelectedItem));
|
| - assertEquals(null, store.anchorIndex_);
|
| - });
|
| -
|
| - test('shift select selects the correct bookmarks', function() {
|
| - // When nothing has been selected, it selects a single item.
|
| - assertEquals(null, store.anchorIndex_);
|
| - store.fire('select-item', {item: store.idToNodeMap_['6'], range: true});
|
| - assertDeepEquals(
|
| - [false, false, true, false],
|
| - store.displayedList.map(i => i.isSelectedItem));
|
| - assertEquals(2, store.anchorIndex_);
|
| -
|
| - // Select an item below the previous selected item.
|
| - store.fire('select-item', {item: store.idToNodeMap_['7'], range: true});
|
| - assertEquals(2, store.anchorIndex_);
|
| - assertDeepEquals(
|
| - [false, false, true, true],
|
| - store.displayedList.map(i => i.isSelectedItem));
|
| -
|
| - // Select an item above the previous selected item.
|
| - store.fire('select-item', {item: store.idToNodeMap_['2'], range: true});
|
| - assertEquals(2, store.anchorIndex_);
|
| - assertDeepEquals(
|
| - [true, true, true, false],
|
| - store.displayedList.map(i => i.isSelectedItem));
|
| - });
|
| -
|
| - test('ctrl select selects the correct bookmarks', function() {
|
| - // When nothing has been selected, it selects a single item.
|
| - assertEquals(null, store.anchorIndex_);
|
| - store.fire('select-item', {item: store.idToNodeMap_['6'], add: true});
|
| - assertDeepEquals(
|
| - [false, false, true, false],
|
| - store.displayedList.map(i => i.isSelectedItem));
|
| - assertEquals(2, store.anchorIndex_);
|
| -
|
| - // Select a new item will not deselect the previous item, but will update
|
| - // anchorIndex_.
|
| - store.fire('select-item', {item: store.idToNodeMap_['2'], add: true});
|
| - assertDeepEquals(
|
| - [true, false, true, false],
|
| - store.displayedList.map(i => i.isSelectedItem));
|
| - assertEquals(0, store.anchorIndex_);
|
| - });
|
| -
|
| - test('shift + ctrl select selects the correct bookmarks', function() {
|
| - store.fire('select-item', {item: store.displayedList[0]});
|
| - store.fire(
|
| - 'select-item', {item: store.displayedList[2], add: true, range: false});
|
| - store.fire(
|
| - 'select-item', {item: store.displayedList[3], add: true, range: true});
|
| - assertDeepEquals(
|
| - [true, false, true, true],
|
| - store.displayedList.map(i => i.isSelectedItem));
|
| - assertEquals(2, store.anchorIndex_);
|
| - });
|
| -
|
| - test('selection in search mode', function() {
|
| - // Item gets unselected in search.
|
| - overrideBookmarksSearch([
|
| - createItem('4', {url: 'link4'}),
|
| - createItem('2', {url: 'link2'}),
|
| - createItem('5', {url: 'link5'}),
|
| - ]);
|
| -
|
| - store.selectedId = '1';
|
| - store.fire('select-item', {item: store.idToNodeMap_['3']});
|
| - store.searchTerm = 'a';
|
| - assertFalse(store.idToNodeMap_['3'].isSelectedItem);
|
| - assertEquals(null, store.anchorIndex_);
|
| -
|
| - // anchorIndex_ gets updated properly in single select.
|
| - store.fire('select-item', {item: store.displayedList[1]});
|
| - assertDeepEquals(
|
| - [false, true, false],
|
| - store.displayedList.map(i => i.isSelectedItem));
|
| - assertEquals(1, store.anchorIndex_);
|
| -
|
| - // anchorIndex_ gets updated properly in ctrl select.
|
| - store.fire('select-item', {item: store.displayedList[0], add: true});
|
| - assertDeepEquals(
|
| - [true, true, false],
|
| - store.displayedList.map(i => i.isSelectedItem));
|
| - assertEquals(0, store.anchorIndex_);
|
| -
|
| - // Deleting the selected item will unselect everything.
|
| - store.fire('select-item', {item: store.displayedList[1]});
|
| - overrideBookmarksSearch([
|
| - createItem('4', {url: 'link4'}),
|
| - createItem('5', {url: 'link5'}),
|
| - ]);
|
| - removeChild(TEST_TREE.children[0], 0);
|
| - overrideBookmarksGetSubTree([TEST_TREE.children[0]]);
|
| -
|
| - store.onBookmarkRemoved_('2', {parentId: '1', index: 0});
|
| - assertDeepEquals(
|
| - [false, false],
|
| - store.displayedList.map(i => i.isSelectedItem));
|
| - assertEquals(null, store.anchorIndex_);
|
| -
|
| - // Shift+Ctrl select selects the right items.
|
| - overrideBookmarksSearch([
|
| - createItem('4', {url: 'link4'}),
|
| - createFolder('3', []),
|
| - createItem('5', {url: 'link5'}),
|
| - createItem('6', {url: 'link4'}),
|
| - createItem('7', {url: 'link5'}),
|
| - ]);
|
| - store.searchTerm = 'b';
|
| - store.fire('select-item', {item: store.displayedList[0]});
|
| - store.fire(
|
| - 'select-item', {item: store.displayedList[2], add: true, range: false});
|
| - store.fire(
|
| - 'select-item', {item: store.displayedList[4], add: true, range: true});
|
| - assertDeepEquals(
|
| - [true, false, true, true, true],
|
| - store.displayedList.map(i => i.isSelectedItem));
|
| - assertEquals(2, store.anchorIndex_);
|
| - });
|
| -});
|
|
|