@@ -228,30 +228,34 @@ describe('Focus', () => {
228228 ) ;
229229 } ;
230230 const { getByTestId, container } = render ( < TestApp /> ) ;
231- // ================ check keydown ==============
232- // first item
233- keyDown ( container , KeyCode . DOWN ) ;
234- isActive ( container , 0 ) ;
235- // second item
236- keyDown ( container , KeyCode . DOWN ) ;
237- isActive ( container , 1 ) ;
238- // select second item
239- keyDown ( container , KeyCode . ENTER ) ;
231+ // let focusSpy = jest;
232+ let focusSpy : jest . SpyInstance | undefined ;
233+ try {
234+ // ================ check keydown ==============
235+ // first item
236+ keyDown ( container , KeyCode . DOWN ) ;
237+ isActive ( container , 0 ) ;
238+ // second item
239+ keyDown ( container , KeyCode . DOWN ) ;
240+ isActive ( container , 1 ) ;
241+ // select second item
242+ keyDown ( container , KeyCode . ENTER ) ;
240243
241- // mock focus on item 0 to make sure it gets focused
242- const item0 = getByTestId ( '0' ) ;
243- const focusSpy = jest . spyOn ( item0 , 'focus' ) . mockImplementation ( ( ) => { } ) ;
244- menuRef . current . focus ( ) ;
245- expect ( focusSpy ) . toHaveBeenCalled ( ) ;
244+ // mock focus on item 0 to make sure it gets focused
245+ const item0 = getByTestId ( '0' ) ;
246+ focusSpy = jest . spyOn ( item0 , 'focus' ) . mockImplementation ( ( ) => { } ) ;
247+ menuRef . current . focus ( ) ;
248+ expect ( focusSpy ) . toHaveBeenCalled ( ) ;
246249
247- // ================ check click ==============
248- // click third item
249- const item2 = getByTestId ( '2' ) ;
250- fireEvent . click ( item2 ) ;
251- menuRef . current . focus ( ) ;
252- expect ( focusSpy ) . toHaveBeenCalled ( ) ;
253- // cleanup
254- focusSpy . mockRestore ( ) ;
250+ // ================ check click ==============
251+ // click third item
252+ const item2 = getByTestId ( '2' ) ;
253+ fireEvent . click ( item2 ) ;
254+ menuRef . current . focus ( ) ;
255+ expect ( focusSpy ) . toHaveBeenCalled ( ) ;
256+ } finally {
257+ focusSpy . mockRestore ( ) ;
258+ }
255259 } ) ;
256260 it ( 'When selectable is configured, the focus should move to the selected item if there is a selection, else to the first item, not retain on last focused item' , async ( ) => {
257261 const menuRef = React . createRef < MenuRef > ( ) ;
@@ -274,32 +278,36 @@ describe('Focus', () => {
274278 ) ;
275279 } ;
276280 const { getByTestId, container } = render ( < TestApp /> ) ;
277- // ================ check keydown ==============
278- // first item
279- keyDown ( container , KeyCode . DOWN ) ;
280- isActive ( container , 0 ) ;
281- // second item
282- keyDown ( container , KeyCode . DOWN ) ;
283- isActive ( container , 1 ) ;
284- // select second item
285- keyDown ( container , KeyCode . ENTER ) ;
286- // mock focus on item 1 to make sure it gets focused
287- const item1 = getByTestId ( '1' ) ;
288- const focusSpy = jest . spyOn ( item1 , 'focus' ) . mockImplementation ( ( ) => { } ) ;
289- menuRef . current . focus ( ) ;
290- expect ( focusSpy ) . toHaveBeenCalled ( ) ;
281+ let focusSpy : jest . SpyInstance | undefined ;
282+ let focusSpy2 : jest . SpyInstance | undefined ;
283+ try {
284+ // ================ check keydown ==============
285+ // first item
286+ keyDown ( container , KeyCode . DOWN ) ;
287+ isActive ( container , 0 ) ;
288+ // second item
289+ keyDown ( container , KeyCode . DOWN ) ;
290+ isActive ( container , 1 ) ;
291+ // select second item
292+ keyDown ( container , KeyCode . ENTER ) ;
293+ // mock focus on item 1 to make sure it gets focused
294+ const item1 = getByTestId ( '1' ) ;
295+ focusSpy = jest . spyOn ( item1 , 'focus' ) . mockImplementation ( ( ) => { } ) ;
296+ menuRef . current . focus ( ) ;
297+ expect ( focusSpy ) . toHaveBeenCalled ( ) ;
291298
292- // ================ check click ==============
293- // click third item
294- const item2 = getByTestId ( '2' ) ;
295- const focusSpy2 = jest . spyOn ( item2 , 'focus' ) . mockImplementation ( ( ) => { } ) ;
296- fireEvent . click ( item2 ) ;
297- menuRef . current . focus ( ) ;
298- // mock focus on item 2 to make sure it gets focused
299- expect ( focusSpy2 ) . toHaveBeenCalled ( ) ;
300- // cleanup
301- focusSpy . mockRestore ( ) ;
302- focusSpy2 . mockRestore ( ) ;
299+ // ================ check click ==============
300+ // click third item
301+ const item2 = getByTestId ( '2' ) ;
302+ focusSpy2 = jest . spyOn ( item2 , 'focus' ) . mockImplementation ( ( ) => { } ) ;
303+ fireEvent . click ( item2 ) ;
304+ menuRef . current . focus ( ) ;
305+ // mock focus on item 2 to make sure it gets focused
306+ expect ( focusSpy2 ) . toHaveBeenCalled ( ) ;
307+ } finally {
308+ focusSpy ?. mockRestore ( ) ;
309+ focusSpy2 ?. mockRestore ( ) ;
310+ }
303311 } ) ;
304312} ) ;
305313/* eslint-enable */
0 commit comments