blob: e8b8cbe0843121221dd83320baf68af7737645f5 [file] [log] [blame]
// 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()));
}