blob: 6a97b8a3b240d80aa00df26014c9e192600d5dde [file] [log] [blame]
// Copyright 2015 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.
'use strict';
let menu = null;
let submenu = null;
let separator = null;
document.write(`
<command id="share" label="Share"></command>
<command id="manage-in-drive" label="Manage in Drive"></command>
<command id="toggle-pinned" label="Toggle pinned"></command>
<command id="remove-folder-shortcut" label="Remove folder shortcut">
</command>
<cr-menu id="menu">
<hr id="actions-separator" hidden>
</cr-menu>`);
function queryRequiredElement(selectors, opt_context) {
const element = (opt_context || document).querySelector(selectors);
return assertInstanceof(
element, HTMLElement, 'Missing required element: ' + selectors);
}
function setUp() {
menu = util.queryDecoratedElement('#menu', cr.ui.Menu);
separator = queryRequiredElement('#actions-separator', menu);
submenu = new ActionsSubmenu(menu);
}
function tearDown() {
const items = document.querySelectorAll('#menu cr-menu-item');
for (let i = 0; i < items.length; i++) {
items[i].parentNode.removeChild(items[i]);
}
separator.hidden = true;
}
function testSeparator() {
assertTrue(separator.hidden);
submenu.setActionsModel(
new MockActionsModel({id: new MockActionModel('title', null)}));
assertFalse(separator.hidden);
submenu.setActionsModel(new MockActionsModel([]));
assertTrue(separator.hidden);
}
function testNullModel() {
submenu.setActionsModel(
new MockActionsModel({id: new MockActionModel('title', null)}));
let item = menu.querySelector('cr-menu-item');
assertTrue(!!item);
submenu.setActionsModel(null);
item = menu.querySelector('cr-menu-item');
assertFalse(!!item);
}
function testCustomActionRendering() {
submenu.setActionsModel(
new MockActionsModel({id: new MockActionModel('title', null)}));
const item = menu.querySelector('cr-menu-item');
assertTrue(!!item);
assertEquals('title', item.textContent);
assertEquals(null, item.command);
}
function testCommandActionRendering() {
submenu.setActionsModel(new MockActionsModel(
{SHARE: new MockActionModel('share with me!', null)}));
const item = menu.querySelector('cr-menu-item');
assertTrue(!!item);
assertEquals('Share', item.textContent);
assertEquals('share', item.command.id);
}