Skip to content

Commit 694987f

Browse files
committed
Menu tests: Better handling of async focus in IE.
1 parent 020abcf commit 694987f

File tree

1 file changed

+108
-91
lines changed

1 file changed

+108
-91
lines changed

tests/unit/menu/menu_events.js

+108-91
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ asyncTest( "handle blur via click outside", function() {
8787
});
8888
});
8989

90-
test( "handle focus of menu with active item", function() {
90+
asyncTest( "handle focus of menu with active item", function() {
9191
expect( 1 );
9292
var element = $( "#menu1" ).menu({
9393
focus: function( event ) {
@@ -96,11 +96,19 @@ test( "handle focus of menu with active item", function() {
9696
});
9797

9898
log( "focus", true );
99-
element.focus();
100-
element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } );
101-
element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } );
102-
element.focus();
103-
equal( logOutput(), "focus,0,1,2,2", "current active item remains active" );
99+
element[0].focus();
100+
setTimeout(function() {
101+
element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } );
102+
element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } );
103+
element[0].blur();
104+
setTimeout(function() {
105+
element[0].focus();
106+
setTimeout(function() {
107+
equal( logOutput(), "focus,0,1,2,2", "current active item remains active" );
108+
start();
109+
});
110+
});
111+
});
104112
});
105113

106114
asyncTest( "handle submenu auto collapse: mouseleave", function() {
@@ -162,7 +170,7 @@ asyncTest( "handle submenu auto collapse: mouseleave", function() {
162170
});
163171

164172

165-
test( "handle keyboard navigation on menu without scroll and without submenus", function() {
173+
asyncTest( "handle keyboard navigation on menu without scroll and without submenus", function() {
166174
expect( 12 );
167175
var element = $( "#menu1" ).menu({
168176
select: function( event, ui ) {
@@ -174,54 +182,58 @@ test( "handle keyboard navigation on menu without scroll and without submenus",
174182
});
175183

176184
log( "keydown", true );
177-
element.focus();
178-
element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } );
179-
element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } );
180-
equal( logOutput(), "keydown,0,1,2", "Keydown DOWN" );
185+
element[0].focus();
186+
setTimeout(function() {
187+
element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } );
188+
element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } );
189+
equal( logOutput(), "keydown,0,1,2", "Keydown DOWN" );
181190

182-
log( "keydown", true );
183-
element.simulate( "keydown", { keyCode: $.ui.keyCode.UP } );
184-
equal( logOutput(), "keydown,1", "Keydown UP" );
191+
log( "keydown", true );
192+
element.simulate( "keydown", { keyCode: $.ui.keyCode.UP } );
193+
equal( logOutput(), "keydown,1", "Keydown UP" );
185194

186-
log( "keydown", true );
187-
element.simulate( "keydown", { keyCode: $.ui.keyCode.LEFT } );
188-
equal( logOutput(), "keydown", "Keydown LEFT (no effect)" );
195+
log( "keydown", true );
196+
element.simulate( "keydown", { keyCode: $.ui.keyCode.LEFT } );
197+
equal( logOutput(), "keydown", "Keydown LEFT (no effect)" );
189198

190-
log( "keydown", true );
191-
element.simulate( "keydown", { keyCode: $.ui.keyCode.RIGHT } );
192-
equal( logOutput(), "keydown", "Keydown RIGHT (no effect)" );
199+
log( "keydown", true );
200+
element.simulate( "keydown", { keyCode: $.ui.keyCode.RIGHT } );
201+
equal( logOutput(), "keydown", "Keydown RIGHT (no effect)" );
193202

194-
log( "keydown", true );
195-
element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_DOWN } );
196-
equal( logOutput(), "keydown,4", "Keydown PAGE_DOWN" );
203+
log( "keydown", true );
204+
element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_DOWN } );
205+
equal( logOutput(), "keydown,4", "Keydown PAGE_DOWN" );
197206

198-
log( "keydown", true );
199-
element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_DOWN } );
200-
equal( logOutput(), "keydown", "Keydown PAGE_DOWN (no effect)" );
207+
log( "keydown", true );
208+
element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_DOWN } );
209+
equal( logOutput(), "keydown", "Keydown PAGE_DOWN (no effect)" );
201210

202-
log( "keydown", true );
203-
element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_UP } );
204-
equal( logOutput(), "keydown,0", "Keydown PAGE_UP" );
211+
log( "keydown", true );
212+
element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_UP } );
213+
equal( logOutput(), "keydown,0", "Keydown PAGE_UP" );
205214

