122 lines
3.3 KiB
JavaScript
122 lines
3.3 KiB
JavaScript
// Copyright 2015 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.ModalAriaVisibilityHelperTest');
|
|
goog.setTestOnly('goog.ui.ModalAriaVisibilityHelperTest');
|
|
|
|
goog.require('goog.a11y.aria');
|
|
goog.require('goog.a11y.aria.State');
|
|
goog.require('goog.dom');
|
|
goog.require('goog.string');
|
|
goog.require('goog.testing.jsunit');
|
|
goog.require('goog.ui.ModalAriaVisibilityHelper');
|
|
|
|
|
|
function tearDown() {
|
|
clearAriaState('div-1');
|
|
clearAriaState('div-2');
|
|
clearAriaState('div-4');
|
|
}
|
|
|
|
|
|
function testHide() {
|
|
var helper = createHelper('div-1');
|
|
helper.setBackgroundVisibility(true /* hide */);
|
|
|
|
assertUnalteredElements();
|
|
assertEmptyAriaHiddenState('div-1');
|
|
assertAriaHiddenState('div-2', 'true');
|
|
assertAriaHiddenState('div-4', 'true');
|
|
}
|
|
|
|
|
|
function testUnhide() {
|
|
var helper = createHelper('div-1');
|
|
helper.setBackgroundVisibility(false /* hide */);
|
|
|
|
assertUnalteredElements();
|
|
assertEmptyAriaHiddenState('div-1');
|
|
assertEmptyAriaHiddenState('div-2');
|
|
assertEmptyAriaHiddenState('div-4');
|
|
}
|
|
|
|
|
|
function testMultipleCalls() {
|
|
var helper = createHelper('div-2');
|
|
helper.setBackgroundVisibility(true /* hide */);
|
|
|
|
assertUnalteredElements();
|
|
assertAriaHiddenState('div-1', 'true');
|
|
assertEmptyAriaHiddenState('div-2');
|
|
assertAriaHiddenState('div-4', 'true');
|
|
|
|
helper.setBackgroundVisibility(false /* hide */);
|
|
|
|
assertUnalteredElements();
|
|
assertEmptyAriaHiddenState('div-1');
|
|
assertEmptyAriaHiddenState('div-2');
|
|
assertEmptyAriaHiddenState('div-4');
|
|
|
|
helper.setBackgroundVisibility(true /* hide */);
|
|
|
|
assertUnalteredElements();
|
|
assertAriaHiddenState('div-1', 'true');
|
|
assertEmptyAriaHiddenState('div-2');
|
|
assertAriaHiddenState('div-4', 'true');
|
|
}
|
|
|
|
|
|
function assertUnalteredElements() {
|
|
assertEmptyAriaHiddenState('div-2-1');
|
|
assertAriaHiddenState('div-3', 'false');
|
|
assertAriaHiddenState('div-5', 'true');
|
|
}
|
|
|
|
|
|
/**
|
|
* @param {string} id Id of the element.
|
|
* @return {!goog.ui.ModalAriaVisibilityHelper}
|
|
*/
|
|
function createHelper(id) {
|
|
return new goog.ui.ModalAriaVisibilityHelper(goog.dom.getElement(id),
|
|
goog.dom.getDomHelper());
|
|
}
|
|
|
|
|
|
function clearAriaState(id) {
|
|
goog.a11y.aria.removeState(goog.dom.getElement(id),
|
|
goog.a11y.aria.State.HIDDEN);
|
|
}
|
|
|
|
|
|
/**
|
|
* @param {string} id Id of the element.
|
|
*/
|
|
function assertEmptyAriaHiddenState(id) {
|
|
var element = goog.dom.getElement(id);
|
|
assertTrue(goog.string.isEmptyOrWhitespace(goog.string.makeSafe(
|
|
goog.a11y.aria.getState(element, goog.a11y.aria.State.HIDDEN))));
|
|
}
|
|
|
|
|
|
/**
|
|
* @param {string} id Id of the element.
|
|
* @param {string} expectedState
|
|
*/
|
|
function assertAriaHiddenState(id, expectedState) {
|
|
var element = goog.dom.getElement(id);
|
|
assertEquals(expectedState,
|
|
goog.a11y.aria.getState(element, goog.a11y.aria.State.HIDDEN));
|
|
}
|