// Copyright 2008 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.TabRendererTest'); goog.setTestOnly('goog.ui.TabRendererTest'); goog.require('goog.a11y.aria.Role'); goog.require('goog.dom'); goog.require('goog.dom.classlist'); goog.require('goog.testing.dom'); goog.require('goog.testing.jsunit'); goog.require('goog.testing.ui.rendererasserts'); goog.require('goog.ui.Tab'); goog.require('goog.ui.TabRenderer'); var sandbox; var renderer; var tab; function setUp() { sandbox = goog.dom.getElement('sandbox'); renderer = goog.ui.TabRenderer.getInstance(); tab = new goog.ui.Tab('Hello'); } function tearDown() { tab.dispose(); goog.dom.removeChildren(sandbox); } function testConstructor() { assertNotNull('Renderer must not be null', renderer); } function testGetCssClass() { assertEquals( 'CSS class must have expected value', goog.ui.TabRenderer.CSS_CLASS, renderer.getCssClass()); } function testGetAriaRole() { assertEquals( 'ARIA role must have expected value', goog.a11y.aria.Role.TAB, renderer.getAriaRole()); } function testCreateDom() { var element = renderer.createDom(tab); assertNotNull('Element must not be null', element); goog.testing.dom.assertHtmlMatches( '
Hello
', goog.dom.getOuterHtml(element)); } function testCreateDomWithTooltip() { tab.setTooltip('Hello, world!'); var element = renderer.createDom(tab); assertNotNull('Element must not be null', element); assertEquals( 'Element must have expected tooltip', 'Hello, world!', renderer.getTooltip(element)); } function testRender() { tab.setRenderer(renderer); tab.render(); var element = tab.getElementStrict(); assertNotNull('Element must not be null', element); assertEquals( 'aria-selected should be false', 'false', element.getAttribute('aria-selected')); } function testDecorate() { sandbox.innerHTML = '
Foo
\n' + '
Bar
'; var foo = renderer.decorate(tab, goog.dom.getElement('foo')); assertNotNull('Decorated element must not be null', foo); assertSameElements( 'Decorated element must have expected class', ['goog-tab'], goog.dom.classlist.get(foo)); assertEquals( 'Decorated tab must have expected content', 'Foo', tab.getContent().nodeValue); assertUndefined('Decorated tab must not have tooltip', tab.getTooltip()); assertEquals( 'Decorated element must not have title', '', renderer.getTooltip(foo)); var bar = renderer.decorate(tab, goog.dom.getElement('bar')); assertNotNull('Decorated element must not be null', bar); assertSameElements( 'Decorated element must have expected class', ['goog-tab'], goog.dom.classlist.get(bar)); assertEquals( 'Decorated tab must have expected content', 'Bar', tab.getContent().nodeValue); assertEquals( 'Decorated tab must have expected tooltip', 'Yes', tab.getTooltip()); assertEquals( 'Decorated element must have expected title', 'Yes', renderer.getTooltip(bar)); } function testGetTooltip() { sandbox.innerHTML = '
Foo
\n' + '
Bar
\n' + '
Baz
'; assertEquals( 'getTooltip() must return empty string for no title', '', renderer.getTooltip(goog.dom.getElement('foo'))); assertEquals( 'getTooltip() must return empty string for empty title', '', renderer.getTooltip(goog.dom.getElement('bar'))); assertEquals( 'Tooltip must have expected value', 'BazTitle', renderer.getTooltip(goog.dom.getElement('baz'))); } function testSetTooltip() { sandbox.innerHTML = '
Foo
'; var element = goog.dom.getElement('foo'); renderer.setTooltip(null, null); // Must not error. renderer.setTooltip(element, null); assertEquals('Tooltip must be the empty string', '', element.title); renderer.setTooltip(element, ''); assertEquals('Tooltip must be the empty string', '', element.title); renderer.setTooltip(element, 'Foo'); assertEquals('Tooltip must have expected value', 'Foo', element.title); } function testDoesntCallGetCssClassInConstructor() { goog.testing.ui.rendererasserts.assertNoGetCssClassCallsInConstructor( goog.ui.TabRenderer); }