jquery-ui/tests/unit/tabs/helper.js

79 lines
2.0 KiB
JavaScript
Raw Permalink Normal View History

define( [
"jquery",
"lib/helper",
"ui/widgets/tabs"
], function( $, helper ) {
return $.extend( helper, {
2016-04-06 13:48:50 +00:00
disabled: function( assert, 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;
2015-08-24 12:57:25 +00:00
} );
}
2016-04-06 13:48:50 +00:00
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;
}
2015-08-24 12:57:25 +00:00
} );
2015-08-24 12:57:25 +00:00
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;
}
2015-08-24 12:57:25 +00:00
2016-04-06 13:48:50 +00:00
// Mixed state - invalid
return -1;
2015-08-24 12:57:25 +00:00
} ).get();
2016-04-06 13:48:50 +00:00
assert.deepEqual( tabs.tabs( "option", "disabled" ), state );
assert.deepEqual( actual, expected );
},
2016-04-06 13:48:50 +00:00
equalHeight: function( assert, tabs, height ) {
2015-08-24 12:57:25 +00:00
tabs.find( ".ui-tabs-panel" ).each( function() {
// Handle overly-precise values
var actualHeight = parseFloat( $( this ).outerHeight().toFixed( 1 ) );
2016-04-06 13:48:50 +00:00
assert.equal( actualHeight, height );
2015-08-24 12:57:25 +00:00
} );
},
2016-04-06 13:48:50 +00:00
state: function( assert, tabs ) {
var expected = $.makeArray( arguments ).slice( 2 ),
2015-08-24 12:57:25 +00:00
actual = tabs.find( ".ui-tabs-nav li" ).map( function() {
var tab = $( this ),
panel = $( $.ui.tabs.prototype._sanitizeSelector(
"#" + tab.attr( "aria-controls" ) ) ),
tabIsActive = tab.hasClass( "ui-state-active" ),
panelIsActive = panel.css( "display" ) !== "none";
if ( tabIsActive && panelIsActive ) {
return 1;
}
if ( !tabIsActive && !panelIsActive ) {
return 0;
}
2016-04-06 13:48:50 +00:00
return -1; // Mixed state - invalid
2015-08-24 12:57:25 +00:00
} ).get();
2016-04-06 13:48:50 +00:00
assert.deepEqual( actual, expected );
}
} );
} );