206-
log( "keydown", true );
207-
element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_UP } );
208-
equal( logOutput(), "keydown", "Keydown PAGE_UP (no effect)" );
215+
log( "keydown", true );
216+
element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_UP } );
217+
equal( logOutput(), "keydown", "Keydown PAGE_UP (no effect)" );
209218

210-
log( "keydown", true );
211-
element.simulate( "keydown", { keyCode: $.ui.keyCode.END } );
212-
equal( logOutput(), "keydown,4", "Keydown END" );
219+
log( "keydown", true );
220+
element.simulate( "keydown", { keyCode: $.ui.keyCode.END } );
221+
equal( logOutput(), "keydown,4", "Keydown END" );
213222

214-
log( "keydown", true );
215-
element.simulate( "keydown", { keyCode: $.ui.keyCode.HOME } );
216-
equal( logOutput(), "keydown,0", "Keydown HOME" );
223+
log( "keydown", true );
224+
element.simulate( "keydown", { keyCode: $.ui.keyCode.HOME } );
225+
equal( logOutput(), "keydown,0", "Keydown HOME" );
217226

218-
log( "keydown", true );
219-
element.simulate( "keydown", { keyCode: $.ui.keyCode.ESCAPE } );
220-
equal( logOutput(), "keydown", "Keydown ESCAPE (no effect)" );
227+
log( "keydown", true );
228+
element.simulate( "keydown", { keyCode: $.ui.keyCode.ESCAPE } );
229+
equal( logOutput(), "keydown", "Keydown ESCAPE (no effect)" );
221230

222-
log( "keydown", true );
223-
element.simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } );
224-
equal( logOutput(), "keydown,Aberdeen", "Keydown ENTER" );
231+
log( "keydown", true );
232+
element.simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } );
233+
equal( logOutput(), "keydown,Aberdeen", "Keydown ENTER" );
234+
235+
start();
236+
});
225237
});
226238

227239
asyncTest( "handle keyboard navigation on menu without scroll and with submenus", function() {
@@ -344,7 +356,7 @@ asyncTest( "handle keyboard navigation on menu without scroll and with submenus"
344356
}
345357
});
346358

347-
test( "handle keyboard navigation on menu with scroll and without submenus", function() {
359+
asyncTest( "handle keyboard navigation on menu with scroll and without submenus", function() {
348360
expect( 14 );
349361
var element = $( "#menu3" ).menu({
350362
select: function( event, ui ) {
@@ -356,63 +368,67 @@ test( "handle keyboard navigation on menu with scroll and without submenus", fun
356368
});
357369

358370
log( "keydown", true );
359-
element.focus();
360-
element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } );
361-
element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } );
362-
equal( logOutput(), "keydown,0,1,2", "Keydown DOWN" );
371+
element[0].focus();
372+
setTimeout(function() {
373+
element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } );
374+
element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } );
375+
equal( logOutput(), "keydown,0,1,2", "Keydown DOWN" );
363376

364-
log( "keydown", true );
365-
element.simulate( "keydown", { keyCode: $.ui.keyCode.UP } );
366-
element.simulate( "keydown", { keyCode: $.ui.keyCode.UP } );
367-
equal( logOutput(), "keydown,1,0", "Keydown UP" );
377+
log( "keydown", true );
378+
element.simulate( "keydown", { keyCode: $.ui.keyCode.UP } );
379+
element.simulate( "keydown", { keyCode: $.ui.keyCode.UP } );
380+
equal( logOutput(), "keydown,1,0", "Keydown UP" );
368381

369-
log( "keydown", true );
370-
element.simulate( "keydown", { keyCode: $.ui.keyCode.LEFT } );
371-
equal( logOutput(), "keydown", "Keydown LEFT (no effect)" );
382+
log( "keydown", true );
383+
element.simulate( "keydown", { keyCode: $.ui.keyCode.LEFT } );
384+
equal( logOutput(), "keydown", "Keydown LEFT (no effect)" );
372385

373-
log( "keydown", true );
374-
element.simulate( "keydown", { keyCode: $.ui.keyCode.RIGHT } );
375-
equal( logOutput(), "keydown", "Keydown RIGHT (no effect)" );
386+
log( "keydown", true );
387+
element.simulate( "keydown", { keyCode: $.ui.keyCode.RIGHT } );
388+
equal( logOutput(), "keydown", "Keydown RIGHT (no effect)" );
376389

