Skip to content

Commit c275ebe

Browse files
committed
Menu Tests: Remove unused unit tests and add new unit tests to improve coverage.
1 parent c1dc191 commit c275ebe

File tree

2 files changed

+88
-37
lines changed

2 files changed

+88
-37
lines changed

tests/unit/menu/menu.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ <h2 id="qunit-userAgent"></h2>
6363
<li class="foo"><a class="foo" href="#">Aberdeen</a></li>
6464
<li class="foo"><a class="foo" href="#">Ada</a></li>
6565
<li class="foo"><a class="foo" href="#">Adamsville</a></li>
66-
<li class="foo"><a class="foo" href="#">Addyston</a></li>
66+
<li class="foo"><a class="foo" href="#"><span class="ui-icon ui-icon-print"></span>Addyston</a></li>
6767
<li>
6868
<a href="#">Delphi</a>
6969
<ul>

tests/unit/menu/menu_events.js

Lines changed: 87 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -41,49 +41,62 @@ test("handle click on custom item menu", function() {
4141
equal( $("#log").html(), "1,3,2,afterclick,1,click,", "Click order not valid.");
4242
});
4343

44-
/* Commenting out these tests until a way to handle the extra focus and blur events
45-
fired by IE is found
46-
test( "handle blur: click", function() {
47-
expect( 4 );
48-
var $menu = $( "#menu1" ).menu({
49-
focus: function( event, ui ) {
50-
equal( event.originalEvent.type, "click", "focus triggered 'click'" );
51-
equal( event.type, "menufocus", "focus event.type is 'menufocus'" );
52-
53-
},
54-
blur: function( event, ui ) {
55-
equal( event.originalEvent.type, "click", "blur triggered 'click'" );
56-
equal( event.type, "menublur", "blur event.type is 'menublur'" );
57-
}
58-
});
59-
60-
$menu.find( "li a:first" ).trigger( "click" );
61-
$( "<a>", { id: "remove"} ).appendTo("body").trigger( "click" );
44+
asyncTest( "handle blur", function() {
45+
expect( 1 );
46+
var blurHandled = false,
47+
$menu = $( "#menu1" ).menu({
48+
blur: function( event, ui ) {
49+
// Ignore duplicate blur event fired by IE
50+
if ( !blurHandled ) {
51+
blurHandled = true;
52+
equal( event.type, "menublur", "blur event.type is 'menublur'" );
53+
}
54+
}
55+
});
56+
57+
click( $menu, "1" );
58+
setTimeout( function() {
59+
$menu.blur();
60+
start();
61+
}, 350);
62+
});
6263

63-
$("#remove").remove();
64+
asyncTest( "handle blur on click", function() {
65+
expect( 1 );
66+
var blurHandled = false,
67+
$menu = $( "#menu1" ).menu({
68+
blur: function( event, ui ) {
69+
// Ignore duplicate blur event fired by IE
70+
if ( !blurHandled ) {
71+
blurHandled = true;
72+
equal( event.type, "menublur", "blur event.type is 'menublur'" );
73+
}
74+
}
75+
});
76+
77+
click( $menu, "1" );
78+
setTimeout( function() {
79+
$( "<a>", { id: "remove"} ).appendTo("body").trigger( "click" );
80+
$("#remove").remove();
81+
start();
82+
}, 350);
6483
});
6584

66-
test( "handle blur on custom item menu: click", function() {
67-
expect( 4 );
68-
var $menu = $( "#menu5" ).menu({
85+
test( "handle focus of menu with active item", function() {
86+
expect( 1 );
87+
var element = $( "#menu1" ).menu({
6988
focus: function( event, ui ) {
70-
equal( event.originalEvent.type, "click", "focus triggered 'click'" );
71-
equal( event.type, "menufocus", "focus event.type is 'menufocus'" );
72-
73-
},
74-
blur: function( event, ui ) {
75-
equal( event.originalEvent.type, "click", "blur triggered 'click'" );
76-
equal( event.type, "menublur", "blur event.type is 'menublur'" );
77-
},
78-
items: "div"
89+
log( $( event.target ).find( ".ui-state-focus" ).parent().index() );
90+
}
7991
});
8092

81-
click($('#menu5'),"1");
82-
$( "<a>", { id: "remove"} ).appendTo("body").trigger( "click" );
83-
84-
$("#remove").remove();
93+
log( "focus", true );
94+
element.focus();
95+
element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } );
96+
element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } );
97+
element.focus();
98+
equal( $("#log").html(), "2,2,1,0,focus,", "current active item remains active");
8599
});
86-
*/
87100

88101
asyncTest( "handle submenu auto collapse: mouseleave", function() {
89102
expect( 4 );
@@ -536,4 +549,42 @@ asyncTest("handle keyboard navigation and mouse click on menu with disabled item
536549
}
537550
});
538551

552+
test("handle keyboard navigation with spelling of menu items", function() {
553+
expect( 2 );
554+
var element = $( "#menu2" ).menu({
555+
focus: function( event, ui ) {
556+
log( $( event.target ).find( ".ui-state-focus" ).parent().index() );
557+
}
558+
});
559+
560+
log( "keydown", true );
561+
element.one( "menufocus", function( event, ui ) {
562+
element.simulate( "keydown", { keyCode: 65 } );
563+
element.simulate( "keydown", { keyCode: 68 } );
564+
element.simulate( "keydown", { keyCode: 68 } );
565+
equal( $("#log").html(), "3,1,0,keydown,", "Keydown focus Addyston by spelling the first 3 letters");
566+
element.simulate( "keydown", { keyCode: 68 } );
567+
equal( $("#log").html(), "4,3,1,0,keydown,", "Keydown focus Delphi by repeating the 'd' again");
568+
});
569+
element.focus();
570+
});
571+
572+
asyncTest("handle page up and page down before the menu has focus", function() {
573+
expect( 1 );
574+
var element = $( "#menu1" ).menu({
575+
focus: function( event, ui ) {
576+
log( $( event.target ).find( ".ui-state-focus" ).parent().index() );
577+
}
578+
});
579+
580+
log( "keydown", true );
581+
element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_DOWN } );
582+
element.blur();
583+
setTimeout( function() {
584+
element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_UP } );
585+
equal( $("#log").html(), "0,0,keydown,", "Page Up and Page Down bring initial focus to first item");
586+
start();
587+
}, 350);
588+
});
589+
539590
})(jQuery);

0 commit comments

Comments
 (0)