diff options
Diffstat (limited to 'tests/unit/menu')
-rw-r--r-- | tests/unit/menu/all.html | 4 | ||||
-rw-r--r-- | tests/unit/menu/menu.html | 30 | ||||
-rw-r--r-- | tests/unit/menu/menu_common.js (renamed from tests/unit/menu/menu_defaults.js) | 2 | ||||
-rw-r--r-- | tests/unit/menu/menu_core.js | 9 | ||||
-rw-r--r-- | tests/unit/menu/menu_events.js | 232 | ||||
-rw-r--r-- | tests/unit/menu/menu_methods.js | 17 | ||||
-rw-r--r-- | tests/unit/menu/menu_options.js | 19 | ||||
-rw-r--r-- | tests/unit/menu/menu_test_helpers.js | 28 |
8 files changed, 211 insertions, 130 deletions
diff --git a/tests/unit/menu/all.html b/tests/unit/menu/all.html index a58e15299..475c1b717 100644 --- a/tests/unit/menu/all.html +++ b/tests/unit/menu/all.html @@ -7,9 +7,9 @@ <script src="../../../jquery-1.7.2.js"></script> <link rel="stylesheet" href="../../../external/qunit.css"> - <link rel="stylesheet" href="../subsuiteRunner.css"> + <link rel="stylesheet" href="../qunit-composite.css"> <script src="../../../external/qunit.js"></script> - <script src="../subsuiteRunner.js"></script> + <script src="../qunit-composite.js"></script> <script src="../subsuite.js"></script> <script> diff --git a/tests/unit/menu/menu.html b/tests/unit/menu/menu.html index 76f4a7a31..fca45697f 100644 --- a/tests/unit/menu/menu.html +++ b/tests/unit/menu/menu.html @@ -5,9 +5,12 @@ <title>jQuery UI Menu Test Suite</title> <script src="../../jquery.js"></script> - <script src="../../resource_loader.js"></script> + <link rel="stylesheet" href="../../../external/qunit.css"> + <script src="../../../external/qunit.js"></script> + <script src="../../jquery.simulate.js"></script> + <script src="../testsuite.js"></script> <script> - loadResources({ + TestHelpers.loadResources({ css: [ "ui.core", "ui.menu" ], js: [ "ui/jquery.ui.core.js", @@ -17,14 +20,9 @@ }); </script> - <link rel="stylesheet" href="../../../external/qunit.css"> - <script src="../../../external/qunit.js"></script> - <script src="../../jquery.simulate.js"></script> - <script src="../testsuite.js"></script> - <script src="menu_test_helpers.js"></script> + <script src="menu_common.js"></script> <script src="menu_core.js"></script> - <script src="menu_defaults.js"></script> <script src="menu_events.js"></script> <script src="menu_methods.js"></script> <script src="menu_options.js"></script> @@ -251,6 +249,22 @@ </blockquote> </div> +<ul id="menu6"> + <li class="foo"><a class="foo" href="#">Aberdeen</a></li> + <li class="foo ui-state-disabled"><a class="foo" href="#">Ada</a></li> + <li class="foo"><a class="foo" href="#">Adamsville</a></li> + <li class="foo"><a class="foo" href="#">Addyston</a></li> + <li class="ui-state-disabled"> + <a href="#">Delphi</a> + <ul> + <li class="foo"><a class="foo" href="#">Ada</a></li> + <li class="foo"><a class="foo" href="#">Saarland</a></li> + <li class="foo"><a class="foo" href="#">Salzburg</a></li> + </ul> + </li> + <li class="foo"><a class="foo" href="#">Saarland</a></li> +</ul> + <div id="log"></div> </div> diff --git a/tests/unit/menu/menu_defaults.js b/tests/unit/menu/menu_common.js index 018ac8ccf..ddcdbebf2 100644 --- a/tests/unit/menu/menu_defaults.js +++ b/tests/unit/menu/menu_common.js @@ -1,4 +1,4 @@ -commonWidgetTests( "menu", { +TestHelpers.commonWidgetTests( "menu", { defaults: { disabled: false, menus: "ul", diff --git a/tests/unit/menu/menu_core.js b/tests/unit/menu/menu_core.js index 02e3be3be..f2de7ef1a 100644 --- a/tests/unit/menu/menu_core.js +++ b/tests/unit/menu/menu_core.js @@ -9,18 +9,19 @@ module("menu: core"); test("accessibility", function () { expect(5); - var menu = $('#menu1').menu(); - var item0 = $("li:eq(0) a"); + var item, + menu = $('#menu1').menu(), + item0 = $("li:eq(0) a"); ok( menu.hasClass("ui-menu ui-widget ui-widget-content ui-corner-all"), "menu class"); equal( menu.attr("role"), "menu", "main role"); ok( !menu.attr("aria-activedescendant"), "aria attribute not yet active"); - var item = menu.find( "li:first" ).find( "a" ).attr( "id", "xid" ).end(); + item = menu.find( "li:first" ).find( "a" ).attr( "id", "xid" ).end(); menu.menu( "focus", $.Event(), item ); equal( menu.attr("aria-activedescendant"), "xid", "aria attribute, id from dom"); - var item = menu.find( "li:last" ); + item = menu.find( "li:last" ); menu.menu( "focus", $.Event(), item ); equal( menu.attr("aria-activedescendant"), "menu1-4", "aria attribute, generated id"); }); diff --git a/tests/unit/menu/menu_events.js b/tests/unit/menu/menu_events.js index bee6fcfa6..4cb083240 100644 --- a/tests/unit/menu/menu_events.js +++ b/tests/unit/menu/menu_events.js @@ -3,21 +3,24 @@ */ (function($) { +var log = TestHelpers.menu.log, + click = TestHelpers.menu.click; + module("menu: events"); test("handle click on menu", function() { expect(1); var menu = $('#menu1').menu({ select: function(event, ui) { - menu_log(); + log(); } }); - menu_log("click",true); - menu_click($('#menu1'),"1"); - menu_log("afterclick"); - menu_click( menu,"2"); - menu_click($('#menu1'),"3"); - menu_click( menu,"1"); + log("click",true); + click($('#menu1'),"1"); + log("afterclick"); + click( menu,"2"); + click($('#menu1'),"3"); + click( menu,"1"); equal( $("#log").html(), "1,3,2,afterclick,1,click,", "Click order not valid."); }); @@ -25,16 +28,16 @@ test("handle click on custom item menu", function() { expect(1); var menu = $('#menu5').menu({ select: function(event, ui) { - menu_log(); + log(); }, menus: "div" }); - menu_log("click",true); - menu_click($('#menu5'),"1"); - menu_log("afterclick"); - menu_click( menu,"2"); - menu_click($('#menu5'),"3"); - menu_click( menu,"1"); + log("click",true); + click($('#menu5'),"1"); + log("afterclick"); + click( menu,"2"); + click($('#menu5'),"3"); + click( menu,"1"); equal( $("#log").html(), "1,3,2,afterclick,1,click,", "Click order not valid."); }); @@ -75,7 +78,7 @@ test( "handle blur on custom item menu: click", function() { items: "div" }); - menu_click($('#menu5'),"1"); + click($('#menu5'),"1"); $( "<a>", { id: "remove"} ).appendTo("body").trigger( "click" ); $("#remove").remove(); @@ -84,14 +87,12 @@ test( "handle blur on custom item menu: click", function() { asyncTest( "handle submenu auto collapse: mouseleave", function() { expect( 4 ); - var $menu = $( "#menu2" ).menu(); - - $menu.find( "li:nth-child(7)" ).trigger( "mouseover" ); - setTimeout( menumouseleave1, 350 ); + var $menu = $( "#menu2" ).menu(), + event = $.Event( "mouseenter" ); function menumouseleave1() { equal( $menu.find( "ul[aria-expanded='true']" ).length, 1, "first submenu expanded" ); - $menu.find( "li:nth-child(7) li:first" ).trigger( "mouseover" ); + $menu.menu( "focus", event, $menu.find( "li:nth-child(7) li:first" ) ); setTimeout( menumouseleave2, 350 ); } function menumouseleave2() { @@ -108,18 +109,19 @@ asyncTest( "handle submenu auto collapse: mouseleave", function() { equal( $menu.find( "ul[aria-expanded='true']" ).length, 0, "first submenu collapsed" ); start(); } + + $menu.find( "li:nth-child(7)" ).trigger( "mouseenter" ); + setTimeout( menumouseleave1, 350 ); }); asyncTest( "handle submenu auto collapse: mouseleave", function() { expect( 4 ); - var $menu = $( "#menu5" ).menu( { menus: "div" } ); - - $menu.find( ":nth-child(7)" ).trigger( "mouseover" ); - setTimeout( menumouseleave1, 350 ); + var $menu = $( "#menu5" ).menu( { menus: "div" } ), + event = $.Event( "mouseenter" ); function menumouseleave1() { equal( $menu.find( "div[aria-expanded='true']" ).length, 1, "first submenu expanded" ); - $menu.find( ":nth-child(7)" ).find( "div" ).eq( 0 ).children().eq( 0 ).trigger( "mouseover" ); + $menu.menu( "focus", event, $menu.find( ":nth-child(7)" ).find( "div" ).eq( 0 ).children().eq( 0 ) ); setTimeout( menumouseleave2, 350 ); } function menumouseleave2() { @@ -136,6 +138,10 @@ asyncTest( "handle submenu auto collapse: mouseleave", function() { equal( $menu.find( "div[aria-expanded='true']" ).length, 0, "first submenu collapsed" ); start(); } + + $menu.find( ":nth-child(7)" ).trigger( "mouseenter" ); + setTimeout( menumouseleave1, 350 ); + }); @@ -143,60 +149,60 @@ test("handle keyboard navigation on menu without scroll and without submenus", f expect(12); var element = $('#menu1').menu({ select: function(event, ui) { - menu_log($(ui.item[0]).text()); + log($(ui.item[0]).text()); }, focus: function( event, ui ) { - menu_log($(event.target).find(".ui-state-focus").parent().index()); + log($(event.target).find(".ui-state-focus").parent().index()); } }); - menu_log("keydown",true); + log("keydown",true); element.focus(); element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); equal( $("#log").html(), "2,1,0,keydown,", "Keydown DOWN"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.UP } ); equal( $("#log").html(), "1,keydown,", "Keydown UP"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.LEFT } ); equal( $("#log").html(), "keydown,", "Keydown LEFT (no effect)"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.RIGHT } ); equal( $("#log").html(), "keydown,", "Keydown RIGHT (no effect)"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_DOWN } ); equal( $("#log").html(), "4,keydown,", "Keydown PAGE_DOWN"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_DOWN } ); equal( $("#log").html(), "keydown,", "Keydown PAGE_DOWN (no effect)"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_UP } ); equal( $("#log").html(), "0,keydown,", "Keydown PAGE_UP"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_UP } ); equal( $("#log").html(), "keydown,", "Keydown PAGE_UP (no effect)"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.END } ); equal( $("#log").html(), "4,keydown,", "Keydown END"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.HOME } ); equal( $("#log").html(), "0,keydown,", "Keydown HOME"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.ESCAPE } ); equal( $("#log").html(), "keydown,", "Keydown ESCAPE (no effect)"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); equal( $("#log").html(), "Aberdeen,keydown,", "Keydown ENTER"); }); @@ -205,14 +211,14 @@ asyncTest("handle keyboard navigation on menu without scroll and with submenus", expect(14); var element = $('#menu2').menu({ select: function(event, ui) { - menu_log($(ui.item[0]).text()); + log($(ui.item[0]).text()); }, focus: function( event, ui ) { - menu_log($(event.target).find(".ui-state-focus").parent().index()); + log($(event.target).find(".ui-state-focus").parent().index()); } }); - menu_log("keydown",true); + log("keydown",true); element.one( "menufocus", function( event, ui ) { element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); @@ -222,16 +228,16 @@ asyncTest("handle keyboard navigation on menu without scroll and with submenus", element.focus(); function menukeyboard1() { - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.UP } ); element.simulate( "keydown", { keyCode: $.ui.keyCode.UP } ); equal( $("#log").html(), "0,1,keydown,", "Keydown UP"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.LEFT } ); equal( $("#log").html(), "keydown,", "Keydown LEFT (no effect)"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); @@ -245,7 +251,7 @@ asyncTest("handle keyboard navigation on menu without scroll and with submenus", } function menukeyboard2() { - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.LEFT } ); equal( $("#log").html(), "4,keydown,", "Keydown LEFT (close submenu)"); @@ -255,35 +261,35 @@ asyncTest("handle keyboard navigation on menu without scroll and with submenus", } function menukeyboard3() { - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_DOWN } ); equal( $("#log").html(), "2,keydown,", "Keydown PAGE_DOWN"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_DOWN } ); equal( $("#log").html(), "keydown,", "Keydown PAGE_DOWN (no effect)"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_UP } ); equal( $("#log").html(), "0,keydown,", "Keydown PAGE_UP"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_UP } ); equal( $("#log").html(), "keydown,", "Keydown PAGE_UP (no effect)"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.END } ); equal( $("#log").html(), "2,keydown,", "Keydown END"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.HOME } ); equal( $("#log").html(), "0,keydown,", "Keydown HOME"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.ESCAPE } ); equal( $("#log").html(), "4,keydown,", "Keydown ESCAPE (close submenu)"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); setTimeout( menukeyboard4, 50 ); } @@ -291,7 +297,7 @@ asyncTest("handle keyboard navigation on menu without scroll and with submenus", function menukeyboard4() { equal( $("#log").html(), "0,keydown,", "Keydown ENTER (open submenu)"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); equal( $("#log").html(), "Ada,keydown,", "Keydown ENTER (select item)"); @@ -303,69 +309,69 @@ test("handle keyboard navigation on menu with scroll and without submenus", func expect(14); var element = $('#menu3').menu({ select: function(event, ui) { - menu_log($(ui.item[0]).text()); + log($(ui.item[0]).text()); }, focus: function( event, ui ) { - menu_log($(event.target).find(".ui-state-focus").parent().index()); + log($(event.target).find(".ui-state-focus").parent().index()); } }); - menu_log("keydown",true); + log("keydown",true); element.focus(); element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); equal( $("#log").html(), "2,1,0,keydown,", "Keydown DOWN"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.UP } ); element.simulate( "keydown", { keyCode: $.ui.keyCode.UP } ); equal( $("#log").html(), "0,1,keydown,", "Keydown UP"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.LEFT } ); equal( $("#log").html(), "keydown,", "Keydown LEFT (no effect)"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.RIGHT } ); equal( $("#log").html(), "keydown,", "Keydown RIGHT (no effect)"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_DOWN } ); equal( $("#log").html(), "10,keydown,", "Keydown PAGE_DOWN"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_DOWN } ); equal( $("#log").html(), "20,keydown,", "Keydown PAGE_DOWN"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_UP } ); equal( $("#log").html(), "10,keydown,", "Keydown PAGE_UP"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_UP } ); equal( $("#log").html(), "0,keydown,", "Keydown PAGE_UP"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_UP } ); equal( $("#log").html(), "keydown,", "Keydown PAGE_UP (no effect)"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.END } ); equal( $("#log").html(), "37,keydown,", "Keydown END"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_DOWN } ); equal( $("#log").html(), "keydown,", "Keydown PAGE_DOWN (no effect)"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.HOME } ); equal( $("#log").html(), "0,keydown,", "Keydown HOME"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.ESCAPE } ); equal( $("#log").html(), "keydown,", "Keydown ESCAPE (no effect)"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); equal( $("#log").html(), "Aberdeen,keydown,", "Keydown ENTER"); }); @@ -374,14 +380,14 @@ asyncTest("handle keyboard navigation on menu with scroll and with submenus", fu expect(14); var element = $('#menu4').menu({ select: function(event, ui) { - menu_log($(ui.item[0]).text()); + log($(ui.item[0]).text()); }, focus: function( event, ui ) { - menu_log($(event.target).find(".ui-state-focus").parent().index()); + log($(event.target).find(".ui-state-focus").parent().index()); } }); - menu_log("keydown",true); + log("keydown",true); element.one( "menufocus", function( event, ui ) { element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); @@ -392,16 +398,16 @@ asyncTest("handle keyboard navigation on menu with scroll and with submenus", fu function menukeyboard1() { - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.UP } ); element.simulate( "keydown", { keyCode: $.ui.keyCode.UP } ); equal( $("#log").html(), "0,1,keydown,", "Keydown UP"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.LEFT } ); equal( $("#log").html(), "keydown,", "Keydown LEFT (no effect)"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); element.simulate( "keydown", { keyCode: $.ui.keyCode.RIGHT } ); @@ -412,7 +418,7 @@ asyncTest("handle keyboard navigation on menu with scroll and with submenus", fu } function menukeyboard2() { - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.LEFT } ); equal( $("#log").html(), "1,keydown,", "Keydown LEFT (close submenu)"); @@ -422,35 +428,35 @@ asyncTest("handle keyboard navigation on menu with scroll and with submenus", fu } function menukeyboard3() { - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_DOWN } ); equal( $("#log").html(), "10,keydown,", "Keydown PAGE_DOWN"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_DOWN } ); equal( $("#log").html(), "20,keydown,", "Keydown PAGE_DOWN"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_UP } ); equal( $("#log").html(), "10,keydown,", "Keydown PAGE_UP"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_UP } ); equal( $("#log").html(), "0,keydown,", "Keydown PAGE_UP"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.END } ); equal( $("#log").html(), "27,keydown,", "Keydown END"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.HOME } ); equal( $("#log").html(), "0,keydown,", "Keydown HOME"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.ESCAPE } ); equal( $("#log").html(), "1,keydown,", "Keydown ESCAPE (close submenu)"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); setTimeout( menukeyboard4, 50 ); } @@ -458,7 +464,7 @@ asyncTest("handle keyboard navigation on menu with scroll and with submenus", fu function menukeyboard4() { equal( $("#log").html(), "0,keydown,", "Keydown ENTER (open submenu)"); - menu_log("keydown",true); + log("keydown",true); element.simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); equal( $("#log").html(), "Aberdeen,keydown,", "Keydown ENTER (select item)"); @@ -466,4 +472,56 @@ asyncTest("handle keyboard navigation on menu with scroll and with submenus", fu } }); +asyncTest("handle keyboard navigation and mouse click on menu with disabled items", function() { + expect(6); + var element = $('#menu6').menu({ + select: function(event, ui) { + log($(ui.item[0]).text()); + }, + focus: function( event, ui ) { + log($(event.target).find(".ui-state-focus").parent().index()); + } + }); + + log("keydown",true); + element.one( "menufocus", function( event, ui ) { + element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); + element.simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); + equal( $("#log").html(), "1,keydown,", "Keydown focus but not select disabled item"); + setTimeout( menukeyboard1, 50 ); + }); + element.focus(); + + + function menukeyboard1() { + log("keydown",true); + element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); + element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); + element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); + equal( $("#log").html(), "4,3,2,keydown,", "Keydown focus disabled item with submenu"); + + log("keydown",true); + element.simulate( "keydown", { keyCode: $.ui.keyCode.LEFT } ); + equal( $("#log").html(), "keydown,", "Keydown LEFT (no effect)"); + + log("keydown",true); + element.simulate( "keydown", { keyCode: $.ui.keyCode.RIGHT } ); + + setTimeout( function() { + equal( $("#log").html(), "keydown,", "Keydown RIGHT (no effect on disabled sub-menu)"); + + log("keydown",true); + element.simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } ); + + setTimeout( function() { + equal( $("#log").html(), "keydown,", "Keydown ENTER (no effect on disabled sub-menu)"); + log("click",true); + click( element, "1" ); + equal( $("#log").html(), "click,", "Click disabled item (no effect)"); + start(); + }, 50); + }, 50); + } +}); + })(jQuery); diff --git a/tests/unit/menu/menu_methods.js b/tests/unit/menu/menu_methods.js index 200ea4427..6ad7bc134 100644 --- a/tests/unit/menu/menu_methods.js +++ b/tests/unit/menu/menu_methods.js @@ -3,25 +3,28 @@ */ (function($) { +var log = TestHelpers.menu.log, + click = TestHelpers.menu.click; + module("menu: methods"); test( "enable/disable", function() { expect( 3 ); var menu = $( "#menu1" ).menu({ select: function(event, ui) { - menu_log(); + log(); } }); menu.menu("disable"); ok(menu.is(".ui-state-disabled"),"Missing ui-state-disabled class"); - menu_log("click",true); - menu_click(menu,"1"); - menu_log("afterclick"); + log("click",true); + click(menu,"1"); + log("afterclick"); menu.menu("enable"); ok(menu.not(".ui-state-disabled"),"Has ui-state-disabled class"); - menu_log("click"); - menu_click(menu,"1"); - menu_log("afterclick"); + log("click"); + click(menu,"1"); + log("afterclick"); equal( $("#log").html(), "afterclick,1,click,afterclick,click,", "Click order not valid."); }); diff --git a/tests/unit/menu/menu_options.js b/tests/unit/menu/menu_options.js index cda52d88d..e651fd2d1 100644 --- a/tests/unit/menu/menu_options.js +++ b/tests/unit/menu/menu_options.js @@ -3,6 +3,9 @@ */ (function($) { +var log = TestHelpers.menu.log, + click = TestHelpers.menu.click; + module("menu: options"); test( "{ disabled: true }", function() { @@ -10,13 +13,13 @@ test( "{ disabled: true }", function() { var menu = $( "#menu1" ).menu({ disabled: true, select: function(event, ui) { - menu_log(); + log(); } }); ok(menu.is(".ui-state-disabled"),"Missing ui-state-disabled class"); - menu_log("click",true); - menu_click(menu,"1"); - menu_log("afterclick"); + log("click",true); + click(menu,"1"); + log("afterclick"); equal( $("#log").html(), "afterclick,click,", "Click order not valid."); }); @@ -25,13 +28,13 @@ test( "{ disabled: false }", function() { var menu = $( "#menu1" ).menu({ disabled: false, select: function(event, ui) { - menu_log(); + log(); } }); ok(menu.not(".ui-state-disabled"),"Has ui-state-disabled class"); - menu_log("click",true); - menu_click(menu,"1"); - menu_log("afterclick"); + log("click",true); + click(menu,"1"); + log("afterclick"); equal( $("#log").html(), "afterclick,1,click,", "Click order not valid."); }); diff --git a/tests/unit/menu/menu_test_helpers.js b/tests/unit/menu/menu_test_helpers.js index e83795e5a..a576af19a 100644 --- a/tests/unit/menu/menu_test_helpers.js +++ b/tests/unit/menu/menu_test_helpers.js @@ -1,14 +1,16 @@ -function menu_log( message, clear ) { - if ( clear ) { - $( "#log" ).empty(); - } - if ( message === undefined ) { - message = $( "#log" ).data( "lastItem" ); - } - $( "#log" ).prepend( $.trim( message ) + "," ); -} +TestHelpers.menu = { + log: function( message, clear ) { + if ( clear ) { + $( "#log" ).empty(); + } + if ( message === undefined ) { + message = $( "#log" ).data( "lastItem" ); + } + $( "#log" ).prepend( $.trim( message ) + "," ); + }, -function menu_click( menu, item ) { - $( "#log" ).data( "lastItem", item ); - menu.children( ":eq(" + item + ")" ).find( "a:first" ).trigger( "click" ); -}
\ No newline at end of file + click: function( menu, item ) { + $( "#log" ).data( "lastItem", item ); + menu.children( ":eq(" + item + ")" ).find( "a:first" ).trigger( "click" ); + } +};
\ No newline at end of file |