blob: 9ac2e0ba3570806cee0a386910ea6cc07a5977e8 [file] [log] [blame]
// Copyright 2017 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-toolbar>', function() {
let toolbar;
let store;
let commandManager;
suiteSetup(function() {
chrome.bookmarkManagerPrivate.removeTrees = function() {};
});
setup(function() {
const nodes = testTree(createFolder('1', [
createItem('2'),
createItem('3'),
createFolder('4', [], {unmodifiable: 'managed'}),
createFolder('5', []),
createFolder(
'6',
[
createItem('61'),
createItem('62'),
]),
]));
store = new bookmarks.TestStore({
nodes: nodes,
folderOpenState: getAllFoldersOpenState(nodes),
selection: {
items: new Set(),
anchor: null,
},
});
store.replaceSingleton();
toolbar = document.createElement('bookmarks-toolbar');
replaceBody(toolbar);
commandManager = new TestCommandManager();
document.body.appendChild(commandManager);
});
test('selecting multiple items shows toolbar overlay', function() {
assertFalse(toolbar.showSelectionOverlay);
store.data.selection.items = new Set(['2']);
store.notifyObservers();
assertFalse(toolbar.showSelectionOverlay);
store.data.selection.items = new Set(['2', '3']);
store.notifyObservers();
assertTrue(toolbar.showSelectionOverlay);
});
test('overlay does not show when editing is disabled', function() {
store.data.prefs.canEdit = false;
store.data.selection.items = new Set(['2', '3']);
store.notifyObservers();
assertFalse(toolbar.showSelectionOverlay);
});
test('clicking overlay delete button triggers a delete command', function() {
store.data.selection.items = new Set(['2', '3']);
store.notifyObservers();
Polymer.dom.flush();
const button = toolbar.$$('cr-toolbar-selection-overlay').deleteButton;
assertFalse(button.disabled);
MockInteractions.tap(button);
commandManager.assertLastCommand(Command.DELETE, ['2', '3']);
});
test('commands do not trigger from the search field', function() {
store.data.selection.items = new Set(['2']);
store.notifyObservers();
const input = toolbar.$$('cr-toolbar').getSearchField().getSearchInput();
const modifier = cr.isMac ? 'meta' : 'ctrl';
MockInteractions.pressAndReleaseKeyOn(input, 67, modifier, 'c');
commandManager.assertLastCommand(null);
});
test('delete button is disabled when items are unmodifiable', function() {
store.data.nodes['3'].unmodifiable = 'managed';
store.data.selection.items = new Set(['2', '3']);
store.notifyObservers();
Polymer.dom.flush();
assertTrue(toolbar.showSelectionOverlay);
assertTrue(
toolbar.$$('cr-toolbar-selection-overlay').deleteButton.disabled);
});
});