aboutsummaryrefslogtreecommitdiffstats
path: root/tests/unit/selectmenu/events.js
diff options
context:
space:
mode:
Diffstat (limited to 'tests/unit/selectmenu/events.js')
-rw-r--r--tests/unit/selectmenu/events.js136
1 files changed, 136 insertions, 0 deletions
diff --git a/tests/unit/selectmenu/events.js b/tests/unit/selectmenu/events.js
new file mode 100644
index 000000000..d5c463fa9
--- /dev/null
+++ b/tests/unit/selectmenu/events.js
@@ -0,0 +1,136 @@
+define( [
+ "jquery",
+ "ui/selectmenu"
+], function( $ ) {
+
+module( "selectmenu: events", {
+ setup: function() {
+ this.element = $( "#speed" );
+ }
+});
+
+asyncTest( "change", function() {
+ expect( 3 );
+
+ var button, menu, options,
+ optionIndex = 1;
+
+ this.element.selectmenu({
+ change: function ( event, ui ) {
+ equal( ui.item.index, optionIndex, "ui.item.index contains correct option index" );
+ equal( ui.item.element[ 0 ], options.eq( optionIndex )[ 0 ],
+ "ui.item.element contains original option element" );
+ equal( ui.item.value, options.eq( optionIndex ).text(),
+ "ui.item.value property updated correctly" );
+ }
+ });
+
+ button = this.element.selectmenu( "widget" );
+ menu = this.element.selectmenu( "menuWidget" );
+ options = this.element.find( "option" );
+
+ button.simulate( "focus" );
+
+ setTimeout(function() {
+ button.trigger( "click" );
+ menu.find( "li" ).eq( optionIndex ).simulate( "mouseover" ).trigger( "click" );
+ start();
+ });
+});
+
+test( "close", function() {
+ expect( 2 );
+
+ var shouldFire;
+
+ this.element.selectmenu({
+ close: function() {
+ ok( shouldFire, "close event fired on close" );
+ }
+ });
+
+ shouldFire = false;
+ this.element.selectmenu( "open" );
+ shouldFire = true;
+ this.element.selectmenu( "close" );
+ shouldFire = false;
+ this.element.selectmenu( "open" );
+ shouldFire = true;
+ $( "body" ).trigger( "mousedown" );
+});
+
+asyncTest( "focus", function() {
+ expect( 9 );
+
+ var button, menu, links,
+ that = this,
+ optionIndex = this.element[ 0 ].selectedIndex + 1,
+ options = this.element.find( "option" );
+
+ this.element.selectmenu({
+ focus: function( event, ui ) {
+ ok( true, "focus event fired on element #" + optionIndex + " mouseover" );
+ equal( ui.item.index, optionIndex, "ui.item.index contains correct option index" );
+ equal( ui.item.element[ 0 ], options.eq( optionIndex )[ 0 ],
+ "ui.item.element contains original option element" );
+ }
+ });
+
+ button = this.element.selectmenu( "widget" );
+ menu = this.element.selectmenu( "menuWidget" );
+
+ button.simulate( "focus" );
+ setTimeout(function() {
+ button.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } );
+
+ button.trigger( "click" );
+ links = menu.find( "li.ui-menu-item" );
+ optionIndex = 0;
+ links.eq( optionIndex ).simulate( "mouseover" );
+ optionIndex += 1;
+ links.eq( optionIndex ).simulate( "mouseover" );
+
+ // This tests for unwanted, additional focus event on close
+ that.element.selectmenu( "close" );
+ start();
+ });
+});
+
+test( "open", function() {
+ expect( 1 );
+
+ this.element.selectmenu({
+ open: function() {
+ ok( true, "open event fired on open" );
+ }
+ });
+
+ this.element.selectmenu( "open" );
+});
+
+asyncTest( "select", function() {
+ expect( 3 );
+
+ this.element.selectmenu({
+ select: function( event, ui ) {
+ ok( true, "select event fired on item select" );
+ equal( ui.item.index, optionIndex, "ui.item.index contains correct option index" );
+ equal( ui.item.element[ 0 ], options.eq( optionIndex )[ 0 ],
+ "ui.item.element contains original option element" );
+ }
+ });
+
+ var button = this.element.selectmenu( "widget" ),
+ menu = this.element.selectmenu( "menuWidget" ),
+ options = this.element.find( "option" ),
+ optionIndex = 1;
+
+ button.simulate( "focus" );
+ setTimeout(function() {
+ button.trigger( "click" );
+ menu.find( "li" ).eq( optionIndex ).simulate( "mouseover" ).trigger( "click" );
+ start();
+ });
+});
+
+} );