1
1
import { afterEach , beforeEach , describe , expect , it , vi } from 'vitest'
2
2
import { act , render } from '@testing-library/react'
3
3
import { Suspense } from 'react'
4
- import { queryKey } from '@tanstack/query-test-utils'
4
+ import { queryKey , sleep } from '@tanstack/query-test-utils'
5
5
import { QueryClient , QueryClientProvider , useSuspenseQuery } from '..'
6
6
import type { QueryKey } from '..'
7
7
@@ -21,10 +21,11 @@ function createTestQuery(options: {
21
21
return function TestComponent ( ) {
22
22
const { data } = useSuspenseQuery ( {
23
23
queryKey : options . queryKey ,
24
- queryFn : ( ) => {
25
- options . fetchCount . count ++
26
- return Promise . resolve ( 'data' )
27
- } ,
24
+ queryFn : ( ) =>
25
+ sleep ( 10 ) . then ( ( ) => {
26
+ options . fetchCount . count ++
27
+ return 'data'
28
+ } ) ,
28
29
staleTime : options . staleTime ,
29
30
} )
30
31
return < div > data: { data } </ div >
@@ -60,7 +61,8 @@ describe('Suspense Timer Tests', () => {
60
61
61
62
const rendered = renderWithSuspense ( queryClient , < TestComponent /> )
62
63
63
- await act ( ( ) => vi . advanceTimersByTimeAsync ( 0 ) )
64
+ expect ( rendered . getByText ( 'loading' ) ) . toBeInTheDocument ( )
65
+ await act ( ( ) => vi . advanceTimersByTimeAsync ( 10 ) )
64
66
expect ( rendered . getByText ( 'data: data' ) ) . toBeInTheDocument ( )
65
67
66
68
rendered . rerender (
@@ -85,7 +87,8 @@ describe('Suspense Timer Tests', () => {
85
87
86
88
const rendered = renderWithSuspense ( queryClient , < TestComponent /> )
87
89
88
- await act ( ( ) => vi . advanceTimersByTimeAsync ( 0 ) )
90
+ expect ( rendered . getByText ( 'loading' ) ) . toBeInTheDocument ( )
91
+ await act ( ( ) => vi . advanceTimersByTimeAsync ( 10 ) )
89
92
expect ( rendered . getByText ( 'data: data' ) ) . toBeInTheDocument ( )
90
93
91
94
rendered . rerender (
@@ -110,7 +113,8 @@ describe('Suspense Timer Tests', () => {
110
113
111
114
const rendered = renderWithSuspense ( queryClient , < TestComponent /> )
112
115
113
- await act ( ( ) => vi . advanceTimersByTimeAsync ( 0 ) )
116
+ expect ( rendered . getByText ( 'loading' ) ) . toBeInTheDocument ( )
117
+ await act ( ( ) => vi . advanceTimersByTimeAsync ( 10 ) )
114
118
expect ( rendered . getByText ( 'data: data' ) ) . toBeInTheDocument ( )
115
119
116
120
rendered . rerender (
@@ -135,7 +139,8 @@ describe('Suspense Timer Tests', () => {
135
139
136
140
const rendered = renderWithSuspense ( queryClient , < TestComponent /> )
137
141
138
- await act ( ( ) => vi . advanceTimersByTimeAsync ( 0 ) )
142
+ expect ( rendered . getByText ( 'loading' ) ) . toBeInTheDocument ( )
143
+ await act ( ( ) => vi . advanceTimersByTimeAsync ( 10 ) )
139
144
expect ( rendered . getByText ( 'data: data' ) ) . toBeInTheDocument ( )
140
145
141
146
rendered . rerender (
@@ -160,7 +165,8 @@ describe('Suspense Timer Tests', () => {
160
165
161
166
const rendered = renderWithSuspense ( queryClient , < TestComponent /> )
162
167
163
- await act ( ( ) => vi . advanceTimersByTimeAsync ( 0 ) )
168
+ expect ( rendered . getByText ( 'loading' ) ) . toBeInTheDocument ( )
169
+ await act ( ( ) => vi . advanceTimersByTimeAsync ( 10 ) )
164
170
expect ( rendered . getByText ( 'data: data' ) ) . toBeInTheDocument ( )
165
171
166
172
rendered . rerender (
0 commit comments