@@ -179,10 +179,10 @@ describe('useSuspenseQueries', () => {
179
179
</ React . Suspense > ,
180
180
)
181
181
182
- rendered . getByText ( 'loading...' )
182
+ expect ( rendered . getByText ( 'loading...' ) ) . toBeInTheDocument ( )
183
183
expect ( spy ) . not . toHaveBeenCalled ( )
184
184
await act ( ( ) => vi . advanceTimersByTimeAsync ( 30 ) )
185
- rendered . getByText ( 'data' )
185
+ expect ( rendered . getByText ( 'data' ) ) . toBeInTheDocument ( )
186
186
expect ( spy ) . toHaveBeenCalled ( )
187
187
} )
188
188
} )
@@ -241,9 +241,9 @@ describe('useSuspenseQueries 2', () => {
241
241
</ React . Suspense > ,
242
242
)
243
243
244
- rendered . getByText ( 'loading' )
245
- await act ( ( ) => vi . advanceTimersByTimeAsync ( 21 ) )
246
- rendered . getByText ( 'data: 1,2' )
244
+ expect ( rendered . getByText ( 'loading' ) ) . toBeInTheDocument ( )
245
+ await act ( ( ) => vi . advanceTimersByTimeAsync ( 20 ) )
246
+ expect ( rendered . getByText ( 'data: 1,2' ) ) . toBeInTheDocument ( )
247
247
expect ( results ) . toEqual ( [ '1' , '2' , 'loading' ] )
248
248
} )
249
249
@@ -296,10 +296,10 @@ describe('useSuspenseQueries 2', () => {
296
296
</ React . Suspense > ,
297
297
)
298
298
299
- rendered . getByText ( 'loading' )
299
+ expect ( rendered . getByText ( 'loading' ) ) . toBeInTheDocument ( )
300
300
expect ( refs . length ) . toBe ( 2 )
301
- await act ( ( ) => vi . advanceTimersByTimeAsync ( 21 ) )
302
- rendered . getByText ( 'data: 1,2' )
301
+ await act ( ( ) => vi . advanceTimersByTimeAsync ( 20 ) )
302
+ expect ( rendered . getByText ( 'data: 1,2' ) ) . toBeInTheDocument ( )
303
303
expect ( refs [ 0 ] ) . toBe ( refs [ 1 ] )
304
304
} )
305
305
@@ -311,7 +311,7 @@ describe('useSuspenseQueries 2', () => {
311
311
312
312
const { data } = useSuspenseQuery ( {
313
313
queryKey : [ id ] ,
314
- queryFn : ( ) => Promise . resolve ( `Data ${ id } ` ) ,
314
+ queryFn : ( ) => sleep ( 10 ) . then ( ( ) => `Data ${ id } ` ) ,
315
315
} )
316
316
317
317
// defensive guard here
@@ -335,8 +335,8 @@ describe('useSuspenseQueries 2', () => {
335
335
)
336
336
337
337
expect ( rendered . getByText ( 'loading' ) ) . toBeInTheDocument ( )
338
- await act ( ( ) => vi . advanceTimersByTimeAsync ( 0 ) )
339
- rendered . getByText ( 'Data 0' )
338
+ await act ( ( ) => vi . advanceTimersByTimeAsync ( 10 ) )
339
+ expect ( rendered . getByText ( 'Data 0' ) ) . toBeInTheDocument ( )
340
340
341
341
// go offline
342
342
document . dispatchEvent ( new CustomEvent ( 'offline' ) )
@@ -348,7 +348,7 @@ describe('useSuspenseQueries 2', () => {
348
348
document . dispatchEvent ( new CustomEvent ( 'online' ) )
349
349
350
350
fireEvent . click ( rendered . getByText ( 'fetch' ) )
351
- await act ( ( ) => vi . advanceTimersByTimeAsync ( 0 ) )
351
+ await act ( ( ) => vi . advanceTimersByTimeAsync ( 10 ) )
352
352
// query should resume
353
353
expect ( rendered . getByText ( 'Data 1' ) ) . toBeInTheDocument ( )
354
354
} )
@@ -363,15 +363,11 @@ describe('useSuspenseQueries 2', () => {
363
363
const [ fail , setFail ] = React . useState ( false )
364
364
const { data } = useSuspenseQuery ( {
365
365
queryKey : [ key , fail ] ,
366
- queryFn : async ( ) => {
367
- await sleep ( 10 )
368
-
369
- if ( fail ) {
370
- throw new Error ( 'Suspense Error Bingo' )
371
- } else {
366
+ queryFn : ( ) =>
367
+ sleep ( 10 ) . then ( ( ) => {
368
+ if ( fail ) throw new Error ( 'Suspense Error Bingo' )
372
369
return 'data'
373
- }
374
- } ,
370
+ } ) ,
375
371
retry : 0 ,
376
372
} )
377
373
@@ -393,12 +389,12 @@ describe('useSuspenseQueries 2', () => {
393
389
</ ErrorBoundary > ,
394
390
)
395
391
396
- rendered . getByText ( 'Loading...' )
397
- await act ( ( ) => vi . advanceTimersByTimeAsync ( 11 ) )
398
- rendered . getByText ( 'rendered: data' )
392
+ expect ( rendered . getByText ( 'Loading...' ) ) . toBeInTheDocument ( )
393
+ await act ( ( ) => vi . advanceTimersByTimeAsync ( 10 ) )
394
+ expect ( rendered . getByText ( 'rendered: data' ) ) . toBeInTheDocument ( )
399
395
fireEvent . click ( rendered . getByText ( 'trigger fail' ) )
400
- await act ( ( ) => vi . advanceTimersByTimeAsync ( 11 ) )
401
- rendered . getByText ( 'error boundary' )
396
+ await act ( ( ) => vi . advanceTimersByTimeAsync ( 10 ) )
397
+ expect ( rendered . getByText ( 'error boundary' ) ) . toBeInTheDocument ( )
402
398
expect ( consoleMock . mock . calls [ 0 ] ?. [ 1 ] ) . toStrictEqual (
403
399
new Error ( 'Suspense Error Bingo' ) ,
404
400
)
@@ -413,10 +409,7 @@ describe('useSuspenseQueries 2', () => {
413
409
const [ isPending , startTransition ] = React . useTransition ( )
414
410
const { data } = useSuspenseQuery ( {
415
411
queryKey : [ key , count ] ,
416
- queryFn : async ( ) => {
417
- await sleep ( 10 )
418
- return 'data' + count
419
- } ,
412
+ queryFn : async ( ) => sleep ( 10 ) . then ( ( ) => 'data' + count ) ,
420
413
} )
421
414
422
415
return (
@@ -438,11 +431,11 @@ describe('useSuspenseQueries 2', () => {
438
431
)
439
432
440
433
expect ( rendered . getByText ( 'Loading...' ) ) . toBeInTheDocument ( )
441
- await act ( ( ) => vi . advanceTimersByTimeAsync ( 11 ) )
434
+ await act ( ( ) => vi . advanceTimersByTimeAsync ( 10 ) )
442
435
expect ( rendered . getByText ( 'data0' ) ) . toBeInTheDocument ( )
443
436
fireEvent . click ( rendered . getByText ( 'inc' ) )
444
437
expect ( rendered . getByText ( 'Pending...' ) ) . toBeInTheDocument ( )
445
- await act ( ( ) => vi . advanceTimersByTimeAsync ( 11 ) )
438
+ await act ( ( ) => vi . advanceTimersByTimeAsync ( 10 ) )
446
439
expect ( rendered . getByText ( 'data1' ) ) . toBeInTheDocument ( )
447
440
} )
448
441
@@ -490,12 +483,12 @@ describe('useSuspenseQueries 2', () => {
490
483
< App /> ,
491
484
)
492
485
493
- rendered . getByText ( 'Loading...' )
494
- await act ( ( ) => vi . advanceTimersByTimeAsync ( 11 ) )
495
- rendered . getByText ( 'data0' )
486
+ expect ( rendered . getByText ( 'Loading...' ) ) . toBeInTheDocument ( )
487
+ await act ( ( ) => vi . advanceTimersByTimeAsync ( 10 ) )
488
+ expect ( rendered . getByText ( 'data0' ) ) . toBeInTheDocument ( )
496
489
fireEvent . click ( rendered . getByText ( 'inc' ) )
497
- await act ( ( ) => vi . advanceTimersByTimeAsync ( 11 ) )
498
- rendered . getByText ( 'data1' )
490
+ await act ( ( ) => vi . advanceTimersByTimeAsync ( 10 ) )
491
+ expect ( rendered . getByText ( 'data1' ) ) . toBeInTheDocument ( )
499
492
expect ( queryFnCount ) . toBe ( 2 )
500
493
} )
501
494
@@ -514,10 +507,7 @@ describe('useSuspenseQueries 2', () => {
514
507
const [ isPending , startTransition ] = React . useTransition ( )
515
508
const { data } = useSuspenseQuery ( {
516
509
queryKey : [ key , count ] ,
517
- queryFn : async ( ) => {
518
- await sleep ( 10 )
519
- return 'data' + count
520
- } ,
510
+ queryFn : async ( ) => sleep ( 10 ) . then ( ( ) => 'data' + count ) ,
521
511
} )
522
512
523
513
return (
@@ -539,11 +529,11 @@ describe('useSuspenseQueries 2', () => {
539
529
)
540
530
541
531
expect ( rendered . getByText ( 'Loading...' ) ) . toBeInTheDocument ( )
542
- await act ( ( ) => vi . advanceTimersByTimeAsync ( 11 ) )
532
+ await act ( ( ) => vi . advanceTimersByTimeAsync ( 10 ) )
543
533
expect ( rendered . getByText ( 'data0' ) ) . toBeInTheDocument ( )
544
534
fireEvent . click ( rendered . getByText ( 'inc' ) )
545
535
expect ( rendered . getByText ( 'Pending...' ) ) . toBeInTheDocument ( )
546
- await act ( ( ) => vi . advanceTimersByTimeAsync ( 11 ) )
536
+ await act ( ( ) => vi . advanceTimersByTimeAsync ( 10 ) )
547
537
expect ( rendered . getByText ( 'data1' ) ) . toBeInTheDocument ( )
548
538
} )
549
539
@@ -557,8 +547,9 @@ describe('useSuspenseQueries 2', () => {
557
547
function Page ( ) {
558
548
useSuspenseQuery ( {
559
549
queryKey : key ,
560
- queryFn : ( ) => {
550
+ queryFn : async ( ) => {
561
551
count ++
552
+ await sleep ( 10 )
562
553
return Promise . reject ( new Error ( 'Query failed' ) )
563
554
} ,
564
555
gcTime : 0 ,
@@ -584,8 +575,8 @@ describe('useSuspenseQueries 2', () => {
584
575
585
576
const rendered = renderWithClient ( queryClient , < App /> )
586
577
587
- await act ( ( ) => vi . advanceTimersByTimeAsync ( 0 ) )
588
- rendered . getByText ( 'There was an error!' )
578
+ await act ( ( ) => vi . advanceTimersByTimeAsync ( 10 ) )
579
+ expect ( rendered . getByText ( 'There was an error!' ) ) . toBeInTheDocument ( )
589
580
expect ( count ) . toBe ( 1 )
590
581
consoleMock . mockRestore ( )
591
582
} )
@@ -613,10 +604,7 @@ describe('useSuspenseQueries 2', () => {
613
604
function Component ( ) {
614
605
const { data } = useSuspenseQuery ( {
615
606
queryKey : key ,
616
- queryFn : async ( ) => {
617
- await sleep ( 3000 )
618
- return 'data'
619
- } ,
607
+ queryFn : async ( ) => sleep ( 3000 ) . then ( ( ) => 'data' ) ,
620
608
gcTime : 1000 ,
621
609
} )
622
610
@@ -639,14 +627,11 @@ describe('useSuspenseQueries 2', () => {
639
627
640
628
const rendered = renderWithClient ( queryClient , < App /> )
641
629
642
- await act ( ( ) => vi . advanceTimersByTimeAsync ( 200 ) )
643
- rendered . getByText ( 'loading' )
644
- // unmount while still fetching
630
+ expect ( rendered . getByText ( 'loading' ) ) . toBeInTheDocument ( )
645
631
fireEvent . click ( rendered . getByText ( 'hide' ) )
646
- await act ( ( ) => vi . advanceTimersByTimeAsync ( 800 ) )
647
- rendered . getByText ( 'page2' )
632
+ expect ( rendered . getByText ( 'page2' ) ) . toBeInTheDocument ( )
648
633
// wait for query to be resolved
649
- await act ( ( ) => vi . advanceTimersByTimeAsync ( 2000 ) )
634
+ await act ( ( ) => vi . advanceTimersByTimeAsync ( 3000 ) )
650
635
expect ( queryClient . getQueryData ( key ) ) . toBe ( 'data' )
651
636
// wait for gc
652
637
await act ( ( ) => vi . advanceTimersByTimeAsync ( 1000 ) )
0 commit comments