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' ;
2
4
3
5
import {
4
6
useEventListener ,
@@ -94,7 +96,7 @@ describe('packages/hooks', () => {
94
96
describe . skip ( 'useMutationObserver' , ( ) => { } ) ; //eslint-disable-line jest/no-disabled-tests
95
97
96
98
test ( 'useViewportSize responds to updates in window size' , async ( ) => {
97
- const { result, waitForNextUpdate } = renderHook ( ( ) => useViewportSize ( ) ) ;
99
+ const { result, rerender } = renderHook ( ( ) => useViewportSize ( ) ) ;
98
100
99
101
const mutableWindow : { - readonly [ K in keyof Window ] : Window [ K ] } = window ;
100
102
const initialHeight = 360 ;
@@ -104,10 +106,11 @@ describe('packages/hooks', () => {
104
106
mutableWindow . innerWidth = initialWidth ;
105
107
106
108
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
+ } ) ;
111
114
112
115
const updateHeight = 768 ;
113
116
const updateWidth = 1024 ;
@@ -116,10 +119,10 @@ describe('packages/hooks', () => {
116
119
mutableWindow . innerWidth = updateWidth ;
117
120
118
121
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
+ } ) ;
123
126
} ) ;
124
127
125
128
describe ( 'usePoller' , ( ) => {
@@ -249,26 +252,29 @@ describe('packages/hooks', () => {
249
252
expect ( pollHandler ) . toHaveBeenCalledTimes ( 0 ) ;
250
253
} ) ;
251
254
252
- test ( 'when document is not visible' , ( ) => {
255
+ test ( 'when document is not visible' , async ( ) => {
253
256
const pollHandler = jest . fn ( ) ;
254
257
255
- renderHook ( ( ) => usePoller ( pollHandler ) ) ;
258
+ const { rerender } = renderHook ( ( ) => usePoller ( pollHandler ) ) ;
256
259
257
260
expect ( pollHandler ) . toHaveBeenCalledTimes ( 1 ) ;
258
261
259
262
mutableDocument . visibilityState = 'hidden' ;
260
263
act ( ( ) => {
261
264
document . dispatchEvent ( new Event ( 'visibilitychange' ) ) ;
262
265
} ) ;
263
-
264
266
jest . advanceTimersByTime ( 30e3 ) ;
265
267
266
268
expect ( pollHandler ) . toHaveBeenCalledTimes ( 1 ) ;
267
269
268
270
mutableDocument . visibilityState = 'visible' ;
271
+
269
272
act ( ( ) => {
270
273
document . dispatchEvent ( new Event ( 'visibilitychange' ) ) ;
271
274
} ) ;
275
+ jest . advanceTimersByTime ( 30e3 ) ;
276
+
277
+ rerender ( pollHandler ) ;
272
278
273
279
// immediate triggers the pollHandler
274
280
expect ( pollHandler ) . toHaveBeenCalledTimes ( 2 ) ;
@@ -308,11 +314,11 @@ describe('packages/hooks', () => {
308
314
rerender ( 2020 ) ;
309
315
expect ( result . current ) . toEqual ( 42 ) ;
310
316
311
- rerender ( ) ;
317
+ rerender ( 123 ) ;
312
318
expect ( result . current ) . toEqual ( 2020 ) ;
313
319
314
320
rerender ( ) ;
315
- expect ( result . current ) . toEqual ( 2020 ) ;
321
+ expect ( result . current ) . toEqual ( 123 ) ;
316
322
} ) ;
317
323
} ) ;
318
324
0 commit comments