2015-04-06 18:40:47 +00:00
|
|
|
define( [
|
2016-04-06 13:16:23 +00:00
|
|
|
"qunit",
|
2015-04-06 18:40:47 +00:00
|
|
|
"jquery",
|
2020-05-16 07:16:24 +00:00
|
|
|
"lib/helper",
|
2015-07-15 02:06:31 +00:00
|
|
|
"ui/widgets/selectmenu"
|
2020-05-16 07:16:24 +00:00
|
|
|
], function( QUnit, $, helper ) {
|
2011-10-19 17:47:02 +00:00
|
|
|
|
2020-05-16 07:16:24 +00:00
|
|
|
QUnit.module( "selectmenu: methods", { afterEach: helper.moduleAfterEach } );
|
2011-10-19 17:47:02 +00:00
|
|
|
|
2016-04-06 13:16:23 +00:00
|
|
|
QUnit.test( "destroy", function( assert ) {
|
|
|
|
assert.expect( 1 );
|
2015-04-06 18:40:47 +00:00
|
|
|
assert.domEqual( "#speed", function() {
|
2011-10-19 17:47:02 +00:00
|
|
|
$( "#speed" ).selectmenu().selectmenu( "destroy" );
|
2015-08-24 12:50:24 +00:00
|
|
|
} );
|
|
|
|
} );
|
2011-10-19 17:47:02 +00:00
|
|
|
|
2016-04-06 13:16:23 +00:00
|
|
|
QUnit.test( "open / close", function( assert ) {
|
|
|
|
assert.expect( 5 );
|
2012-02-21 17:08:14 +00:00
|
|
|
|
2013-02-13 22:58:14 +00:00
|
|
|
var element = $( "#speed" ).selectmenu(),
|
|
|
|
menu = element.selectmenu( "menuWidget" );
|
2012-02-21 17:08:14 +00:00
|
|
|
|
2016-04-06 13:16:23 +00:00
|
|
|
assert.ok( menu.is( ":hidden" ), "menu hidden on init" );
|
2014-04-22 16:57:05 +00:00
|
|
|
|
2013-02-13 22:58:14 +00:00
|
|
|
element.selectmenu( "open" );
|
2016-04-06 13:16:23 +00:00
|
|
|
assert.ok( menu.is( ":visible" ), "open: menu visible" );
|
|
|
|
assert.equal( menu.attr( "aria-hidden" ), "false", "open: menu aria-disabled" );
|
2012-02-21 17:08:14 +00:00
|
|
|
|
2013-02-13 22:58:14 +00:00
|
|
|
element.selectmenu( "close" );
|
2016-04-06 13:16:23 +00:00
|
|
|
assert.ok( menu.is( ":hidden" ), "close: menu hidden" );
|
|
|
|
assert.equal( menu.attr( "aria-hidden" ), "true", "close: menu aria-disabled" );
|
2015-08-24 12:50:24 +00:00
|
|
|
} );
|
2011-11-21 23:35:27 +00:00
|
|
|
|
2016-04-06 13:16:23 +00:00
|
|
|
QUnit.test( "enable / disable", function( assert ) {
|
|
|
|
assert.expect( 10 );
|
2012-02-21 17:08:14 +00:00
|
|
|
|
2013-02-13 22:58:14 +00:00
|
|
|
var element = $( "#speed" ).selectmenu(),
|
|
|
|
button = element.selectmenu( "widget" ),
|
|
|
|
menu = element.selectmenu( "menuWidget" );
|
|
|
|
|
|
|
|
element.selectmenu( "disable" );
|
2016-04-06 13:16:23 +00:00
|
|
|
assert.ok( element.selectmenu( "option", "disabled" ), "disable: widget option" );
|
|
|
|
assert.equal( element.attr( "disabled" ), "disabled", "disable: native select disabled" );
|
|
|
|
assert.equal( button.attr( "aria-disabled" ), "true", "disable: button ARIA" );
|
|
|
|
assert.equal( button.attr( "tabindex" ), -1, "disable: button tabindex" );
|
|
|
|
assert.equal( menu.attr( "aria-disabled" ), "true", "disable: menu ARIA" );
|
2013-02-13 22:58:14 +00:00
|
|
|
|
|
|
|
element.selectmenu( "enable" );
|
2016-04-06 13:16:23 +00:00
|
|
|
assert.ok( !element.selectmenu( "option", "disabled" ), "enable: widget option" );
|
|
|
|
assert.equal( element.attr( "disabled" ), undefined, "enable: native select disabled" );
|
|
|
|
assert.equal( button.attr( "aria-disabled" ), "false", "enable: button ARIA" );
|
|
|
|
assert.equal( button.attr( "tabindex" ), 0, "enable: button tabindex" );
|
|
|
|
assert.equal( menu.attr( "aria-disabled" ), "false", "enable: menu ARIA" );
|
2015-08-24 12:50:24 +00:00
|
|
|
} );
|
2011-11-21 23:35:27 +00:00
|
|
|
|
2016-04-06 13:16:23 +00:00
|
|
|
QUnit.test( "refresh - structure", function( assert ) {
|
|
|
|
assert.expect( 3 );
|
2012-02-21 17:08:14 +00:00
|
|
|
|
2014-04-22 16:57:05 +00:00
|
|
|
var menuItems,
|
|
|
|
element = $( "#speed" ).selectmenu(),
|
|
|
|
menu = element.selectmenu( "menuWidget" ),
|
|
|
|
options = element.find( "option" );
|
2012-02-21 17:08:14 +00:00
|
|
|
|
2014-04-22 16:57:05 +00:00
|
|
|
options.eq( 0 )
|
2013-02-13 22:58:14 +00:00
|
|
|
.attr( "value", "changed_value" )
|
|
|
|
.text( "Changed value" );
|
2014-04-22 16:57:05 +00:00
|
|
|
options.eq( 2 ).remove();
|
|
|
|
options.eq( 3 ).remove();
|
|
|
|
element.append( "<option value=\"added_option\">Added option</option>" );
|
2013-02-13 22:58:14 +00:00
|
|
|
element.selectmenu( "refresh" );
|
2012-02-21 17:08:14 +00:00
|
|
|
|
2014-04-22 16:57:05 +00:00
|
|
|
options = element.find( "option" );
|
|
|
|
menuItems = menu.find( "li" ).not( ".ui-selectmenu-optgroup" );
|
|
|
|
|
2016-04-06 13:16:23 +00:00
|
|
|
assert.equal( options.length, menuItems.length, "menu item length" );
|
|
|
|
assert.equal( "Added option", menuItems.last().text(), "added item" );
|
|
|
|
assert.equal( "Changed value", menuItems.eq( 0 ).text(), "changed item" );
|
2015-08-24 12:50:24 +00:00
|
|
|
} );
|
2011-11-28 00:22:41 +00:00
|
|
|
|
2016-04-06 13:16:23 +00:00
|
|
|
QUnit.test( "refresh - change selected option", function( assert ) {
|
|
|
|
var ready = assert.async();
|
|
|
|
assert.expect( 4 );
|
2013-02-13 22:58:14 +00:00
|
|
|
|
|
|
|
var element = $( "#speed" ).selectmenu(),
|
|
|
|
button = element.selectmenu( "widget" );
|
|
|
|
|
2019-12-08 21:23:08 +00:00
|
|
|
assert.equal( String.prototype.trim.call( button.text() ), "Medium", "button text after init" );
|
2013-02-13 22:58:14 +00:00
|
|
|
|
|
|
|
button.simulate( "focus" );
|
2014-08-22 20:40:09 +00:00
|
|
|
|
2015-08-24 12:50:24 +00:00
|
|
|
setTimeout( function() {
|
2019-12-08 21:23:08 +00:00
|
|
|
assert.equal( String.prototype.trim.call( button.text() ), "Medium", "button text after focus" );
|
2013-02-13 22:58:14 +00:00
|
|
|
|
2013-06-04 19:16:13 +00:00
|
|
|
element[ 0 ].selectedIndex = 0;
|
2013-05-30 20:30:56 +00:00
|
|
|
element.selectmenu( "refresh" );
|
2019-12-08 21:23:08 +00:00
|
|
|
assert.equal( String.prototype.trim.call( button.text() ), "Slower", "button text after changing selected option" );
|
2013-02-13 22:58:14 +00:00
|
|
|
|
2014-04-22 16:57:05 +00:00
|
|
|
element.find( "option" ).prop( "selected", false );
|
2014-04-24 12:37:38 +00:00
|
|
|
element.append( "<option selected value=\"selected_option\">Selected option</option>" );
|
2013-08-31 01:10:52 +00:00
|
|
|
element.selectmenu( "refresh" );
|
2019-12-08 21:23:08 +00:00
|
|
|
assert.equal( String.prototype.trim.call( button.text() ), "Selected option", "button text after adding selected option" );
|
2013-08-31 01:10:52 +00:00
|
|
|
|
2016-04-06 13:16:23 +00:00
|
|
|
ready();
|
2015-08-24 12:50:24 +00:00
|
|
|
} );
|
|
|
|
} );
|
2013-02-09 02:26:53 +00:00
|
|
|
|
2016-04-06 13:16:23 +00:00
|
|
|
QUnit.test( "refresh - disabled select", function( assert ) {
|
|
|
|
assert.expect( 4 );
|
2012-02-21 17:08:14 +00:00
|
|
|
|
2013-02-13 22:58:14 +00:00
|
|
|
var element = $( "#speed" ).selectmenu(),
|
|
|
|
button = element.selectmenu( "widget" ),
|
|
|
|
menu = element.selectmenu( "menuWidget" );
|
2012-02-21 17:08:14 +00:00
|
|
|
|
2014-04-22 16:57:05 +00:00
|
|
|
element.prop( "disabled", true );
|
2013-02-13 22:58:14 +00:00
|
|
|
element.selectmenu( "refresh" );
|
2012-02-21 17:08:14 +00:00
|
|
|
|
2016-04-06 13:16:23 +00:00
|
|
|
assert.ok( element.selectmenu( "option", "disabled" ), "widget option" );
|
|
|
|
assert.equal( button.attr( "aria-disabled" ), "true", "button ARIA" );
|
|
|
|
assert.equal( button.attr( "tabindex" ), -1, "button tabindex" );
|
|
|
|
assert.equal( menu.attr( "aria-disabled" ), "true", "menu ARIA" );
|
2015-08-24 12:50:24 +00:00
|
|
|
} );
|
2011-11-28 00:22:41 +00:00
|
|
|
|
2016-04-06 13:16:23 +00:00
|
|
|
QUnit.test( "refresh - disabled option", function( assert ) {
|
|
|
|
assert.expect( 1 );
|
2012-02-21 17:08:14 +00:00
|
|
|
|
2012-05-24 16:54:47 +00:00
|
|
|
var disabledItem,
|
2013-02-13 22:58:14 +00:00
|
|
|
element = $( "#speed" ).selectmenu(),
|
|
|
|
menu = element.selectmenu( "menuWidget" ).parent();
|
2012-02-21 17:08:14 +00:00
|
|
|
|
2014-04-22 16:57:05 +00:00
|
|
|
element.find( "option" ).eq( 2 ).prop( "disabled", true );
|
2013-02-13 22:58:14 +00:00
|
|
|
element.selectmenu( "refresh" );
|
2012-02-21 17:08:14 +00:00
|
|
|
|
2014-04-22 16:57:05 +00:00
|
|
|
disabledItem = menu.find( "li" ).not( ".ui-selectmenu-optgroup" ).eq( 2 );
|
2015-01-30 15:00:56 +00:00
|
|
|
assert.hasClasses( disabledItem, "ui-state-disabled" );
|
2015-08-24 12:50:24 +00:00
|
|
|
} );
|
2012-02-21 17:08:14 +00:00
|
|
|
|
2016-04-06 13:16:23 +00:00
|
|
|
QUnit.test( "refresh - disabled optgroup", function( assert ) {
|
2013-04-29 19:03:12 +00:00
|
|
|
var i, item,
|
2013-02-13 22:58:14 +00:00
|
|
|
element = $( "#files" ).selectmenu(),
|
|
|
|
menu = element.selectmenu( "menuWidget" ).parent(),
|
|
|
|
originalDisabledOptgroup = element.find( "optgroup" ).first(),
|
|
|
|
originalDisabledOptions = originalDisabledOptgroup.find( "option" );
|
2012-02-21 17:08:14 +00:00
|
|
|
|
2016-04-06 13:16:23 +00:00
|
|
|
assert.expect( 2 + originalDisabledOptions.length );
|
2012-02-21 17:08:14 +00:00
|
|
|
|
2014-04-22 16:57:05 +00:00
|
|
|
originalDisabledOptgroup.prop( "disabled", true );
|
2013-02-13 22:58:14 +00:00
|
|
|
element.selectmenu( "refresh" );
|
2012-02-21 17:08:14 +00:00
|
|
|
|
2013-02-13 22:58:14 +00:00
|
|
|
item = menu.find( "li.ui-selectmenu-optgroup" ).first();
|
2015-01-30 15:00:56 +00:00
|
|
|
|
|
|
|
assert.hasClasses( item, "ui-state-disabled" );
|
2012-02-21 17:08:14 +00:00
|
|
|
|
2016-04-06 13:16:23 +00:00
|
|
|
assert.equal(
|
2014-04-22 16:57:05 +00:00
|
|
|
menu.find( "li" ).not( ".ui-selectmenu-optgroup" ).filter( ".ui-state-disabled" ).length,
|
|
|
|
originalDisabledOptions.length,
|
|
|
|
"disabled options"
|
|
|
|
);
|
2012-05-24 16:54:47 +00:00
|
|
|
for ( i = 0; i < originalDisabledOptions.length; i++ ) {
|
2013-02-13 22:58:14 +00:00
|
|
|
item = item.next( "li" );
|
2015-01-30 15:00:56 +00:00
|
|
|
assert.hasClasses( item, "ui-state-disabled" );
|
2011-11-21 23:35:27 +00:00
|
|
|
}
|
2015-08-24 12:50:24 +00:00
|
|
|
} );
|
2011-11-21 23:35:27 +00:00
|
|
|
|
2016-04-06 13:16:23 +00:00
|
|
|
QUnit.test( "refresh - remove all options", function( assert ) {
|
|
|
|
assert.expect( 2 );
|
2015-01-12 16:23:08 +00:00
|
|
|
|
|
|
|
var element = $( "#speed" ).selectmenu(),
|
|
|
|
button = element.selectmenu( "widget" ),
|
|
|
|
menu = element.selectmenu( "menuWidget" );
|
|
|
|
|
|
|
|
element.children().remove();
|
|
|
|
element.selectmenu( "refresh" );
|
2016-04-06 13:16:23 +00:00
|
|
|
assert.equal( button.find( ".ui-selectmenu-text" ).html(), $( "<span> </span>" ).html(),
|
2015-01-12 16:23:08 +00:00
|
|
|
"Empty button text" );
|
2016-04-06 13:16:23 +00:00
|
|
|
assert.equal( menu.children().length, 0, "Empty menu" );
|
2015-08-24 12:50:24 +00:00
|
|
|
} );
|
2015-01-12 16:23:08 +00:00
|
|
|
|
2016-04-06 13:16:23 +00:00
|
|
|
QUnit.test( "widget and menuWidget", function( assert ) {
|
|
|
|
assert.expect( 4 );
|
2014-04-22 16:57:05 +00:00
|
|
|
|
2013-02-13 22:58:14 +00:00
|
|
|
var element = $( "#speed" ).selectmenu(),
|
2013-03-07 22:53:43 +00:00
|
|
|
button = element.selectmenu( "widget" ),
|
|
|
|
menu = element.selectmenu( "menuWidget" );
|
2012-11-13 20:58:23 +00:00
|
|
|
|
2016-04-06 13:16:23 +00:00
|
|
|
assert.equal( button.length, 1, "button: one element" );
|
2014-08-22 20:40:09 +00:00
|
|
|
assert.hasClasses( button, "ui-button" );
|
2012-11-13 20:58:23 +00:00
|
|
|
|
2016-04-06 13:16:23 +00:00
|
|
|
assert.equal( menu.length, 1, "Menu Widget: one element" );
|
|
|
|
assert.ok( menu.is( "ul.ui-menu" ), "Menu Widget: element and class" );
|
2015-08-24 12:50:24 +00:00
|
|
|
} );
|
2011-11-21 23:35:27 +00:00
|
|
|
|
2015-04-06 18:40:47 +00:00
|
|
|
} );
|