aboutsummaryrefslogtreecommitdiffstats
path: root/tests/unit
diff options
context:
space:
mode:
authorScott González <scott.gonzalez@gmail.com>2012-04-19 12:53:06 -0400
committerScott González <scott.gonzalez@gmail.com>2012-04-19 12:53:13 -0400
commit33e93ef7f0aff6b6117177638a94e24e02dbc1be (patch)
tree8d9e4520f3d35391372e0b4986ea32d6fae24444 /tests/unit
parentc16bd7c510cff4e0b01d9c191128af014523da7c (diff)
downloadjquery-ui-33e93ef7f0aff6b6117177638a94e24e02dbc1be.tar.gz
jquery-ui-33e93ef7f0aff6b6117177638a94e24e02dbc1be.zip
Tabs tests: Don't pollute the global namespace with helpers.
Diffstat (limited to 'tests/unit')
-rw-r--r--tests/unit/tabs/tabs.html57
-rw-r--r--tests/unit/tabs/tabs_core.js4
-rw-r--r--tests/unit/tabs/tabs_deprecated.html57
-rw-r--r--tests/unit/tabs/tabs_deprecated.js90
-rw-r--r--tests/unit/tabs/tabs_events.js48
-rw-r--r--tests/unit/tabs/tabs_methods.js87
-rw-r--r--tests/unit/tabs/tabs_options.js71
-rw-r--r--tests/unit/tabs/tabs_test_helpers.js61
8 files changed, 219 insertions, 256 deletions
diff --git a/tests/unit/tabs/tabs.html b/tests/unit/tabs/tabs.html
index fc494e013..7f60ad277 100644
--- a/tests/unit/tabs/tabs.html
+++ b/tests/unit/tabs/tabs.html
@@ -25,68 +25,13 @@
<script src="../../jquery.simulate.js"></script>
<script src="../testsuite.js"></script>
+ <script src="tabs_test_helpers.js"></script>
<script src="tabs_defaults.js"></script>
<script src="tabs_core.js"></script>
<script src="tabs_events.js"></script>
<script src="tabs_methods.js"></script>
<script src="tabs_options.js"></script>
- <script>
- function tabs_state( tabs ) {
- var expected = $.makeArray( arguments ).slice( 1 );
- var actual = tabs.find( ".ui-tabs-nav li" ).map(function() {
- var tab = $( this ),
- panel = $( $.ui.tabs.prototype._sanitizeSelector(
- "#" + tab.find( "a" ).attr( "aria-controls" ) ) ),
- tabIsActive = tab.hasClass( "ui-state-active" ),
- panelIsActive = panel.css( "display" ) !== "none";
-
- if ( tabIsActive && panelIsActive ) {
- return 1;
- }
- if ( !tabIsActive && !panelIsActive ) {
- return 0;
- }
- return -1; // mixed state - invalid
- }).get();
- deepEqual( actual, expected );
- }
-
- function tabs_disabled( tabs, state ) {
- var expected = $.map( new Array( tabs.find ( ".ui-tabs-nav li" ).length ), function( _, index ) {
- if ( typeof state === "boolean" ) {
- return state ? 1 : 0;
- } else {
- return $.inArray( index, state ) !== -1 ? 1 : 0;
- }
- });
-
- var internalState = tabs.tabs( "option", "disabled" );
- if ( internalState === false ) {
- internalState = [];
- }
- if ( internalState === true ) {
- internalState = $.map( new Array( tabs.find( ".ui-tabs-nav li" ).length ), function( _, index ) {
- return index;
- });
- }
-
- var actual = tabs.find( ".ui-tabs-nav li" ).map(function( index ) {
- var tab = $( this ),
- tabIsDisabled = tab.hasClass( "ui-state-disabled" );
-
- if ( tabIsDisabled && $.inArray( index, internalState ) !== -1 ) {
- return 1;
- }
- if ( !tabIsDisabled && $.inArray( index, internalState ) === -1 ) {
- return 0;
- }
- return -1; // mixed state - invalid
- }).get();
- deepEqual( tabs.tabs( "option", "disabled" ), state );
- deepEqual( actual, expected );
- }
- </script>
<script src="../swarminject.js"></script>
</head>
<body>
diff --git a/tests/unit/tabs/tabs_core.js b/tests/unit/tabs/tabs_core.js
index 21250fb33..b9bd81987 100644
--- a/tests/unit/tabs/tabs_core.js
+++ b/tests/unit/tabs/tabs_core.js
@@ -1,5 +1,7 @@
(function( $ ) {
+var state = TestHelpers.tabs.state;
+
module( "tabs: core" );
test( "markup structure", function() {
@@ -89,7 +91,7 @@ test( "#4033 - IE expands hash to full url and misinterprets tab as ajax", funct
});
equal( element.find( ".ui-tabs-nav a" ).attr( "aria-controls" ), "tab", "aria-contorls attribute is correct" );
- tabs_state( element, 1 );
+ state( element, 1 );
});
}( jQuery ) );
diff --git a/tests/unit/tabs/tabs_deprecated.html b/tests/unit/tabs/tabs_deprecated.html
index 410aebc40..c22ec3369 100644
--- a/tests/unit/tabs/tabs_deprecated.html
+++ b/tests/unit/tabs/tabs_deprecated.html
@@ -23,6 +23,7 @@
<script src="../../jquery.simulate.js"></script>
<script src="../testsuite.js"></script>
+ <script src="tabs_test_helpers.js"></script>
<script src="tabs_defaults_deprecated.js"></script>
<script src="tabs_core.js"></script>
<script src="tabs_events.js"></script>
@@ -30,62 +31,6 @@
<script src="tabs_options.js"></script>
<script src="tabs_deprecated.js"></script>
- <script>
- function tabs_state( tabs ) {
- var expected = $.makeArray( arguments ).slice( 1 );
- var actual = tabs.find( ".ui-tabs-nav li" ).map(function() {
- var tab = $( this ),
- panel = $( $.ui.tabs.prototype._sanitizeSelector(
- "#" + tab.find( "a" ).attr( "aria-controls" ) ) ),
- tabIsActive = tab.hasClass( "ui-state-active" ),
- panelIsActive = panel.css( "display" ) !== "none";
-
- if ( tabIsActive && panelIsActive ) {
- return 1;
- }
- if ( !tabIsActive && !panelIsActive ) {
- return 0;
- }
- return -1; // mixed state - invalid
- }).get();
- deepEqual( actual, expected );
- }
-
- function tabs_disabled( tabs, state ) {
- var expected = $.map( new Array( tabs.find ( ".ui-tabs-nav li" ).length ), function( _, index ) {
- if ( typeof state === "boolean" ) {
- return state ? 1 : 0;
- } else {
- return $.inArray( index, state ) !== -1 ? 1 : 0;
- }
- });
-
- var internalState = tabs.tabs( "option", "disabled" );
- if ( internalState === false ) {
- internalState = [];
- }
- if ( internalState === true ) {
- internalState = $.map( new Array( tabs.find( ".ui-tabs-nav li" ).length ), function( _, index ) {
- return index;
- });
- }
-
- var actual = tabs.find( ".ui-tabs-nav li" ).map(function( index ) {
- var tab = $( this ),
- tabIsDisabled = tab.hasClass( "ui-state-disabled" );
-
- if ( tabIsDisabled && $.inArray( index, internalState ) !== -1 ) {
- return 1;
- }
- if ( !tabIsDisabled && $.inArray( index, internalState ) === -1 ) {
- return 0;
- }
- return -1; // mixed state - invalid
- }).get();
- deepEqual( tabs.tabs( "option", "disabled" ), state );
- deepEqual( actual, expected );
- }
- </script>
<script src="../swarminject.js"></script>
</head>
<body>
diff --git a/tests/unit/tabs/tabs_deprecated.js b/tests/unit/tabs/tabs_deprecated.js
index c8f0e2881..8386a13ac 100644
--- a/tests/unit/tabs/tabs_deprecated.js
+++ b/tests/unit/tabs/tabs_deprecated.js
@@ -1,5 +1,7 @@
(function( $ ) {
+var state = TestHelpers.tabs.state;
+
module( "tabs (deprecated): core" );
test( "panel ids", function() {
@@ -48,17 +50,17 @@ asyncTest( "cache", function() {
cache: true
});
element.one( "tabsshow", function( event, ui ) {
- tabs_state( element, 0, 0, 1, 0, 0 );
+ state( element, 0, 0, 1, 0, 0 );
});
element.one( "tabsload", function( event, ui ) {
ok( true, "tabsload" );
setTimeout(function() {
element.tabs( "option", "active", 0 );
- tabs_state( element, 1, 0, 0, 0, 0 );
+ state( element, 1, 0, 0, 0, 0 );
element.one( "tabsshow", function( event, ui ) {
- tabs_state( element, 0, 0, 1, 0, 0 );
+ state( element, 0, 0, 1, 0, 0 );
});
element.one( "tabsload", function( event, ui ) {
ok( false, "should be cached" );
@@ -68,7 +70,7 @@ asyncTest( "cache", function() {
}, 1 );
});
element.tabs( "option", "active", 2 );
- tabs_state( element, 0, 0, 1, 0, 0 );
+ state( element, 0, 0, 1, 0, 0 );
});
test( "idPrefix", function() {
@@ -171,50 +173,50 @@ test( "selected", function() {
var element = $( "#tabs1" ).tabs();
equal( element.tabs( "option", "selected" ), 0, "should be 0 by default" );
- tabs_state( element, 1, 0, 0 );
+ state( element, 1, 0, 0 );
element.tabs( "destroy" );
location.hash = "#fragment-3";
element = $( "#tabs1" ).tabs();
equal( element.tabs( "option", "selected" ), 2, "should be 2 based on URL" );
- tabs_state( element, 0, 0, 1 );
+ state( element, 0, 0, 1 );
element.tabs( "destroy" );
el = $('#tabs1').tabs({
selected: -1,
collapsible: true
});
- tabs_state( element, 0, 0, 0 );
+ state( element, 0, 0, 0 );
equal( element.find( ".ui-tabs-nav .ui-state-active" ).size(), 0, "no tabs selected" );
strictEqual( element.tabs( "option", "selected" ), -1 );
element.tabs( "option", "collapsible", false );
- tabs_state( element, 1, 0, 0 );
+ state( element, 1, 0, 0 );
equal( element.tabs( "option", "selected" ), 0 );
element.tabs( "destroy" );
element.tabs({
selected: -1
});
- tabs_state( element, 1, 0, 0 );
+ state( element, 1, 0, 0 );
strictEqual( element.tabs( "option", "selected" ), 0 );
element.tabs( "destroy" );
element.tabs({ selected: 2 });
equal( element.tabs( "option", "selected" ), 2 );
- tabs_state( element, 0, 0, 1 );
+ state( element, 0, 0, 1 );
element.tabs( "option", "selected", 0 );
equal( element.tabs( "option", "selected" ), 0 );
- tabs_state( element, 1, 0, 0 );
+ state( element, 1, 0, 0 );
element.find( ".ui-tabs-nav a" ).eq( 1 ).click();
equal( element.tabs( "option", "selected" ), 1 );
- tabs_state( element, 0, 1, 0 );
+ state( element, 0, 1, 0 );
element.tabs( "option", "selected", 10 );
equal( element.tabs( "option", "selected" ), 1 );
- tabs_state( element, 0, 1, 0 );
+ state( element, 0, 1, 0 );
location.hash = "#";
});
@@ -237,7 +239,7 @@ asyncTest( "load", function() {
strictEqual( ui.tab, tab[ 0 ], "tab" );
strictEqual( ui.panel, panel[ 0 ], "panel" );
equal( $( ui.panel ).find( "p" ).length, 1, "panel html" );
- tabs_state( element, 0, 0, 1, 0, 0 );
+ state( element, 0, 0, 1, 0, 0 );
tabsload1();
});
element.tabs({ active: 2 });
@@ -253,7 +255,7 @@ asyncTest( "load", function() {
strictEqual( ui.tab, tab[ 0 ], "tab" );
strictEqual( ui.panel, panel[ 0 ], "panel" );
equal( $( ui.panel ).find( "p" ).length, 1, "panel html" );
- tabs_state( element, 0, 0, 0, 1, 0 );
+ state( element, 0, 0, 0, 1, 0 );
tabsload2();
});
element.tabs( "option", "active", 3 );
@@ -270,7 +272,7 @@ asyncTest( "load", function() {
strictEqual( ui.tab, tab[ 0 ], "tab" );
strictEqual( ui.panel, panel[ 0 ], "panel" );
equal( $( ui.panel ).find( "p" ).length, 1, "panel html" );
- tabs_state( element, 0, 0, 0, 0, 1 );
+ state( element, 0, 0, 0, 0, 1 );
start();
});
element.find( ".ui-tabs-nav a" ).eq( 4 ).click();
@@ -325,10 +327,10 @@ test( "show", function() {
strictEqual( ui.tab, tabs[ 0 ], "ui.tab" );
strictEqual( ui.panel, panels[ 0 ], "ui.panel" );
equal( ui.index, 0, "ui.index" );
- tabs_state( element, 1, 0, 0 );
+ state( element, 1, 0, 0 );
});
element.tabs( "option", "active", 0 );
- tabs_state( element, 1, 0, 0 );
+ state( element, 1, 0, 0 );
// switching tabs
element.one( "tabsshow", function( event, ui ) {
@@ -336,17 +338,17 @@ test( "show", function() {
strictEqual( ui.tab, tabs[ 1 ], "ui.tab" );
strictEqual( ui.panel, panels[ 1 ], "ui.panel" );
equal( ui.index, 1, "ui.index" );
- tabs_state( element, 0, 1, 0 );
+ state( element, 0, 1, 0 );
});
tabs.eq( 1 ).click();
- tabs_state( element, 0, 1, 0 );
+ state( element, 0, 1, 0 );
// collapsing
element.one( "tabsshow", function( event, ui ) {
ok( false, "collapsing" );
});
element.tabs( "option", "active", false );
- tabs_state( element, 0, 0, 0 );
+ state( element, 0, 0, 0 );
});
test( "select", function() {
@@ -365,10 +367,10 @@ test( "select", function() {
strictEqual( ui.tab, tabs[ 0 ], "ui.tab" );
strictEqual( ui.panel, panels[ 0 ], "ui.panel" );
equal( ui.index, 0, "ui.index" );
- tabs_state( element, 0, 0, 0 );
+ state( element, 0, 0, 0 );
});
element.tabs( "option", "active", 0 );
- tabs_state( element, 1, 0, 0 );
+ state( element, 1, 0, 0 );
// switching tabs
element.one( "tabsselect", function( event, ui ) {
@@ -376,17 +378,17 @@ test( "select", function() {
strictEqual( ui.tab, tabs[ 1 ], "ui.tab" );
strictEqual( ui.panel, panels[ 1 ], "ui.panel" );
equal( ui.index, 1, "ui.index" );
- tabs_state( element, 1, 0, 0 );
+ state( element, 1, 0, 0 );
});
tabs.eq( 1 ).click();
- tabs_state( element, 0, 1, 0 );
+ state( element, 0, 1, 0 );
// collapsing
element.one( "tabsselect", function( event, ui ) {
ok( false, "collapsing" );
});
element.tabs( "option", "active", false );
- tabs_state( element, 0, 0, 0 );
+ state( element, 0, 0, 0 );
});
module( "tabs (deprecated): methods" );
@@ -396,7 +398,7 @@ test( "add", function() {
var tab, anchor,
element = $( "#tabs1" ).tabs();
- tabs_state( element, 1, 0, 0 );
+ state( element, 1, 0, 0 );
// add without index
element.one( "tabsadd", function( event, ui ) {
@@ -405,7 +407,7 @@ test( "add", function() {
equal( ui.panel.id, "new", "ui.panel" );
});
element.tabs( "add", "#new", "New" );
- tabs_state( element, 1, 0, 0, 0 );
+ state( element, 1, 0, 0, 0 );
tab = element.find( ".ui-tabs-nav li" ).last();
anchor = tab.find( "a" );
equal( tab.text(), "New", "label" );
@@ -415,7 +417,7 @@ test( "add", function() {
anchor.simulate( "mouseover" );
ok( tab.hasClass( "ui-state-hover" ), "hovered" );
anchor.simulate( "click" );
- tabs_state( element, 0, 0, 0, 1 );
+ state( element, 0, 0, 0, 1 );
// add remote tab with index
element.one( "tabsadd", function( event, ui ) {
@@ -424,7 +426,7 @@ test( "add", function() {
equal( ui.panel.id, $( ui.tab ).attr( "aria-controls" ), "ui.panel" );
});
element.tabs( "add", "data/test.html", "New Remote", 1 );
- tabs_state( element, 0, 0, 0, 0, 1 );
+ state( element, 0, 0, 0, 0, 1 );
tab = element.find( ".ui-tabs-nav li" ).eq( 1 );
anchor = tab.find( "a" );
equal( tab.text(), "New Remote", "label" );
@@ -434,7 +436,7 @@ test( "add", function() {
anchor.simulate( "mouseover" );
ok( tab.hasClass( "ui-state-hover" ), "hovered" );
anchor.simulate( "click" );
- tabs_state( element, 0, 1, 0, 0, 0 );
+ state( element, 0, 1, 0, 0, 0 );
// add to empty tab set
element = $( "<div><ul></ul></div>" ).tabs();
@@ -445,7 +447,7 @@ test( "add", function() {
equal( ui.panel.id, "first", "ui.panel" );
});
element.tabs( "add", "#first", "First" );
- tabs_state( element, 1 );
+ state( element, 1 );
equal( element.tabs( "option", "active" ), 0, "active: 0 after add" );
});
@@ -462,7 +464,7 @@ test( "remove", function() {
expect( 17 );
var element = $( "#tabs1" ).tabs({ active: 1 });
- tabs_state( element, 0, 1, 0 );
+ state( element, 0, 1, 0 );
element.one( "tabsremove", function( event, ui ) {
equal( ui.index, -1, "ui.index" );
@@ -470,7 +472,7 @@ test( "remove", function() {
equal( ui.panel.id, "fragment-2", "ui.panel" );
});
element.tabs( "remove", 1 );
- tabs_state( element, 0, 1 );
+ state( element, 0, 1 );
equal( element.tabs( "option", "active" ), 1 );
equal( element.find( ".ui-tabs-nav li a[href$='fragment-2']" ).length, 0,
"remove correct list item" );
@@ -482,7 +484,7 @@ test( "remove", function() {
equal( ui.panel.id, "fragment-3", "ui.panel" );
});
element.tabs( "remove", 1 );
- tabs_state( element, 1 );
+ state( element, 1 );
equal( element.tabs( "option", "active"), 0 );
element.one( "tabsremove", function( event, ui ) {
@@ -498,43 +500,43 @@ test( "select", function() {
expect( 23 );
var element = $( "#tabs1" ).tabs();
- tabs_state( element, 1, 0, 0 );
+ state( element, 1, 0, 0 );
element.tabs( "select", 1 );
- tabs_state( element, 0, 1, 0 );
+ state( element, 0, 1, 0 );
equal( element.tabs( "option", "active" ), 1, "active" );
equal( element.tabs( "option", "selected" ), 1, "selected" );
element.tabs( "destroy" );
element.tabs({ collapsible: true });
- tabs_state( element, 1, 0, 0 );
+ state( element, 1, 0, 0 );
element.tabs( "select", 0 );
- tabs_state( element, 0, 0, 0 );
+ state( element, 0, 0, 0 );
equal( element.tabs( "option", "active" ), false, "active" );
equal( element.tabs( "option", "selected" ), -1, "selected" );
element.tabs( "destroy" );
element.tabs({ collapsible: true });
element.tabs( "select", -1 );
- tabs_state( element, 0, 0, 0 );
+ state( element, 0, 0, 0 );
equal( element.tabs( "option", "active" ), false, "active" );
equal( element.tabs( "option", "selected" ), -1, "selected" );
element.tabs( "destroy" );
element.tabs();
- tabs_state( element, 1, 0, 0 );
+ state( element, 1, 0, 0 );
equal( element.tabs( "option", "active" ), 0, "active" );
equal( element.tabs( "option", "selected" ), 0, "selected" );
element.tabs( "select", 0 );
- tabs_state( element, 1, 0, 0 );
+ state( element, 1, 0, 0 );
equal( element.tabs( "option", "active" ), 0, "active" );
equal( element.tabs( "option", "selected" ), 0, "selected" );
element.tabs( "select", -1 );
- tabs_state( element, 1, 0, 0 );
+ state( element, 1, 0, 0 );
equal( element.tabs( "option", "active" ), 0, "active" );
equal( element.tabs( "option", "selected" ), 0, "selected" );
element.tabs( "select", "#fragment-2" );
- tabs_state( element, 0, 1, 0 );
+ state( element, 0, 1, 0 );
equal( element.tabs( "option", "active" ), 1, "active" );
equal( element.tabs( "option", "selected" ), 1, "selected" );
});
diff --git a/tests/unit/tabs/tabs_events.js b/tests/unit/tabs/tabs_events.js
index 4f9269b62..3f6ec14d0 100644
--- a/tests/unit/tabs/tabs_events.js
+++ b/tests/unit/tabs/tabs_events.js
@@ -1,5 +1,7 @@
(function( $ ) {
+var state = TestHelpers.tabs.state;
+
module( "tabs: events" );
test( "create", function() {
@@ -60,10 +62,10 @@ test( "beforeActivate", function() {
strictEqual( ui.newTab[ 0 ], tabs[ 0 ], "newTab" );
equal( ui.newPanel.size(), 1, "newPanel size" );
strictEqual( ui.newPanel[ 0 ], panels[ 0 ], "newPanel" );
- tabs_state( element, 0, 0, 0 );
+ state( element, 0, 0, 0 );
});
element.tabs( "option", "active", 0 );
- tabs_state( element, 1, 0, 0 );
+ state( element, 1, 0, 0 );
// switching tabs
element.one( "tabsbeforeactivate", function( event, ui ) {
@@ -76,10 +78,10 @@ test( "beforeActivate", function() {
strictEqual( ui.newTab[ 0 ], tabs[ 1 ], "newTab" );
equal( ui.newPanel.size(), 1, "newPanel size" );
strictEqual( ui.newPanel[ 0 ], panels[ 1 ], "newPanel" );
- tabs_state( element, 1, 0, 0 );
+ state( element, 1, 0, 0 );
});
tabs.eq( 1 ).click();
- tabs_state( element, 0, 1, 0 );
+ state( element, 0, 1, 0 );
// collapsing
element.one( "tabsbeforeactivate", function( event, ui ) {
@@ -90,10 +92,10 @@ test( "beforeActivate", function() {
strictEqual( ui.oldPanel[ 0 ], panels[ 1 ], "oldPanel" );
equal( ui.newTab.size(), 0, "newTab size" );
equal( ui.newPanel.size(), 0, "newPanel size" );
- tabs_state( element, 0, 1, 0 );
+ state( element, 0, 1, 0 );
});
element.tabs( "option", "active", false );
- tabs_state( element, 0, 0, 0 );
+ state( element, 0, 0, 0 );
// prevent activation
element.one( "tabsbeforeactivate", function( event, ui ) {
@@ -105,10 +107,10 @@ test( "beforeActivate", function() {
equal( ui.newPanel.size(), 1, "newPanel size" );
strictEqual( ui.newPanel[ 0 ], panels[ 1 ], "newPanel" );
event.preventDefault();
- tabs_state( element, 0, 0, 0 );
+ state( element, 0, 0, 0 );
});
element.tabs( "option", "active", 1 );
- tabs_state( element, 0, 0, 0 );
+ state( element, 0, 0, 0 );
});
test( "activate", function() {
@@ -130,10 +132,10 @@ test( "activate", function() {
strictEqual( ui.newTab[ 0 ], tabs[ 0 ], "newTab" );
equal( ui.newPanel.size(), 1, "newPanel size" );
strictEqual( ui.newPanel[ 0 ], panels[ 0 ], "newPanel" );
- tabs_state( element, 1, 0, 0 );
+ state( element, 1, 0, 0 );
});
element.tabs( "option", "active", 0 );
- tabs_state( element, 1, 0, 0 );
+ state( element, 1, 0, 0 );
// switching tabs
element.one( "tabsactivate", function( event, ui ) {
@@ -146,10 +148,10 @@ test( "activate", function() {
strictEqual( ui.newTab[ 0 ], tabs[ 1 ], "newTab" );
equal( ui.newPanel.size(), 1, "newPanel size" );
strictEqual( ui.newPanel[ 0 ], panels[ 1 ], "newPanel" );
- tabs_state( element, 0, 1, 0 );
+ state( element, 0, 1, 0 );
});
tabs.eq( 1 ).click();
- tabs_state( element, 0, 1, 0 );
+ state( element, 0, 1, 0 );
// collapsing
element.one( "tabsactivate", function( event, ui ) {
@@ -160,10 +162,10 @@ test( "activate", function() {
strictEqual( ui.oldPanel[ 0 ], panels[ 1 ], "oldPanel" );
equal( ui.newTab.size(), 0, "newTab size" );
equal( ui.newPanel.size(), 0, "newPanel size" );
- tabs_state( element, 0, 0, 0 );
+ state( element, 0, 0, 0 );
});
element.tabs( "option", "active", false );
- tabs_state( element, 0, 0, 0 );
+ state( element, 0, 0, 0 );
// prevent activation
element.one( "tabsbeforeactivate", function( event ) {
@@ -197,10 +199,10 @@ test( "beforeLoad", function() {
strictEqual( ui.panel[ 0 ], panel[ 0 ], "panel" );
equal( ui.panel.html(), "", "panel html" );
event.preventDefault();
- tabs_state( element, 0, 0, 1, 0, 0 );
+ state( element, 0, 0, 1, 0, 0 );
});
element.tabs({ active: 2 });
- tabs_state( element, 0, 0, 1, 0, 0 );
+ state( element, 0, 0, 1, 0, 0 );
equal( panel.html(), "", "panel html after" );
element.tabs( "destroy" );
@@ -219,11 +221,11 @@ test( "beforeLoad", function() {
strictEqual( ui.panel[ 0 ], panel[ 0 ], "panel" );
equal( ui.panel.html(), "", "panel html" );
event.preventDefault();
- tabs_state( element, 1, 0, 0, 0, 0 );
+ state( element, 1, 0, 0, 0, 0 );
});
element.tabs();
element.tabs( "option", "active", 2 );
- tabs_state( element, 0, 0, 1, 0, 0 );
+ state( element, 0, 0, 1, 0, 0 );
equal( panel.html(), "", "panel html after" );
// click, change panel content
@@ -241,10 +243,10 @@ test( "beforeLoad", function() {
strictEqual( ui.panel[ 0 ], panel[ 0 ], "panel" );
ui.panel.html( "<p>testing</p>" );
event.preventDefault();
- tabs_state( element, 0, 0, 1, 0, 0 );
+ state( element, 0, 0, 1, 0, 0 );
});
element.find( ".ui-tabs-nav a" ).eq( 3 ).click();
- tabs_state( element, 0, 0, 0, 1, 0 );
+ state( element, 0, 0, 0, 1, 0 );
// .toLowerCase() is needed to convert <P> to <p> in old IEs
equal( panel.html().toLowerCase(), "<p>testing</p>", "panel html after" );
});
@@ -268,7 +270,7 @@ if ( $.uiBackCompat === false ) {
equal( ui.panel.size(), 1, "panel size" );
strictEqual( ui.panel[ 0 ], panel[ 0 ], "panel" );
equal( ui.panel.find( "p" ).length, 1, "panel html" );
- tabs_state( element, 0, 0, 1, 0, 0 );
+ state( element, 0, 0, 1, 0, 0 );
tabsload1();
});
element.tabs({ active: 2 });
@@ -286,7 +288,7 @@ if ( $.uiBackCompat === false ) {
equal( ui.panel.size(), 1, "panel size" );
strictEqual( ui.panel[ 0 ], panel[ 0 ], "panel" );
equal( ui.panel.find( "p" ).length, 1, "panel html" );
- tabs_state( element, 0, 0, 0, 1, 0 );
+ state( element, 0, 0, 0, 1, 0 );
tabsload2();
});
element.tabs( "option", "active", 3 );
@@ -305,7 +307,7 @@ if ( $.uiBackCompat === false ) {
equal( ui.panel.size(), 1, "panel size" );
strictEqual( ui.panel[ 0 ], panel[ 0 ], "panel" );
equal( ui.panel.find( "p" ).length, 1, "panel html" );
- tabs_state( element, 0, 0, 0, 0, 1 );
+ state( element, 0, 0, 0, 0, 1 );
start();
});
element.find( ".ui-tabs-nav a" ).eq( 4 ).click();
diff --git a/tests/unit/tabs/tabs_methods.js b/tests/unit/tabs/tabs_methods.js
index 0a59ae302..61ce78189 100644
--- a/tests/unit/tabs/tabs_methods.js
+++ b/tests/unit/tabs/tabs_methods.js
@@ -1,5 +1,8 @@
(function( $ ) {
+var disabled = TestHelpers.tabs.disabled,
+ state = TestHelpers.tabs.state;
+
module( "tabs: methods" );
test( "destroy", function() {
@@ -12,95 +15,95 @@ test( "enable", function() {
expect( 8 );
var element = $( "#tabs1" ).tabs({ disabled: true });
- tabs_disabled( element, true );
+ disabled( element, true );
element.tabs( "enable" );
- tabs_disabled( element, false );
+ disabled( element, false );
element.tabs( "destroy" );
element.tabs({ disabled: [ 0, 1 ] });
- tabs_disabled( element, [ 0, 1 ] );
+ disabled( element, [ 0, 1 ] );
element.tabs( "enable" );
- tabs_disabled( element, false );
+ disabled( element, false );
});
test( "enable( index )", function() {
expect( 10 );
var element = $( "#tabs1" ).tabs({ disabled: true });
- tabs_disabled( element, true );
+ disabled( element, true );
// fully disabled -> partially disabled
element.tabs( "enable", 1 );
- tabs_disabled( element, [ 0, 2 ] );
+ disabled( element, [ 0, 2 ] );
// partially disabled -> partially disabled
element.tabs( "enable", 2 );
- tabs_disabled( element, [ 0 ] );
+ disabled( element, [ 0 ] );
// already enabled tab, no change
element.tabs( "enable", 2 );
- tabs_disabled( element, [ 0 ] );
+ disabled( element, [ 0 ] );
// partially disabled -> fully enabled
element.tabs( "enable", 0 );
- tabs_disabled( element, false );
+ disabled( element, false );
});
test( "disable", function() {
expect( 8 );
var element = $( "#tabs1" ).tabs({ disabled: false });
- tabs_disabled( element, false );
+ disabled( element, false );
element.tabs( "disable" );
- tabs_disabled( element, true );
+ disabled( element, true );
element.tabs( "destroy" );
element.tabs({ disabled: [ 0, 1 ] });
- tabs_disabled( element, [ 0, 1 ] );
+ disabled( element, [ 0, 1 ] );
element.tabs( "disable" );
- tabs_disabled( element, true );
+ disabled( element, true );
});
test( "disable( index )", function() {
expect( 10 );
var element = $( "#tabs1" ).tabs({ disabled: false });
- tabs_disabled( element, false );
+ disabled( element, false );
// fully enabled -> partially disabled
element.tabs( "disable", 1 );
- tabs_disabled( element, [ 1 ] );
+ disabled( element, [ 1 ] );
// partially disabled -> partially disabled
element.tabs( "disable", 2 );
- tabs_disabled( element, [ 1, 2 ] );
+ disabled( element, [ 1, 2 ] );
// already disabled tab, no change
element.tabs( "disable", 2 );
- tabs_disabled( element, [ 1, 2 ] );
+ disabled( element, [ 1, 2 ] );
// partially disabled -> fully disabled
element.tabs( "disable", 0 );
- tabs_disabled( element, true );
+ disabled( element, true );
});
test( "refresh", function() {
expect( 27 );
var element = $( "#tabs1" ).tabs();
- tabs_state( element, 1, 0, 0 );
- tabs_disabled( element, false );
+ state( element, 1, 0, 0 );
+ disabled( element, false );
// disable tab via markup
element.find( ".ui-tabs-nav li" ).eq( 1 ).addClass( "ui-state-disabled" );
element.tabs( "refresh" );
- tabs_state( element, 1, 0, 0 );
- tabs_disabled( element, [ 1 ] );
+ state( element, 1, 0, 0 );
+ disabled( element, [ 1 ] );
// add remote tab
element.find( ".ui-tabs-nav" ).append( "<li id='newTab'><a href='data/test.html'>new</a></li>" );
element.tabs( "refresh" );
- tabs_state( element, 1, 0, 0, 0 );
- tabs_disabled( element, [ 1 ] );
+ state( element, 1, 0, 0, 0 );
+ disabled( element, [ 1 ] );
equal( element.find( "#" + $( "#newTab a" ).attr( "aria-controls" ) ).length, 1,
"panel added for remote tab" );
// remove all tabs
element.find( ".ui-tabs-nav li, .ui-tabs-panel" ).remove();
element.tabs( "refresh" );
- tabs_state( element );
+ state( element );
equal( element.tabs( "option", "active" ), false, "no active tab" );
// add tabs
@@ -115,34 +118,34 @@ test( "refresh", function() {
.append( "<div id='newTab4'>new 4</div>" )
.append( "<div id='newTab5'>new 5</div>" );
element.tabs( "refresh" );
- tabs_state( element, 0, 0, 0, 0 );
- tabs_disabled( element, [ 0 ] );
+ state( element, 0, 0, 0, 0 );
+ disabled( element, [ 0 ] );
// activate third tab
element.tabs( "option", "active", 2 );
- tabs_state( element, 0, 0, 1, 0 );
- tabs_disabled( element, [ 0 ] );
+ state( element, 0, 0, 1, 0 );
+ disabled( element, [ 0 ] );
// remove fourth tab, third tab should stay active
element.find( ".ui-tabs-nav li" ).eq( 3 ).remove();
element.find( ".ui-tabs-panel" ).eq( 3 ).remove();
element.tabs( "refresh" );
- tabs_state( element, 0, 0, 1 );
- tabs_disabled( element, [ 0 ] );
+ state( element, 0, 0, 1 );
+ disabled( element, [ 0 ] );
// remove third (active) tab, second tab should become active
element.find( ".ui-tabs-nav li" ).eq( 2 ).remove();
element.find( ".ui-tabs-panel" ).eq( 2 ).remove();
element.tabs( "refresh" );
- tabs_state( element, 0, 1 );
- tabs_disabled( element, [ 0 ] );
+ state( element, 0, 1 );
+ disabled( element, [ 0 ] );
// remove first tab, previously active tab (now first) should stay active
element.find( ".ui-tabs-nav li" ).eq( 0 ).remove();
element.find( ".ui-tabs-panel" ).eq( 0 ).remove();
element.tabs( "refresh" );
- tabs_state( element, 1 );
- tabs_disabled( element, false );
+ state( element, 1 );
+ disabled( element, false );
});
asyncTest( "load", function() {
@@ -162,7 +165,7 @@ asyncTest( "load", function() {
strictEqual( ui.tab[ 0 ], tab[ 0 ], "tab" );
equal( ui.panel.size(), 1, "panel size" );
strictEqual( ui.panel[ 0 ], panel[ 0 ], "panel" );
- tabs_state( element, 1, 0, 0, 0, 0 );
+ state( element, 1, 0, 0, 0, 0 );
});
element.one( "tabsload", function( event, ui ) {
// TODO: remove wrapping in 2.0
@@ -178,11 +181,11 @@ asyncTest( "load", function() {
equal( uiPanel.size(), 1, "panel size" );
strictEqual( uiPanel[ 0 ], panel[ 0 ], "panel" );
equal( uiPanel.find( "p" ).length, 1, "panel html" );
- tabs_state( element, 1, 0, 0, 0, 0 );
+ state( element, 1, 0, 0, 0, 0 );
setTimeout( tabsload1, 100 );
});
element.tabs( "load", 3 );
- tabs_state( element, 1, 0, 0, 0, 0 );
+ state( element, 1, 0, 0, 0, 0 );
function tabsload1() {
// no need to test details of event (tested in events tests)
@@ -194,7 +197,7 @@ asyncTest( "load", function() {
setTimeout( tabsload2, 100 );
});
element.tabs( "option", "active", 3 );
- tabs_state( element, 0, 0, 0, 1, 0 );
+ state( element, 0, 0, 0, 1, 0 );
}
function tabsload2() {
@@ -209,7 +212,7 @@ asyncTest( "load", function() {
strictEqual( ui.tab[ 0 ], tab[ 0 ], "tab" );
equal( ui.panel.size(), 1, "panel size" );
strictEqual( ui.panel[ 0 ], panel[ 0 ], "panel" );
- tabs_state( element, 0, 0, 0, 1, 0 );
+ state( element, 0, 0, 0, 1, 0 );
});
element.one( "tabsload", function( event, ui ) {
// TODO: remove wrapping in 2.0
@@ -224,11 +227,11 @@ asyncTest( "load", function() {
strictEqual( uiTab[ 0 ], tab[ 0 ], "tab" );
equal( uiPanel.size(), 1, "panel size" );
strictEqual( uiPanel[ 0 ], panel[ 0 ], "panel" );
- tabs_state( element, 0, 0, 0, 1, 0 );
+ state( element, 0, 0, 0, 1, 0 );
start();
});
element.tabs( "load", 3 );
- tabs_state( element, 0, 0, 0, 1, 0 );
+ state( element, 0, 0, 0, 1, 0 );
}
});
diff --git a/tests/unit/tabs/tabs_options.js b/tests/unit/tabs/tabs_options.js
index e1ebf5efa..40d4ceaa7 100644
--- a/tests/unit/tabs/tabs_options.js
+++ b/tests/unit/tabs/tabs_options.js
@@ -1,5 +1,8 @@
(function( $ ) {
+var disabled = TestHelpers.tabs.disabled,
+ state = TestHelpers.tabs.state;
+
module( "tabs: options" );
test( "{ active: default }", function() {
@@ -7,13 +10,13 @@ test( "{ active: default }", function() {
var element = $( "#tabs1" ).tabs();
equal( element.tabs( "option", "active" ), 0, "should be 0 by default" );
- tabs_state( element, 1, 0, 0 );
+ state( element, 1, 0, 0 );
element.tabs( "destroy" );
location.hash = "#fragment-3";
element = $( "#tabs1" ).tabs();
equal( element.tabs( "option", "active" ), 2, "should be 2 based on URL" );
- tabs_state( element, 0, 0, 1 );
+ state( element, 0, 0, 1 );
element.tabs( "destroy" );
location.hash = "#";
});
@@ -25,19 +28,19 @@ test( "{ active: false }", function() {
active: false,
collapsible: true
});
- tabs_state( element, 0, 0, 0 );
+ state( element, 0, 0, 0 );
equal( element.find( ".ui-tabs-nav .ui-state-active" ).size(), 0, "no tabs selected" );
strictEqual( element.tabs( "option", "active" ), false );
element.tabs( "option", "collapsible", false );
- tabs_state( element, 1, 0, 0 );
+ state( element, 1, 0, 0 );
equal( element.tabs( "option", "active" ), 0 );
element.tabs( "destroy" );
element.tabs({
active: false
});
- tabs_state( element, 1, 0, 0 );
+ state( element, 1, 0, 0 );
strictEqual( element.tabs( "option", "active" ), 0 );
});
@@ -48,19 +51,19 @@ test( "{ active: Number }", function() {
active: 2
});
equal( element.tabs( "option", "active" ), 2 );
- tabs_state( element, 0, 0, 1 );
+ state( element, 0, 0, 1 );
element.tabs( "option", "active", 0 );
equal( element.tabs( "option", "active" ), 0 );
- tabs_state( element, 1, 0, 0 );
+ state( element, 1, 0, 0 );
element.find( ".ui-tabs-nav a" ).eq( 1 ).click();
equal( element.tabs( "option", "active" ), 1 );
- tabs_state( element, 0, 1, 0 );
+ state( element, 0, 1, 0 );
element.tabs( "option", "active", 10 );
equal( element.tabs( "option", "active" ), 1 );
- tabs_state( element, 0, 1, 0 );
+ state( element, 0, 1, 0 );
});
if ( $.uiBackCompat === false ) {
@@ -69,19 +72,19 @@ if ( $.uiBackCompat === false ) {
active: -1
});
equal( element.tabs( "option", "active" ), 2 );
- tabs_state( element, 0, 0, 1 );
+ state( element, 0, 0, 1 );
element.tabs( "option", "active", -2 );
equal( element.tabs( "option", "active" ), 1 );
- tabs_state( element, 0, 1, 0 );
+ state( element, 0, 1, 0 );
element.tabs( "option", "active", -10 );
equal( element.tabs( "option", "active" ), 1 );
- tabs_state( element, 0, 1, 0 );
+ state( element, 0, 1, 0 );
element.tabs( "option", "active", -3 );
equal( element.tabs( "option", "active" ), 0 );
- tabs_state( element, 1, 0, 0 );
+ state( element, 1, 0, 0 );
});
}
@@ -91,9 +94,9 @@ test( "active - mismatched tab/panel order", function() {
location.hash = "#tabs7-2";
var element = $( "#tabs7" ).tabs();
equal( element.tabs( "option", "active" ), 1, "should be 1 based on URL" );
- tabs_state( element, 0, 1 );
+ state( element, 0, 1 );
element.tabs( "option", "active", 0 );
- tabs_state( element, 1, 0 );
+ state( element, 1, 0 );
location.hash = "#";
});
@@ -105,11 +108,11 @@ test( "{ collapsible: false }", function() {
});
element.tabs( "option", "active", false );
equal( element.tabs( "option", "active" ), 1 );
- tabs_state( element, 0, 1, 0 );
+ state( element, 0, 1, 0 );
element.find( ".ui-state-active a" ).eq( 1 ).click();
equal( element.tabs( "option", "active" ), 1 );
- tabs_state( element, 0, 1, 0 );
+ state( element, 0, 1, 0 );
});
test( "{ collapsible: true }", function() {
@@ -122,15 +125,15 @@ test( "{ collapsible: true }", function() {
element.tabs( "option", "active", false );
equal( element.tabs( "option", "active" ), false );
- tabs_state( element, 0, 0, 0 );
+ state( element, 0, 0, 0 );
element.tabs( "option", "active", 1 );
equal( element.tabs( "option", "active" ), 1 );
- tabs_state( element, 0, 1, 0 );
+ state( element, 0, 1, 0 );
element.find( ".ui-state-active a" ).click();
equal( element.tabs( "option", "active" ), false );
- tabs_state( element, 0, 0, 0 );
+ state( element, 0, 0, 0 );
});
test( "disabled", function() {
@@ -138,23 +141,23 @@ test( "disabled", function() {
// fully enabled by default
var element = $( "#tabs1" ).tabs();
- tabs_disabled( element, false );
+ disabled( element, false );
// disable single tab
element.tabs( "option", "disabled", [ 1 ] );
- tabs_disabled( element, [ 1 ] );
+ disabled( element, [ 1 ] );
// disabled active tab
element.tabs( "option", "disabled", [ 0, 1 ] );
- tabs_disabled( element, [ 0, 1 ] );
+ disabled( element, [ 0, 1 ] );
// disable all tabs
element.tabs( "option", "disabled", [ 0, 1, 2 ] );
- tabs_disabled( element, true );
+ disabled( element, true );
// enable all tabs
element.tabs( "option", "disabled", [] );
- tabs_disabled( element, false );
+ disabled( element, false );
});
test( "{ event: null }", function() {
@@ -163,16 +166,16 @@ test( "{ event: null }", function() {
var element = $( "#tabs1" ).tabs({
event: null
});
- tabs_state( element, 1, 0, 0 );
+ state( element, 1, 0, 0 );
element.tabs( "option", "active", 1 );
equal( element.tabs( "option", "active" ), 1 );
- tabs_state( element, 0, 1, 0 );
+ state( element, 0, 1, 0 );
// ensure default click handler isn't bound
element.find( ".ui-tabs-nav a" ).eq( 2 ).click();
equal( element.tabs( "option", "active" ), 1 );
- tabs_state( element, 0, 1, 0 );
+ state( element, 0, 1, 0 );
});
test( "{ event: custom }", function() {
@@ -181,31 +184,31 @@ test( "{ event: custom }", function() {
var element = $( "#tabs1" ).tabs({
event: "custom1 custom2"
});
- tabs_state( element, 1, 0, 0 );
+ state( element, 1, 0, 0 );
element.find( ".ui-tabs-nav a" ).eq( 1 ).trigger( "custom1" );
equal( element.tabs( "option", "active" ), 1 );
- tabs_state( element, 0, 1, 0 );
+ state( element, 0, 1, 0 );
// ensure default click handler isn't bound
element.find( ".ui-tabs-nav a" ).eq( 2 ).trigger( "click" );
equal( element.tabs( "option", "active" ), 1 );
- tabs_state( element, 0, 1, 0 );
+ state( element, 0, 1, 0 );
element.find( ".ui-tabs-nav a" ).eq( 2 ).trigger( "custom2" );
equal( element.tabs( "option", "active" ), 2 );
- tabs_state( element, 0, 0, 1 );
+ state( element, 0, 0, 1 );
element.tabs( "option", "event", "custom3" );
// ensure old event handlers are unbound
element.find( ".ui-tabs-nav a" ).eq( 1 ).trigger( "custom1" );
equal( element.tabs( "option", "active" ), 2 );
- tabs_state( element, 0, 0, 1 );
+ state( element, 0, 0, 1 );
element.find( ".ui-tabs-nav a" ).eq( 1 ).trigger( "custom3" );
equal( element.tabs( "option", "active" ), 1 );
- tabs_state( element, 0, 1, 0 );
+ state( element, 0, 1, 0 );
});
// TODO: add animation tests
diff --git a/tests/unit/tabs/tabs_test_helpers.js b/tests/unit/tabs/tabs_test_helpers.js
new file mode 100644
index 000000000..9f592c074
--- /dev/null
+++ b/tests/unit/tabs/tabs_test_helpers.js
@@ -0,0 +1,61 @@
+TestHelpers.tabs = {
+ disabled: function( tabs, state ) {
+ var expected, actual,
+ internalState = tabs.tabs( "option", "disabled" );
+
+ if ( internalState === false ) {
+ internalState = [];
+ }
+ if ( internalState === true ) {
+ internalState = $.map( new Array( tabs.find( ".ui-tabs-nav li" ).length ), function( _, index ) {
+ return index;
+ });
+ }
+
+ expected = $.map( new Array( tabs.find ( ".ui-tabs-nav li" ).length ), function( _, index ) {
+ if ( typeof state === "boolean" ) {
+ return state ? 1 : 0;
+ } else {
+ return $.inArray( index, state ) !== -1 ? 1 : 0;
+ }
+ });
+
+ actual = tabs.find( ".ui-tabs-nav li" ).map(function( index ) {
+ var tab = $( this ),
+ tabIsDisabled = tab.hasClass( "ui-state-disabled" );
+
+ if ( tabIsDisabled && $.inArray( index, internalState ) !== -1 ) {
+ return 1;
+ }
+ if ( !tabIsDisabled && $.inArray( index, internalState ) === -1 ) {
+ return 0;
+ }
+ // mixed state - invalid
+ return -1;
+ }).get();
+
+ deepEqual( tabs.tabs( "option", "disabled" ), state );
+ deepEqual( actual, expected );
+ },
+
+ state: function( tabs ) {
+ var expected = $.makeArray( arguments ).slice( 1 ),
+ actual = tabs.find( ".ui-tabs-nav li" ).map(function() {
+ var tab = $( this ),
+ panel = $( $.ui.tabs.prototype._sanitizeSelector(
+ "#" + tab.find( "a" ).attr( "aria-controls" ) ) ),
+ tabIsActive = tab.hasClass( "ui-state-active" ),
+ panelIsActive = panel.css( "display" ) !== "none";
+
+ if ( tabIsActive && panelIsActive ) {
+ return 1;
+ }
+ if ( !tabIsActive && !panelIsActive ) {
+ return 0;
+ }
+ return -1; // mixed state - invalid
+ }).get();
+ deepEqual( actual, expected );
+ }
+};
+