diff options
Diffstat (limited to 'tests/unit/tabs')
-rw-r--r-- | tests/unit/tabs/tabs.html | 14 | ||||
-rw-r--r-- | tests/unit/tabs/tabs_core.js | 16 | ||||
-rw-r--r-- | tests/unit/tabs/tabs_defaults.js | 9 | ||||
-rw-r--r-- | tests/unit/tabs/tabs_defaults_deprecated.js | 23 | ||||
-rw-r--r-- | tests/unit/tabs/tabs_deprecated.html | 14 | ||||
-rw-r--r-- | tests/unit/tabs/tabs_methods.js | 61 | ||||
-rw-r--r-- | tests/unit/tabs/tabs_options.js | 14 | ||||
-rw-r--r-- | tests/unit/tabs/tabs_tickets.js | 62 |
8 files changed, 77 insertions, 136 deletions
diff --git a/tests/unit/tabs/tabs.html b/tests/unit/tabs/tabs.html index c800894ff..bba0e8a58 100644 --- a/tests/unit/tabs/tabs.html +++ b/tests/unit/tabs/tabs.html @@ -30,7 +30,19 @@ function tabs_state( tabs ) { var expected = $.makeArray( arguments ).slice( 1 ); var actual = tabs.find( ".ui-tabs-nav li" ).map(function() { - return $( this ).hasClass( "ui-state-active" ) ? 1 : 0; + var tab = $( this ), + panel = $( $.ui.tabs.prototype._sanitizeSelector( + "#" + tab.find( "a" ).attr( "aria-controls" ) ) ), + tabIsActive = tab.hasClass( "ui-state-active" ), + panelIsActive = panel.is( ":visible" ); + + if ( tabIsActive && panelIsActive ) { + return 1; + } + if ( !tabIsActive && !panelIsActive ) { + return 0; + } + return -1; // mixed state - invalid }).get(); same( actual, expected ); } diff --git a/tests/unit/tabs/tabs_core.js b/tests/unit/tabs/tabs_core.js index 30d58c254..c9b16e3a8 100644 --- a/tests/unit/tabs/tabs_core.js +++ b/tests/unit/tabs/tabs_core.js @@ -26,6 +26,22 @@ $.each({ }); }); +// #5893 - Sublist in the tab list are considered as tab +test( "nested list", function() { + expect( 1 ); + + var element = $( "#tabs6" ).tabs(); + equals( element.data( "tabs" ).anchors.length, 2, "should contain 2 tab" ); +}); + +test( "disconnected from DOM", function() { + expect( 2 ); + + var element = $( "#tabs1" ).remove().tabs(); + equals( element.find( ".ui-tabs-nav" ).length, 1, "should initialize nav" ); + equals( element.find( ".ui-tabs-panel" ).length, 3, "should initialize panels" ); +}); + test( "aria-controls", function() { expect( 7 ); var element = $( "#tabs1" ).tabs(), diff --git a/tests/unit/tabs/tabs_defaults.js b/tests/unit/tabs/tabs_defaults.js index e15d618de..52b6f8a71 100644 --- a/tests/unit/tabs/tabs_defaults.js +++ b/tests/unit/tabs/tabs_defaults.js @@ -1,13 +1,16 @@ commonWidgetTests( "tabs", { defaults: { - activate: null, active: null, - beforeLoad: null, - beforeActivate: null, collapsible: false, disabled: false, event: "click", fx: null, + + // callbacks + activate: null, + beforeActivate: null, + beforeLoad: null, + create: null, load: null } }); diff --git a/tests/unit/tabs/tabs_defaults_deprecated.js b/tests/unit/tabs/tabs_defaults_deprecated.js index 2d9772c6d..1a56297e9 100644 --- a/tests/unit/tabs/tabs_defaults_deprecated.js +++ b/tests/unit/tabs/tabs_defaults_deprecated.js @@ -1,26 +1,29 @@ commonWidgetTests( "tabs", { defaults: { - activate: null, active: null, - add: null, ajaxOptions: null, - beforeLoad: null, - beforeActivate: null, cache: false, collapsible: false, cookie: null, - disable: null, disabled: false, - enable: null, event: "click", fx: null, idPrefix: "ui-tabs-", - load: null, panelTemplate: "<div></div>", + spinner: "<em>Loading…</em>", + tabTemplate: "<li><a href='#{href}'><span>#{label}</span></a></li>", + + // callbacks + activate: null, + add: null, + beforeActivate: null, + beforeLoad: null, + create: null, + disable: null, + enable: null, + load: null, remove: null, select: null, - show: null, - spinner: "<em>Loading…</em>", - tabTemplate: "<li><a href='#{href}'><span>#{label}</span></a></li>" + show: null } }); diff --git a/tests/unit/tabs/tabs_deprecated.html b/tests/unit/tabs/tabs_deprecated.html index 54e0c39d6..1fb50352b 100644 --- a/tests/unit/tabs/tabs_deprecated.html +++ b/tests/unit/tabs/tabs_deprecated.html @@ -29,7 +29,19 @@ function tabs_state( tabs ) { var expected = $.makeArray( arguments ).slice( 1 ); var actual = tabs.find( ".ui-tabs-nav li" ).map(function() { - return $( this ).hasClass( "ui-state-active" ) ? 1 : 0; + var tab = $( this ), + panel = $( $.ui.tabs.prototype._sanitizeSelector( + "#" + tab.find( "a" ).attr( "aria-controls" ) ) ), + tabIsActive = tab.hasClass( "ui-state-active" ), + panelIsActive = panel.is( ":visible" ); + + if ( tabIsActive && panelIsActive ) { + return 1; + } + if ( !tabIsActive && !panelIsActive ) { + return 0; + } + return -1; // mixed state - invalid }).get(); same( actual, expected ); } diff --git a/tests/unit/tabs/tabs_methods.js b/tests/unit/tabs/tabs_methods.js index 8fcd2a848..7c72cd26d 100644 --- a/tests/unit/tabs/tabs_methods.js +++ b/tests/unit/tabs/tabs_methods.js @@ -1,61 +1,6 @@ -/* - * tabs_methods.js - */ -(function($) { +(function( $ ) { -module("tabs: methods"); - -test('init', function() { - expect(9); - - el = $('#tabs1').tabs(); - - ok(true, '.tabs() called on element'); - ok( el.is('.ui-tabs.ui-widget.ui-widget-content.ui-corner-all'), 'attach classes to container'); - ok( $('ul', el).is('.ui-tabs-nav.ui-helper-reset.ui-helper-clearfix.ui-widget-header.ui-corner-all'), 'attach classes to list' ); - ok( $('div:eq(0)', el).is('.ui-tabs-panel.ui-widget-content.ui-corner-bottom'), 'attach classes to panel' ); - ok( $('li:eq(0)', el).is('.ui-tabs-active.ui-state-active.ui-corner-top'), 'attach classes to active li'); - ok( $('li:eq(1)', el).is('.ui-state-default.ui-corner-top'), 'attach classes to inactive li'); - equals( el.tabs('option', 'active'), 0, 'active option set' ); - equals( $('li', el).index( $('li.ui-tabs-active', el) ), 0, 'second tab active'); - equals( $('div', el).index( $('div:hidden', '#tabs1') ), 1, 'second panel should be hidden' ); -}); - -test('init with hash', function() { - expect(5); - - //set a hash in the url - location.hash = '#fragment-2'; - - //selection of tab with divs ordered differently than list - el = $('#tabs1').tabs(); - - equals(el.tabs('option', 'active'), 1, 'second tab should be active'); - - ok(!$('#tabs1 ul li:eq(0)').is('.ui-tabs-active.ui-state-active'), 'first tab should not be selected nor active'); - ok($('#tabs1 div:eq(0)').is(':hidden'), 'first div for first tab should be hidden'); - - ok($('#tabs1 ul li:eq(1)').is('.ui-tabs-active.ui-state-active'), 'second tab should be selected and active'); - ok(!$('#tabs1 div:eq(1)').is(':hidden'), 'second div for second tab should not be hidden'); -}); - -test('init mismatched order with hash', function() { - expect(5); - - //set a hash in the url - location.hash = '#tabs7-2'; - - //selection of tab with divs ordered differently than list - el = $('#tabs7').tabs(); - - equals(el.tabs('option', 'active'), 1, 'second tab should be active'); - - ok(!$('#tabs7-list li:eq(0)').is('.ui-tabs-active.ui-state-active'), 'first tab should not be selected nor active'); - ok($('#tabs7 div:eq(1)').is(':hidden'), 'second div for first tab should be hidden'); - - ok($('#tabs7-list li:eq(1)').is('.ui-tabs-active.ui-state-active'), 'second tab should be selected and active'); - ok(!$('#tabs7 div:eq(0)').is(':hidden'), 'first div for second tab should not be hidden'); -}); +module( "tabs: methods" ); test('destroy', function() { expect(6); @@ -162,4 +107,4 @@ test('load', function() { ok(false, "missing test - untested code is broken code."); }); -})(jQuery); +}( jQuery ) ); diff --git a/tests/unit/tabs/tabs_options.js b/tests/unit/tabs/tabs_options.js index 3cce96e1c..884a566c6 100644 --- a/tests/unit/tabs/tabs_options.js +++ b/tests/unit/tabs/tabs_options.js @@ -10,10 +10,11 @@ test( "{ active: default }", function() { tabs_state( element, 1, 0, 0 ); element.tabs( "destroy" ); - window.location.hash = "#fragment-3"; + location.hash = "#fragment-3"; element = $( "#tabs1" ).tabs(); equals( element.tabs( "option", "active" ), 2, "should be 2 based on URL" ); tabs_state( element, 0, 0, 1 ); + element.tabs( "destroy" ); }); test( "{ active: false }", function() { @@ -83,6 +84,17 @@ if ( $.uiBackCompat === false ) { }); } +test( "active - mismatched tab/panel order", function() { + expect( 3 ); + + location.hash = "#tabs7-2"; + var element = $( "#tabs7" ).tabs(); + equals( element.tabs( "option", "active" ), 1, "should be 1 based on URL" ); + tabs_state( element, 0, 1 ); + element.tabs( "option", "active", 0 ); + tabs_state( element, 1, 0 ); +}); + test( "{ collapsible: false }", function() { expect( 4 ); diff --git a/tests/unit/tabs/tabs_tickets.js b/tests/unit/tabs/tabs_tickets.js index d65f0285a..d7a59cb5b 100644 --- a/tests/unit/tabs/tabs_tickets.js +++ b/tests/unit/tabs/tabs_tickets.js @@ -5,39 +5,6 @@ module("tabs: tickets"); -test('#2715 - id containing colon', function() { - // http://dev.jqueryui.com/ticket/2715 - expect(4); - - el = $('#tabs2').tabs(); - ok( $('div.ui-tabs-panel:eq(0)', '#tabs2').is(':visible'), 'first panel should be visible' ); - ok( $('div.ui-tabs-panel:eq(1)', '#tabs2').is(':hidden'), 'second panel should be hidden' ); - - el.tabs('option', 'active', 1).tabs('option', 'active', 0); - ok( $('div.ui-tabs-panel:eq(0)', '#tabs2').is(':visible'), 'first panel should be visible' ); - ok( $('div.ui-tabs-panel:eq(1)', '#tabs2').is(':hidden'), 'second panel should be hidden' ); - -}); - -test('#???? - panel containing inline style', function() { - expect(3); - - var inlineStyle = function(property) { - return $('#inline-style')[0].style[property]; - }; - var expected = inlineStyle('height'); - - el = $('#tabs2').tabs(); - equals(inlineStyle('height'), expected, 'init should not remove inline style'); - - el.tabs('option', 'active', 1); - equals(inlineStyle('height'), expected, 'show tab should not remove inline style'); - - el.tabs('option', 'active', 0); - equals(inlineStyle('height'), expected, 'hide tab should not remove inline style'); - -}); - test('#3627 - Ajax tab with url containing a fragment identifier fails to load', function() { // http://dev.jqueryui.com/ticket/3627 expect(1); @@ -67,33 +34,4 @@ test('#4033 - IE expands hash to full url and misinterprets tab as ajax', functi equals($('a', el).attr('aria-controls'), 'tab', 'aria-contorls attribute is correct'); }); -test('#5893 - Sublist in the tab list are considered as tab', function() { - // http://dev.jqueryui.com/ticket/5893 - expect(1); - - el = $('#tabs6').tabs(); - equals(el.data("tabs").anchors.length, 2, 'should contain 2 tab'); - -}); - -test('#6710 - selectors are global', function() { - // http://bugs.jqueryui.com/ticket/6710 - expect(1); - - var container = $('\ - <div>\ - <div id="tabs_6710">\ - <ul>\ - <li><a href="#tabs-1_6710">Nunc tincidunt</a></li>\ - <li><a href="#tabs-2_6710">Proin dolor</a></li>\ - </ul>\ - <div id="tabs-1_6710"> <p>first</p> </div>\ - <div id="tabs-2_6710"> <p>second</p>\ - </div>\ - </div>'); - container.find('#tabs_6710').tabs(); - ok( container.find('#tabs-2_6710').is(':hidden'), 'should find panels and add corresponding classes' ); -}); - - })(jQuery); |