Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6377)

Unified Diff: chrome/test/data/webui/md_bookmarks/store_test.js

Issue 2639453002: [MD Bookmarks] Add Select for Bookmarks. (Closed)
Patch Set: Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..9f3f9943159940f6ec5d122d910b302329804393 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,37 +166,33 @@ 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);
@@ -200,7 +202,27 @@ suite('<bookmarks-store>', function() {
callback(EMPTY_RESULT);
angelayang 2017/01/17 00:46:51 cool we can make this: callback([]) and remove EMP
};
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 +244,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_);
+ });
});

Powered by Google App Engine
This is Rietveld 408576698