aboutsummaryrefslogtreecommitdiffstats
path: root/tests/unit/tabs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/unit/tabs')
-rw-r--r--tests/unit/tabs/tabs.html14
-rw-r--r--tests/unit/tabs/tabs_core.js16
-rw-r--r--tests/unit/tabs/tabs_defaults.js9
-rw-r--r--tests/unit/tabs/tabs_defaults_deprecated.js23
-rw-r--r--tests/unit/tabs/tabs_deprecated.html14
-rw-r--r--tests/unit/tabs/tabs_methods.js61
-rw-r--r--tests/unit/tabs/tabs_options.js14
-rw-r--r--tests/unit/tabs/tabs_tickets.js62
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&#8230;</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&#8230;</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);