377-
log( "keydown", true );
378-
element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_DOWN } );
379-
equal( logOutput(), "keydown,10", "Keydown PAGE_DOWN" );
390+
log( "keydown", true );
391+
element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_DOWN } );
392+
equal( logOutput(), "keydown,10", "Keydown PAGE_DOWN" );
380393

381-
log( "keydown", true );
382-
element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_DOWN } );
383-
equal( logOutput(), "keydown,20", "Keydown PAGE_DOWN" );
394+
log( "keydown", true );
395+
element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_DOWN } );
396+
equal( logOutput(), "keydown,20", "Keydown PAGE_DOWN" );
384397

385-
log( "keydown", true );
386-
element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_UP } );
387-
equal( logOutput(), "keydown,10", "Keydown PAGE_UP" );
398+
log( "keydown", true );
399+
element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_UP } );
400+
equal( logOutput(), "keydown,10", "Keydown PAGE_UP" );
388401

389-
log( "keydown", true );
390-
element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_UP } );
391-
equal( logOutput(), "keydown,0", "Keydown PAGE_UP" );
402+
log( "keydown", true );
403+
element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_UP } );
404+
equal( logOutput(), "keydown,0", "Keydown PAGE_UP" );
392405

393-
log( "keydown", true );
394-
element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_UP } );
395-
equal( logOutput(), "keydown", "Keydown PAGE_UP (no effect)" );
406+
log( "keydown", true );
407+
element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_UP } );
408+
equal( logOutput(), "keydown", "Keydown PAGE_UP (no effect)" );
396409

397-
log( "keydown", true );
398-
element.simulate( "keydown", { keyCode: $.ui.keyCode.END } );
399-
equal( logOutput(), "keydown,37", "Keydown END" );
410+
log( "keydown", true );
411+
element.simulate( "keydown", { keyCode: $.ui.keyCode.END } );
412+
equal( logOutput(), "keydown,37", "Keydown END" );
400413

401-
log( "keydown", true );
402-
element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_DOWN } );
403-
equal( logOutput(), "keydown", "Keydown PAGE_DOWN (no effect)" );
414+
log( "keydown", true );
415+
element.simulate( "keydown", { keyCode: $.ui.keyCode.PAGE_DOWN } );
416+
equal( logOutput(), "keydown", "Keydown PAGE_DOWN (no effect)" );
404417

405-
log( "keydown", true );
406-
element.simulate( "keydown", { keyCode: $.ui.keyCode.HOME } );
407-
equal( logOutput(), "keydown,0", "Keydown HOME" );
418+
log( "keydown", true );
419+
element.simulate( "keydown", { keyCode: $.ui.keyCode.HOME } );
420+
equal( logOutput(), "keydown,0", "Keydown HOME" );
408421

409-
log( "keydown", true );
410-
element.simulate( "keydown", { keyCode: $.ui.keyCode.ESCAPE } );
411-
equal( logOutput(), "keydown", "Keydown ESCAPE (no effect)" );
422+
log( "keydown", true );
423+
element.simulate( "keydown", { keyCode: $.ui.keyCode.ESCAPE } );
424+
equal( logOutput(), "keydown", "Keydown ESCAPE (no effect)" );
412425

413-
log( "keydown", true );
414-
element.simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } );
415-
equal( logOutput(), "keydown,Aberdeen", "Keydown ENTER" );
426+
log( "keydown", true );
427+
element.simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } );
428+
equal( logOutput(), "keydown,Aberdeen", "Keydown ENTER" );
429+
430+
start();
431+
});
416432
});
417433

418434
asyncTest( "handle keyboard navigation on menu with scroll and with submenus", function() {
@@ -561,7 +577,7 @@ asyncTest( "handle keyboard navigation and mouse click on menu with disabled ite
561577
}
562578
});
563579

564-
test( "handle keyboard navigation with spelling of menu items", function() {
580+
asyncTest( "handle keyboard navigation with spelling of menu items", function() {
565581
expect( 2 );
566582
var element = $( "#menu2" ).menu({
567583
focus: function( event ) {
@@ -577,8 +593,9 @@ test( "handle keyboard navigation with spelling of menu items", function() {
577593
equal( logOutput(), "keydown,0,1,3", "Keydown focus Addyston by spelling the first 3 letters" );
578594
element.simulate( "keydown", { keyCode: 68 } );
579595
equal( logOutput(), "keydown,0,1,3,4", "Keydown focus Delphi by repeating the 'd' again" );
596+
start();
580597
});
581-
element.focus();
598+
element[0].focus();
582599
});
583600

584601
})( jQuery );

0 commit comments

Comments
 (0)