@@ -227,25 +227,24 @@ describe('Standalone Menu Pattern', () => {
227227 const apple = getItem ( 'Apple' ) ;
228228 const banana = getItem ( 'Banana' ) ;
229229 const berries = getItem ( 'Berries' ) ;
230- const blueberry = getItem ( 'Blueberry' ) ;
231230
232231 keydown ( apple ! , 'ArrowDown' ) ;
233232 keydown ( banana ! , 'ArrowDown' ) ;
234233 keydown ( berries ! , 'ArrowRight' ) ;
235234
236235 expect ( isSubmenuExpanded ( ) ) . toBe ( true ) ;
237- expect ( document . activeElement ) . toBe ( blueberry ) ;
236+ expect ( document . activeElement ) . toBe ( getItem ( 'Blueberry' ) ) ;
238237 } ) ;
239238
240239 it ( 'should close submenu on arrow left' , ( ) => {
241240 const apple = getItem ( 'Apple' ) ;
242241 const banana = getItem ( 'Banana' ) ;
243242 const berries = getItem ( 'Berries' ) ;
244- const blueberry = getItem ( 'Blueberry' ) ;
245243
246244 keydown ( apple ! , 'ArrowDown' ) ;
247245 keydown ( banana ! , 'ArrowDown' ) ;
248246 keydown ( berries ! , 'ArrowRight' ) ;
247+ const blueberry = getItem ( 'Blueberry' ) ;
249248 keydown ( blueberry ! , 'ArrowLeft' ) ;
250249
251250 expect ( isSubmenuExpanded ( ) ) . toBe ( false ) ;
@@ -254,54 +253,51 @@ describe('Standalone Menu Pattern', () => {
254253
255254 it ( 'should close submenu on click outside' , ( ) => {
256255 const berries = getItem ( 'Berries' ) ;
257- const blueberry = getItem ( 'Blueberry' ) ;
258256
259257 click ( berries ! ) ;
260258 expect ( isSubmenuExpanded ( ) ) . toBe ( true ) ;
261259
262- focusout ( blueberry ! , document . body ) ;
260+ focusout ( getItem ( 'Blueberry' ) ! , document . body ) ;
263261 expect ( isSubmenuExpanded ( ) ) . toBe ( false ) ;
264262 } ) ;
265263
266264 it ( 'should expand submenu on enter' , ( ) => {
267265 const apple = getItem ( 'Apple' ) ;
268266 const banana = getItem ( 'Banana' ) ;
269267 const berries = getItem ( 'Berries' ) ;
270- const blueberry = getItem ( 'Blueberry' ) ;
271268
272269 keydown ( apple ! , 'ArrowDown' ) ;
273270 keydown ( banana ! , 'ArrowDown' ) ;
274271 keydown ( berries ! , 'Enter' ) ;
275272
276273 expect ( isSubmenuExpanded ( ) ) . toBe ( true ) ;
277- expect ( document . activeElement ) . toBe ( blueberry ) ;
274+ expect ( document . activeElement ) . toBe ( getItem ( 'Blueberry' ) ) ;
278275 } ) ;
279276
280277 it ( 'should expand submenu on space' , ( ) => {
281278 const apple = getItem ( 'Apple' ) ;
282279 const banana = getItem ( 'Banana' ) ;
283280 const berries = getItem ( 'Berries' ) ;
284- const blueberry = getItem ( 'Blueberry' ) ;
285281
286282 keydown ( apple ! , 'ArrowDown' ) ;
287283 keydown ( banana ! , 'ArrowDown' ) ;
288284 keydown ( berries ! , ' ' ) ;
289285
290286 expect ( isSubmenuExpanded ( ) ) . toBe ( true ) ;
291- expect ( document . activeElement ) . toBe ( blueberry ) ;
287+ expect ( document . activeElement ) . toBe ( getItem ( 'Blueberry' ) ) ;
292288 } ) ;
293289
294290 it ( 'should close submenu on escape' , ( ) => {
295291 const apple = getItem ( 'Apple' ) ;
296292 const banana = getItem ( 'Banana' ) ;
297293 const berries = getItem ( 'Berries' ) ;
298- const blueberry = getItem ( 'Blueberry' ) ;
299294
300295 keydown ( apple ! , 'ArrowDown' ) ;
301296 keydown ( banana ! , 'ArrowDown' ) ;
302297 keydown ( berries ! , 'ArrowRight' ) ;
303298
304299 expect ( isSubmenuExpanded ( ) ) . toBe ( true ) ;
300+ const blueberry = getItem ( 'Blueberry' ) ;
305301 expect ( document . activeElement ) . toBe ( blueberry ) ;
306302
307303 keydown ( blueberry ! , 'Escape' ) ;
@@ -332,11 +328,11 @@ describe('Standalone Menu Pattern', () => {
332328 const apple = getItem ( 'Apple' ) ;
333329 const banana = getItem ( 'Banana' ) ;
334330 const berries = getItem ( 'Berries' ) ;
335- const blueberry = getItem ( 'Blueberry' ) ;
336331
337332 keydown ( apple ! , 'ArrowDown' ) ;
338333 keydown ( banana ! , 'ArrowDown' ) ;
339334 keydown ( berries ! , 'Enter' ) ; // open submenu
335+ const blueberry = getItem ( 'Blueberry' ) ;
340336
341337 expect ( document . activeElement ) . toBe ( blueberry ) ;
342338
@@ -351,11 +347,11 @@ describe('Standalone Menu Pattern', () => {
351347 const apple = getItem ( 'Apple' ) ;
352348 const banana = getItem ( 'Banana' ) ;
353349 const berries = getItem ( 'Berries' ) ;
354- const blueberry = getItem ( 'Blueberry' ) ;
355350
356351 keydown ( apple ! , 'ArrowDown' ) ;
357352 keydown ( banana ! , 'ArrowDown' ) ;
358353 keydown ( berries ! , ' ' ) ; // open submenu
354+ const blueberry = getItem ( 'Blueberry' ) ;
359355
360356 expect ( document . activeElement ) . toBe ( blueberry ) ;
361357
@@ -369,12 +365,12 @@ describe('Standalone Menu Pattern', () => {
369365 const apple = getItem ( 'Apple' ) ;
370366 const banana = getItem ( 'Banana' ) ;
371367 const berries = getItem ( 'Berries' ) ;
372- const blueberry = getItem ( 'Blueberry' ) ;
373368
374369 keydown ( apple ! , 'ArrowDown' ) ;
375370 keydown ( banana ! , 'ArrowDown' ) ;
376371 keydown ( berries ! , 'ArrowRight' ) ;
377372 expect ( isSubmenuExpanded ( ) ) . toBe ( true ) ;
373+ const blueberry = getItem ( 'Blueberry' ) ;
378374 expect ( document . activeElement ) . toBe ( blueberry ) ;
379375
380376 const externalElement = document . createElement ( 'button' ) ;
@@ -424,25 +420,24 @@ describe('Standalone Menu Pattern', () => {
424420 const apple = getItem ( 'Apple' ) ;
425421 const banana = getItem ( 'Banana' ) ;
426422 const berries = getItem ( 'Berries' ) ;
427- const blueberry = getItem ( 'Blueberry' ) ;
428423
429424 keydown ( apple ! , 'ArrowDown' ) ;
430425 keydown ( banana ! , 'ArrowDown' ) ;
431426 keydown ( berries ! , 'ArrowLeft' ) ;
432427
433428 expect ( isSubmenuExpanded ( ) ) . toBe ( true ) ;
434- expect ( document . activeElement ) . toBe ( blueberry ) ;
429+ expect ( document . activeElement ) . toBe ( getItem ( 'Blueberry' ) ) ;
435430 } ) ;
436431
437432 it ( 'should close submenu on arrow right' , ( ) => {
438433 const apple = getItem ( 'Apple' ) ;
439434 const banana = getItem ( 'Banana' ) ;
440435 const berries = getItem ( 'Berries' ) ;
441- const blueberry = getItem ( 'Blueberry' ) ;
442436
443437 keydown ( apple ! , 'ArrowDown' ) ;
444438 keydown ( banana ! , 'ArrowDown' ) ;
445439 keydown ( berries ! , 'ArrowLeft' ) ;
440+ const blueberry = getItem ( 'Blueberry' ) ;
446441 keydown ( blueberry ! , 'ArrowRight' ) ;
447442
448443 expect ( isSubmenuExpanded ( ) ) . toBe ( false ) ;
@@ -454,7 +449,13 @@ describe('Standalone Menu Pattern', () => {
454449describe ( 'Menu Trigger Pattern' , ( ) => {
455450 let fixture : ComponentFixture < MenuTriggerExample > ;
456451
452+ const focusin = ( element : Element ) => {
453+ element . dispatchEvent ( new FocusEvent ( 'focusin' , { bubbles : true } ) ) ;
454+ fixture . detectChanges ( ) ;
455+ } ;
456+
457457 const keydown = ( element : Element , key : string , modifierKeys : { } = { } ) => {
458+ focusin ( element ) ;
458459 element . dispatchEvent (
459460 new KeyboardEvent ( 'keydown' , {
460461 key,
@@ -466,6 +467,7 @@ describe('Menu Trigger Pattern', () => {
466467 } ;
467468
468469 const click = ( element : Element , eventInit ?: PointerEventInit ) => {
470+ focusin ( element ) ;
469471 element . dispatchEvent ( new PointerEvent ( 'click' , { bubbles : true , ...eventInit } ) ) ;
470472 fixture . detectChanges ( ) ;
471473 } ;
@@ -479,7 +481,6 @@ describe('Menu Trigger Pattern', () => {
479481 TestBed . configureTestingModule ( { } ) ;
480482 fixture = TestBed . createComponent ( MenuTriggerExample ) ;
481483 fixture . detectChanges ( ) ;
482- getItem ( 'Apple' ) ?. focus ( ) ;
483484 }
484485
485486 function getTrigger ( ) : HTMLElement {
@@ -598,7 +599,7 @@ describe('Menu Trigger Pattern', () => {
598599 expect ( isExpanded ( ) ) . toBe ( false ) ;
599600 } ) ;
600601
601- it ( 'should close on selecting an item on space' , ( ) => {
602+ it ( 'should close on selecting an item on space' , async ( ) => {
602603 click ( getTrigger ( ) ) ;
603604 keydown ( getItem ( 'Apple' ) ! , ' ' ) ;
604605 expect ( isExpanded ( ) ) . toBe ( false ) ;
0 commit comments