|
7 | 7 | QueryClient, |
8 | 8 | QueryClientProvider, |
9 | 9 | useInfiniteQuery, |
| 10 | + useQueries, |
10 | 11 | useQuery, |
11 | 12 | } from '..' |
12 | 13 | import { setIsServer } from './utils' |
@@ -173,4 +174,46 @@ describe('Server Side Rendering', () => { |
173 | 174 |
|
174 | 175 | queryCache.clear() |
175 | 176 | }) |
| 177 | + |
| 178 | + it('useQueries should return existing data from the cache', async () => { |
| 179 | + const key1 = queryKey() |
| 180 | + const key2 = queryKey() |
| 181 | + const queryFn1 = () => sleep(10).then(() => 'data1') |
| 182 | + const queryFn2 = () => sleep(10).then(() => 'data2') |
| 183 | + |
| 184 | + function Page() { |
| 185 | + const queries = useQueries({ |
| 186 | + queries: [ |
| 187 | + { queryKey: key1, queryFn: queryFn1 }, |
| 188 | + { queryKey: key2, queryFn: queryFn2 }, |
| 189 | + ], |
| 190 | + }) |
| 191 | + |
| 192 | + return ( |
| 193 | + <div> |
| 194 | + <div>{`status1: ${queries[0].status}`}</div> |
| 195 | + <div>{`status2: ${queries[1].status}`}</div> |
| 196 | + <div>{`data1: ${queries[0].data}`}</div> |
| 197 | + <div>{`data2: ${queries[1].data}`}</div> |
| 198 | + </div> |
| 199 | + ) |
| 200 | + } |
| 201 | + |
| 202 | + queryClient.prefetchQuery({ queryKey: key1, queryFn: queryFn1 }) |
| 203 | + queryClient.prefetchQuery({ queryKey: key2, queryFn: queryFn2 }) |
| 204 | + await vi.advanceTimersByTimeAsync(10) |
| 205 | + |
| 206 | + const markup = renderToString( |
| 207 | + <QueryClientProvider client={queryClient}> |
| 208 | + <Page /> |
| 209 | + </QueryClientProvider>, |
| 210 | + ) |
| 211 | + |
| 212 | + expect(markup).toContain('status1: success') |
| 213 | + expect(markup).toContain('status2: success') |
| 214 | + expect(markup).toContain('data1: data1') |
| 215 | + expect(markup).toContain('data2: data2') |
| 216 | + |
| 217 | + queryCache.clear() |
| 218 | + }) |
176 | 219 | }) |
0 commit comments