1- import { describe , expect , it , vi } from 'vitest'
1+ import { afterEach , beforeEach , describe , expect , it , vi } from 'vitest'
22import React from 'react'
3- import { fireEvent , waitFor } from '@testing-library/react'
3+ import { fireEvent } from '@testing-library/react'
44import { ErrorBoundary } from 'react-error-boundary'
55import {
66 QueryCache ,
77 usePrefetchQuery ,
88 useQueryErrorResetBoundary ,
99 useSuspenseQuery ,
1010} from '..'
11- import { createQueryClient , queryKey , renderWithClient , sleep } from './utils'
11+ import { createQueryClient , queryKey , renderWithClient } from './utils'
1212
1313import type { UseSuspenseQueryOptions } from '..'
1414
1515const generateQueryFn = ( data : string ) =>
1616 vi
1717 . fn < ( ...args : Array < any > ) => Promise < string > > ( )
1818 . mockImplementation ( async ( ) => {
19- await sleep ( 10 )
19+ await vi . advanceTimersByTimeAsync ( 10 )
2020
2121 return data
2222 } )
@@ -25,6 +25,14 @@ describe('usePrefetchQuery', () => {
2525 const queryCache = new QueryCache ( )
2626 const queryClient = createQueryClient ( { queryCache } )
2727
28+ beforeEach ( ( ) => {
29+ vi . useFakeTimers ( )
30+ } )
31+
32+ afterEach ( ( ) => {
33+ vi . useRealTimers ( )
34+ } )
35+
2836 function Suspended < TData = unknown > ( props : {
2937 queryOpts : UseSuspenseQueryOptions < TData , Error , TData , Array < string > >
3038 children ?: React . ReactNode
@@ -62,7 +70,7 @@ describe('usePrefetchQuery', () => {
6270
6371 const rendered = renderWithClient ( queryClient , < App /> )
6472
65- await waitFor ( ( ) => rendered . getByText ( 'data: prefetchQuery' ) )
73+ await vi . waitFor ( ( ) => rendered . getByText ( 'data: prefetchQuery' ) )
6674 expect ( queryOpts . queryFn ) . toHaveBeenCalledTimes ( 1 )
6775 } )
6876
@@ -87,7 +95,7 @@ describe('usePrefetchQuery', () => {
8795 const rendered = renderWithClient ( queryClient , < App /> )
8896
8997 expect ( rendered . queryByText ( 'fetching: true' ) ) . not . toBeInTheDocument ( )
90- await waitFor ( ( ) =>
98+ await vi . waitFor ( ( ) =>
9199 rendered . getByText ( 'data: The usePrefetchQuery hook is smart!' ) ,
92100 )
93101 expect ( queryOpts . queryFn ) . not . toHaveBeenCalled ( )
@@ -104,7 +112,7 @@ describe('usePrefetchQuery', () => {
104112 }
105113
106114 queryFn . mockImplementationOnce ( async ( ) => {
107- await sleep ( 10 )
115+ await vi . advanceTimersByTimeAsync ( 10 )
108116
109117 throw new Error ( 'Oops! Server error!' )
110118 } )
@@ -125,7 +133,7 @@ describe('usePrefetchQuery', () => {
125133 queryFn . mockClear ( )
126134 const rendered = renderWithClient ( queryClient , < App /> )
127135
128- await waitFor ( ( ) => rendered . getByText ( 'Oops!' ) )
136+ await vi . waitFor ( ( ) => rendered . getByText ( 'Oops!' ) )
129137 expect ( rendered . queryByText ( 'data: Not an error' ) ) . not . toBeInTheDocument ( )
130138 expect ( queryOpts . queryFn ) . not . toHaveBeenCalled ( )
131139
@@ -156,7 +164,7 @@ describe('usePrefetchQuery', () => {
156164 }
157165
158166 const rendered = renderWithClient ( queryClient , < App /> )
159- await waitFor ( ( ) => rendered . getByText ( 'data: prefetchedQuery' ) )
167+ await vi . waitFor ( ( ) => rendered . getByText ( 'data: prefetchedQuery' ) )
160168 expect ( queryOpts . queryFn ) . toHaveBeenCalledTimes ( 1 )
161169 } )
162170
@@ -171,7 +179,7 @@ describe('usePrefetchQuery', () => {
171179 }
172180
173181 queryFn . mockImplementationOnce ( async ( ) => {
174- await sleep ( 10 )
182+ await vi . advanceTimersByTimeAsync ( 10 )
175183
176184 throw new Error ( 'Oops! Server error!' )
177185 } )
@@ -202,9 +210,11 @@ describe('usePrefetchQuery', () => {
202210
203211 const rendered = renderWithClient ( queryClient , < App /> )
204212
205- await waitFor ( ( ) => rendered . getByText ( 'Oops!' ) )
213+ await vi . waitFor ( ( ) => rendered . getByText ( 'Oops!' ) )
206214 fireEvent . click ( rendered . getByText ( 'Try again' ) )
207- await waitFor ( ( ) => rendered . getByText ( 'data: This is fine :dog: :fire:' ) )
215+ await vi . waitFor ( ( ) =>
216+ rendered . getByText ( 'data: This is fine :dog: :fire:' ) ,
217+ )
208218 expect ( queryOpts . queryFn ) . toHaveBeenCalledTimes ( 1 )
209219 consoleMock . mockRestore ( )
210220 } )
@@ -253,10 +263,12 @@ describe('usePrefetchQuery', () => {
253263 expect (
254264 queryClient . getQueryState ( thirdQueryOpts . queryKey ) ?. fetchStatus ,
255265 ) . toBe ( 'fetching' )
256- await waitFor ( ( ) => rendered . getByText ( 'Loading...' ) )
257- await waitFor ( ( ) => rendered . getByText ( 'data: Prefetch is nice!' ) )
258- await waitFor ( ( ) => rendered . getByText ( 'data: Prefetch is really nice!!' ) )
259- await waitFor ( ( ) =>
266+ await vi . waitFor ( ( ) => rendered . getByText ( 'Loading...' ) )
267+ await vi . waitFor ( ( ) => rendered . getByText ( 'data: Prefetch is nice!' ) )
268+ await vi . waitFor ( ( ) =>
269+ rendered . getByText ( 'data: Prefetch is really nice!!' ) ,
270+ )
271+ await vi . waitFor ( ( ) =>
260272 rendered . getByText ( 'data: Prefetch does not create waterfalls!!' ) ,
261273 )
262274 expect ( Fallback ) . toHaveBeenCalledTimes ( 1 )
0 commit comments