1- import { act , renderHook } from '@testing-library/react-hooks' ;
1+ import { waitFor } from '@testing-library/react' ;
2+
3+ import { act , renderHook } from '@leafygreen-ui/testing-lib' ;
24
35import {
46 useEventListener ,
@@ -94,7 +96,7 @@ describe('packages/hooks', () => {
9496 describe . skip ( 'useMutationObserver' , ( ) => { } ) ; //eslint-disable-line jest/no-disabled-tests
9597
9698 test ( 'useViewportSize responds to updates in window size' , async ( ) => {
97- const { result, waitForNextUpdate } = renderHook ( ( ) => useViewportSize ( ) ) ;
99+ const { result, rerender } = renderHook ( ( ) => useViewportSize ( ) ) ;
98100
99101 const mutableWindow : { - readonly [ K in keyof Window ] : Window [ K ] } = window ;
100102 const initialHeight = 360 ;
@@ -104,10 +106,11 @@ describe('packages/hooks', () => {
104106 mutableWindow . innerWidth = initialWidth ;
105107
106108 window . dispatchEvent ( new Event ( 'resize' ) ) ;
107- await act ( waitForNextUpdate ) ;
108-
109- expect ( result ?. current ?. height ) . toBe ( initialHeight ) ;
110- expect ( result ?. current ?. width ) . toBe ( initialWidth ) ;
109+ rerender ( ) ;
110+ await waitFor ( ( ) => {
111+ expect ( result ?. current ?. height ) . toBe ( initialHeight ) ;
112+ expect ( result ?. current ?. width ) . toBe ( initialWidth ) ;
113+ } ) ;
111114
112115 const updateHeight = 768 ;
113116 const updateWidth = 1024 ;
@@ -116,10 +119,10 @@ describe('packages/hooks', () => {
116119 mutableWindow . innerWidth = updateWidth ;
117120
118121 window . dispatchEvent ( new Event ( 'resize' ) ) ;
119- await act ( waitForNextUpdate ) ;
120-
121- expect ( result ?. current ?. height ) . toBe ( updateHeight ) ;
122- expect ( result ?. current ?. width ) . toBe ( updateWidth ) ;
122+ await waitFor ( ( ) => {
123+ expect ( result ?. current ?. height ) . toBe ( updateHeight ) ;
124+ expect ( result ?. current ?. width ) . toBe ( updateWidth ) ;
125+ } ) ;
123126 } ) ;
124127
125128 describe ( 'usePoller' , ( ) => {
@@ -249,26 +252,29 @@ describe('packages/hooks', () => {
249252 expect ( pollHandler ) . toHaveBeenCalledTimes ( 0 ) ;
250253 } ) ;
251254
252- test ( 'when document is not visible' , ( ) => {
255+ test ( 'when document is not visible' , async ( ) => {
253256 const pollHandler = jest . fn ( ) ;
254257
255- renderHook ( ( ) => usePoller ( pollHandler ) ) ;
258+ const { rerender } = renderHook ( ( ) => usePoller ( pollHandler ) ) ;
256259
257260 expect ( pollHandler ) . toHaveBeenCalledTimes ( 1 ) ;
258261
259262 mutableDocument . visibilityState = 'hidden' ;
260263 act ( ( ) => {
261264 document . dispatchEvent ( new Event ( 'visibilitychange' ) ) ;
262265 } ) ;
263-
264266 jest . advanceTimersByTime ( 30e3 ) ;
265267
266268 expect ( pollHandler ) . toHaveBeenCalledTimes ( 1 ) ;
267269
268270 mutableDocument . visibilityState = 'visible' ;
271+
269272 act ( ( ) => {
270273 document . dispatchEvent ( new Event ( 'visibilitychange' ) ) ;
271274 } ) ;
275+ jest . advanceTimersByTime ( 30e3 ) ;
276+
277+ rerender ( pollHandler ) ;
272278
273279 // immediate triggers the pollHandler
274280 expect ( pollHandler ) . toHaveBeenCalledTimes ( 2 ) ;
@@ -308,11 +314,11 @@ describe('packages/hooks', () => {
308314 rerender ( 2020 ) ;
309315 expect ( result . current ) . toEqual ( 42 ) ;
310316
311- rerender ( ) ;
317+ rerender ( 123 ) ;
312318 expect ( result . current ) . toEqual ( 2020 ) ;
313319
314320 rerender ( ) ;
315- expect ( result . current ) . toEqual ( 2020 ) ;
321+ expect ( result . current ) . toEqual ( 123 ) ;
316322 } ) ;
317323 } ) ;
318324
0 commit comments