| // Copyright 2013 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.CharPickerTest'); |
| goog.setTestOnly('goog.ui.CharPickerTest'); |
| |
| goog.require('goog.a11y.aria'); |
| goog.require('goog.a11y.aria.State'); |
| goog.require('goog.dispose'); |
| goog.require('goog.dom'); |
| goog.require('goog.events.Event'); |
| goog.require('goog.events.EventType'); |
| goog.require('goog.i18n.CharPickerData'); |
| goog.require('goog.i18n.uChar.NameFetcher'); |
| goog.require('goog.testing.MockControl'); |
| goog.require('goog.testing.events'); |
| goog.require('goog.testing.jsunit'); |
| goog.require('goog.testing.mockmatchers'); |
| goog.require('goog.ui.CharPicker'); |
| goog.require('goog.ui.FlatButtonRenderer'); |
| |
| var charPicker, charPickerData, charPickerElement; |
| var mockControl, charNameFetcherMock; |
| |
| function setUp() { |
| mockControl = new goog.testing.MockControl(); |
| charNameFetcherMock = mockControl.createLooseMock( |
| goog.i18n.uChar.NameFetcher, true /* opt_ignoreUnexpectedCalls */); |
| |
| charPickerData = new goog.i18n.CharPickerData(); |
| charPickerElement = goog.dom.getElement('charpicker'); |
| |
| charPicker = new goog.ui.CharPicker( |
| charPickerData, charNameFetcherMock); |
| } |
| |
| function tearDown() { |
| goog.dispose(charPicker); |
| goog.dom.removeChildren(charPickerElement); |
| mockControl.$tearDown(); |
| } |
| |
| function testAriaLabelIsUpdatedOnFocus() { |
| var character = '←'; |
| var characterName = 'right arrow'; |
| |
| charNameFetcherMock.getName( |
| character, |
| goog.testing.mockmatchers.isFunction). |
| $does(function(c, callback) { |
| callback(characterName); |
| }); |
| |
| mockControl.$replayAll(); |
| |
| charPicker.decorate(charPickerElement); |
| |
| // Get the first button elements within the grid div and override its |
| // char attribute so the test doesn't depend on the actual grid content. |
| var gridElement = goog.dom.getElementByClass( |
| goog.getCssName('goog-char-picker-grid'), charPickerElement); |
| var buttonElement = goog.dom.getElementsByClass( |
| goog.ui.FlatButtonRenderer.CSS_CLASS, gridElement)[0]; |
| buttonElement.setAttribute('char', character); |
| |
| // Trigger a focus event on the button element. |
| goog.testing.events.fireBrowserEvent(new goog.events.Event( |
| goog.events.EventType.FOCUS, buttonElement)); |
| |
| mockControl.$verifyAll(); |
| |
| var ariaLabel = goog.a11y.aria.getState( |
| buttonElement, goog.a11y.aria.State.LABEL); |
| assertEquals('The aria label should be updated when the button' + |
| 'gains focus.', characterName, ariaLabel); |
| } |