From 7779cb05065d3722c65d9a96568cfd4b2e6a3e5f Mon Sep 17 00:00:00 2001 From: conzett Date: Tue, 22 Nov 2011 19:42:52 -0500 Subject: [PATCH] Add tests for tab and tabpanel role generation --- javascripts/tabs.js | 19 ++++++++++----- javascripts/tests/tests.js | 50 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+), 6 deletions(-) diff --git a/javascripts/tabs.js b/javascripts/tabs.js index fa9d128..ab3a692 100644 --- a/javascripts/tabs.js +++ b/javascripts/tabs.js @@ -34,17 +34,18 @@ $(tabs).each(function(index) { - // if there is no aria selected role present, set it to false + var ariaSelected = $(this).attr('aria-selected'); + var id = $(this).attr('id'); - var selectedVar = $(this).attr('aria-selected'); - - if(!selectedVar){ + if(!ariaSelected){ $(this).attr('aria-selected', 'false'); } // add IDs to tabs - $(this).attr('id', 'tab' + index + 1); + if(!id){ + $(this).attr('id', 'tab' + parseInt(index + 1)); + } }); @@ -58,7 +59,13 @@ // add IDs to tab panels $(tabPanels).each(function(index) { - $(this).attr('id', 'tabpanel' + index + 1); + + var id = $(this).attr('id'); + + if(!id){ + $(this).attr('id', 'tabpanel' + parseInt(index + 1)); + } + }); }; diff --git a/javascripts/tests/tests.js b/javascripts/tests/tests.js index e4b2765..1821520 100644 --- a/javascripts/tests/tests.js +++ b/javascripts/tests/tests.js @@ -78,4 +78,54 @@ $(document).ready(function () { }); + test("Tabs and tabpanel ID generation with IDs set by user", function () { + + var tabContainer = $('#qunit-fixture #tab-container'); + $(tabContainer).find("ul li:nth-child(2)").attr('id', 'something'); + $(tabContainer).children().not('ul').first().attr('id', 'else'); + var tabList = $(tabContainer).find('> ul'); + var tabs = tabList.find('li'); + var tabPanels = $(tabContainer).children().not('ul'); + tabContainer.skeletonTabs(); + + equal($(tabList).find(':nth-child(2)').attr('id'), + 'something', + 'Expect 2nd tab id role to be "something"'); + + equal($(tabPanels).first().attr('id'), + 'else', + 'Expect 2nd tab id role to be "else"'); + + }); + + test("Tab role generation", function () { + + var tabContainer = $('#qunit-fixture #tab-container'); + var tabList = $(tabContainer).find('> ul'); + var tabs = tabList.find('li'); + tabContainer.skeletonTabs(); + + $(tabs).each(function(index) { + equals($(this).attr('role'), + 'tab', + 'Expect tab at position ' + index + ' to have an id'); + }); + + }); + + test("Tabpanel role generation", function () { + + var tabContainer = $('#qunit-fixture #tab-container'); + var tabList = $(tabContainer).find('> ul'); + var tabPanels = $(tabContainer).children().not('ul'); + tabContainer.skeletonTabs(); + + $(tabPanels).each(function(index) { + equals($(this).attr('role'), + 'tabpanel', + 'Expect tab panel at position ' + index + ' to have an id'); + }); + + }); + }); \ No newline at end of file