@@ -362,14 +362,21 @@ describe('useQuery', () => {
362
362
const onSuccess = jest . fn ( )
363
363
364
364
function Page ( ) {
365
- const state = useQuery ( key , ( ) => 'data' , { onSuccess } )
365
+ const state = useQuery (
366
+ key ,
367
+ async ( ) => {
368
+ await sleep ( 10 )
369
+ return 'data'
370
+ } ,
371
+ { onSuccess }
372
+ )
366
373
states . push ( state )
367
- return null
374
+ return < div > data: { state . data } </ div >
368
375
}
369
376
370
- renderWithClient ( queryClient , < Page /> )
377
+ const rendered = renderWithClient ( queryClient , < Page /> )
371
378
372
- await sleep ( 10 )
379
+ await rendered . findByText ( 'data: data' )
373
380
expect ( states . length ) . toBe ( 2 )
374
381
expect ( onSuccess ) . toHaveBeenCalledTimes ( 1 )
375
382
expect ( onSuccess ) . toHaveBeenCalledWith ( 'data' )
@@ -379,34 +386,37 @@ describe('useQuery', () => {
379
386
const key = queryKey ( )
380
387
const states : UseQueryResult < string > [ ] = [ ]
381
388
const onSuccess = jest . fn ( )
389
+ let count = 0
382
390
383
391
function Page ( ) {
384
392
const state = useQuery (
385
393
key ,
386
394
async ( ) => {
395
+ count ++
387
396
await sleep ( 10 )
388
- return 'data'
397
+ return 'data' + count
389
398
} ,
390
- { onSuccess, notifyOnChangeProps : 'all' }
399
+ { onSuccess }
391
400
)
392
401
393
402
states . push ( state )
394
403
395
- const { refetch } = state
396
-
397
- React . useEffect ( ( ) => {
398
- setActTimeout ( ( ) => {
399
- refetch ( )
400
- } , 20 )
401
- } , [ refetch ] )
402
-
403
- return null
404
+ return (
405
+ < div >
406
+ < div > data: { state . data } </ div >
407
+ < button onClick = { ( ) => state . refetch ( ) } > refetch</ button >
408
+ </ div >
409
+ )
404
410
}
405
411
406
- renderWithClient ( queryClient , < Page /> )
412
+ const rendered = renderWithClient ( queryClient , < Page /> )
407
413
408
- await sleep ( 50 )
409
- expect ( states . length ) . toBe ( 4 )
414
+ await rendered . findByText ( 'data: data1' )
415
+ fireEvent . click ( rendered . getByRole ( 'button' , { name : / r e f e t c h / i } ) )
416
+ await rendered . findByText ( 'data: data2' )
417
+
418
+ expect ( states . length ) . toBe ( 3 ) //loading, success, success after refetch
419
+ expect ( count ) . toBe ( 2 )
410
420
expect ( onSuccess ) . toHaveBeenCalledTimes ( 2 )
411
421
} )
412
422
0 commit comments