93 lines
3.3 KiB
JavaScript
93 lines
3.3 KiB
JavaScript
// Copyright 2014 The Closure Library Authors. All Rights Reserved.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS-IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
goog.provide('goog.ui.ToolbarTest');
|
|
goog.setTestOnly('goog.ui.ToolbarTest');
|
|
|
|
goog.require('goog.a11y.aria');
|
|
goog.require('goog.dom');
|
|
goog.require('goog.events.EventType');
|
|
goog.require('goog.testing.events');
|
|
goog.require('goog.testing.events.Event');
|
|
goog.require('goog.testing.jsunit');
|
|
goog.require('goog.ui.Toolbar');
|
|
goog.require('goog.ui.ToolbarMenuButton');
|
|
|
|
var toolbar;
|
|
var toolbarWrapper;
|
|
var buttons;
|
|
|
|
function setUp() {
|
|
toolbar = new goog.ui.Toolbar();
|
|
toolbarWrapper = goog.dom.getElement('toolbar-wrapper');
|
|
|
|
// Render and populate the toolbar.
|
|
toolbar.render(toolbarWrapper);
|
|
var toolbarElem = toolbar.getElement();
|
|
var button1 = new goog.ui.ToolbarMenuButton('button 1');
|
|
var button2 = new goog.ui.ToolbarMenuButton('button 2');
|
|
var button3 = new goog.ui.ToolbarMenuButton('button 3');
|
|
button1.render(toolbarElem);
|
|
button2.render(toolbarElem);
|
|
button3.render(toolbarElem);
|
|
toolbar.addChild(button1);
|
|
toolbar.addChild(button2);
|
|
toolbar.addChild(button3);
|
|
buttons = [button1, button2, button3];
|
|
}
|
|
|
|
function tearDown() {
|
|
toolbar.dispose();
|
|
}
|
|
|
|
function testHighlightFirstOnFocus() {
|
|
var firstButton = buttons[0];
|
|
|
|
// Verify that focusing the toolbar via the keyboard (i.e. no click event)
|
|
// highlights the first item and sets it as the active descendant.
|
|
goog.testing.events.fireFocusEvent(toolbar.getElement());
|
|
assertEquals(0, toolbar.getHighlightedIndex());
|
|
assertTrue(firstButton.isHighlighted());
|
|
assertEquals(
|
|
firstButton.getElement(),
|
|
goog.a11y.aria.getActiveDescendant(toolbar.getElement()));
|
|
|
|
// Verify that removing focus unhighlights the first item and removes it as
|
|
// the active descendant.
|
|
goog.testing.events.fireBlurEvent(toolbar.getElement());
|
|
assertEquals(-1, toolbar.getHighlightedIndex());
|
|
assertNull(goog.a11y.aria.getActiveDescendant(toolbar.getElement()));
|
|
assertFalse(firstButton.isHighlighted());
|
|
}
|
|
|
|
function testHighlightSelectedOnClick() {
|
|
var firstButton = buttons[0];
|
|
var secondButton = buttons[1];
|
|
|
|
// Verify that mousing over and clicking on a toolbar button selects only the
|
|
// correct item.
|
|
var mouseover = new goog.testing.events.Event(
|
|
goog.events.EventType.MOUSEOVER, secondButton.getElement());
|
|
goog.testing.events.fireBrowserEvent(mouseover);
|
|
var mousedown = new goog.testing.events.Event(
|
|
goog.events.EventType.MOUSEDOWN, toolbar.getElement());
|
|
goog.testing.events.fireBrowserEvent(mousedown);
|
|
assertEquals(1, toolbar.getHighlightedIndex());
|
|
assertTrue(secondButton.isHighlighted());
|
|
assertFalse(firstButton.isHighlighted());
|
|
assertEquals(
|
|
secondButton.getElement(),
|
|
goog.a11y.aria.getActiveDescendant(toolbar.getElement()));
|
|
}
|