@@ -7,7 +7,13 @@ import React from 'react'
77import { renderToString } from 'react-dom/server'
88
99import { sleep , queryKey } from './utils'
10- import { useQuery , QueryClient , QueryClientProvider , QueryCache } from '../..'
10+ import {
11+ useQuery ,
12+ QueryClient ,
13+ QueryClientProvider ,
14+ QueryCache ,
15+ useInfiniteQuery ,
16+ } from '../..'
1117
1218describe ( 'Server Side Rendering' , ( ) => {
1319 it ( 'should not trigger fetch' , ( ) => {
@@ -112,4 +118,37 @@ describe('Server Side Rendering', () => {
112118 expect ( keys ) . toEqual ( [ [ key , 1 ] ] )
113119 queryCache . clear ( )
114120 } )
121+
122+ it ( 'useInfiniteQuery should return the correct state' , async ( ) => {
123+ const queryCache = new QueryCache ( )
124+ const queryClient = new QueryClient ( { queryCache } )
125+ const key = queryKey ( )
126+ const queryFn = jest . fn ( async ( ) => {
127+ await sleep ( 5 )
128+ return 'page 1'
129+ } )
130+
131+ function Page ( ) {
132+ const query = useInfiniteQuery ( key , queryFn )
133+ return (
134+ < ul >
135+ { query . data ?. pages ?. map ( page => (
136+ < li key = { page } > { page } </ li >
137+ ) ) }
138+ </ ul >
139+ )
140+ }
141+
142+ await queryClient . prefetchInfiniteQuery ( key , queryFn )
143+
144+ const markup = renderToString (
145+ < QueryClientProvider client = { queryClient } >
146+ < Page />
147+ </ QueryClientProvider >
148+ )
149+
150+ expect ( markup ) . toContain ( 'page 1' )
151+ expect ( queryFn ) . toHaveBeenCalledTimes ( 1 )
152+ queryCache . clear ( )
153+ } )
115154} )
0 commit comments