@@ -9,10 +9,8 @@ import {
99 QueryErrorResetBoundary ,
1010 useQueries ,
1111 useQuery ,
12- useSuspenseQueries ,
13- useSuspenseQuery ,
1412} from '..'
15- import { renderWithClient } from './utils'
13+ import { renderWithClient , renderWithClientAndSuspense } from './utils'
1614
1715describe ( 'QueryErrorResetBoundary' , ( ) => {
1816 let queryCache : QueryCache
@@ -53,7 +51,7 @@ describe('QueryErrorResetBoundary', () => {
5351 return < div > { data } </ div >
5452 }
5553
56- const rendered = renderWithClient (
54+ const rendered = await renderWithClientAndSuspense (
5755 queryClient ,
5856 < QueryErrorResetBoundary >
5957 { ( { reset } ) => (
@@ -84,7 +82,9 @@ describe('QueryErrorResetBoundary', () => {
8482
8583 succeed = true
8684
87- fireEvent . click ( rendered . getByText ( 'retry' ) )
85+ await act ( async ( ) => {
86+ fireEvent . click ( rendered . getByText ( 'retry' ) )
87+ } )
8888 await vi . advanceTimersByTimeAsync ( 11 )
8989 expect ( rendered . getByText ( 'data' ) ) . toBeInTheDocument ( )
9090
@@ -120,7 +120,7 @@ describe('QueryErrorResetBoundary', () => {
120120 )
121121 }
122122
123- const rendered = renderWithClient (
123+ const rendered = await renderWithClientAndSuspense (
124124 queryClient ,
125125 < QueryErrorResetBoundary >
126126 { ( { reset } ) => (
@@ -151,7 +151,9 @@ describe('QueryErrorResetBoundary', () => {
151151
152152 succeed = true
153153
154- fireEvent . click ( rendered . getByText ( 'retry' ) )
154+ await act ( async ( ) => {
155+ fireEvent . click ( rendered . getByText ( 'retry' ) )
156+ } )
155157 await vi . advanceTimersByTimeAsync ( 11 )
156158 expect ( rendered . getByText ( 'status: error' ) ) . toBeInTheDocument ( )
157159
@@ -188,7 +190,7 @@ describe('QueryErrorResetBoundary', () => {
188190 return < div > { data } </ div >
189191 }
190192
191- const rendered = renderWithClient (
193+ const rendered = await renderWithClientAndSuspense (
192194 queryClient ,
193195 < QueryErrorResetBoundary >
194196 { ( { reset } ) => (
@@ -219,7 +221,9 @@ describe('QueryErrorResetBoundary', () => {
219221
220222 succeed = true
221223
222- fireEvent . click ( rendered . getByText ( 'retry' ) )
224+ await act ( async ( ) => {
225+ fireEvent . click ( rendered . getByText ( 'retry' ) )
226+ } )
223227 await vi . advanceTimersByTimeAsync ( 11 )
224228 expect ( rendered . getByText ( 'data' ) ) . toBeInTheDocument ( )
225229
@@ -254,7 +258,7 @@ describe('QueryErrorResetBoundary', () => {
254258 )
255259 }
256260
257- const rendered = renderWithClient (
261+ const rendered = await renderWithClientAndSuspense (
258262 queryClient ,
259263 < QueryErrorResetBoundary >
260264 { ( { reset } ) => (
@@ -567,81 +571,6 @@ describe('QueryErrorResetBoundary', () => {
567571 consoleMock . mockRestore ( )
568572 } )
569573
570- it ( 'should never render the component while the query is in error state' , async ( ) => {
571- const consoleMock = vi
572- . spyOn ( console , 'error' )
573- . mockImplementation ( ( ) => undefined )
574-
575- const key = queryKey ( )
576- let fetchCount = 0
577- let renders = 0
578-
579- function Page ( ) {
580- const { data } = useSuspenseQuery ( {
581- queryKey : key ,
582- queryFn : ( ) =>
583- sleep ( 10 ) . then ( ( ) => {
584- fetchCount ++
585- if ( fetchCount > 2 ) return 'data'
586- throw new Error ( 'Error' )
587- } ) ,
588- retry : false ,
589- } )
590-
591- renders ++
592-
593- return < div > { data } </ div >
594- }
595-
596- const rendered = renderWithClient (
597- queryClient ,
598- < QueryErrorResetBoundary >
599- { ( { reset } ) => (
600- < ErrorBoundary
601- onReset = { reset }
602- fallbackRender = { ( { resetErrorBoundary } ) => (
603- < div >
604- < div > error boundary</ div >
605- < button
606- onClick = { ( ) => {
607- resetErrorBoundary ( )
608- } }
609- >
610- retry
611- </ button >
612- </ div >
613- ) }
614- >
615- < React . Suspense fallback = { < div > loading</ div > } >
616- < Page />
617- </ React . Suspense >
618- </ ErrorBoundary >
619- ) }
620- </ QueryErrorResetBoundary > ,
621- )
622-
623- expect ( rendered . getByText ( 'loading' ) ) . toBeInTheDocument ( )
624- await act ( ( ) => vi . advanceTimersByTimeAsync ( 10 ) )
625- expect ( rendered . getByText ( 'error boundary' ) ) . toBeInTheDocument ( )
626- expect ( rendered . getByText ( 'retry' ) ) . toBeInTheDocument ( )
627-
628- fireEvent . click ( rendered . getByText ( 'retry' ) )
629- expect ( rendered . getByText ( 'loading' ) ) . toBeInTheDocument ( )
630- await act ( ( ) => vi . advanceTimersByTimeAsync ( 10 ) )
631- expect ( rendered . getByText ( 'error boundary' ) ) . toBeInTheDocument ( )
632- expect ( rendered . getByText ( 'retry' ) ) . toBeInTheDocument ( )
633-
634- fireEvent . click ( rendered . getByText ( 'retry' ) )
635- expect ( rendered . getByText ( 'loading' ) ) . toBeInTheDocument ( )
636- await act ( ( ) => vi . advanceTimersByTimeAsync ( 10 ) )
637- expect ( rendered . getByText ( 'data' ) ) . toBeInTheDocument ( )
638-
639- expect ( fetchCount ) . toBe ( 3 )
640- expect ( renders ) . toBe ( 1 )
641-
642- consoleMock . mockRestore ( )
643- } )
644-
645574 it ( 'should render children' , ( ) => {
646575 const consoleMock = vi
647576 . spyOn ( console , 'error' )
@@ -875,73 +804,5 @@ describe('QueryErrorResetBoundary', () => {
875804 consoleMock . mockRestore ( )
876805 } )
877806
878- it ( 'with suspense should retry fetch if the reset error boundary has been reset' , async ( ) => {
879- const key = queryKey ( )
880- const consoleMock = vi
881- . spyOn ( console , 'error' )
882- . mockImplementation ( ( ) => undefined )
883-
884- let succeed = false
885-
886- function Page ( ) {
887- const [ { data } ] = useSuspenseQueries ( {
888- queries : [
889- {
890- queryKey : key ,
891- queryFn : ( ) =>
892- sleep ( 10 ) . then ( ( ) => {
893- if ( ! succeed ) throw new Error ( 'Error' )
894- return 'data'
895- } ) ,
896- retry : false ,
897- retryOnMount : true ,
898- } ,
899- ] ,
900- } )
901-
902- return < div > { data } </ div >
903- }
904-
905- const rendered = renderWithClient (
906- queryClient ,
907- < QueryErrorResetBoundary >
908- { ( { reset } ) => (
909- < ErrorBoundary
910- onReset = { reset }
911- fallbackRender = { ( { resetErrorBoundary } ) => (
912- < div >
913- < div > error boundary</ div >
914- < button
915- onClick = { ( ) => {
916- resetErrorBoundary ( )
917- } }
918- >
919- retry
920- </ button >
921- </ div >
922- ) }
923- >
924- < React . Suspense fallback = "loading" >
925- < Page />
926- </ React . Suspense >
927- </ ErrorBoundary >
928- ) }
929- </ QueryErrorResetBoundary > ,
930- )
931-
932- expect ( rendered . getByText ( 'loading' ) ) . toBeInTheDocument ( )
933- await act ( ( ) => vi . advanceTimersByTimeAsync ( 10 ) )
934- expect ( rendered . getByText ( 'error boundary' ) ) . toBeInTheDocument ( )
935- expect ( rendered . getByText ( 'retry' ) ) . toBeInTheDocument ( )
936-
937- succeed = true
938-
939- fireEvent . click ( rendered . getByText ( 'retry' ) )
940- expect ( rendered . getByText ( 'loading' ) ) . toBeInTheDocument ( )
941- await act ( ( ) => vi . advanceTimersByTimeAsync ( 10 ) )
942- expect ( rendered . getByText ( 'data' ) ) . toBeInTheDocument ( )
943-
944- consoleMock . mockRestore ( )
945- } )
946807 } )
947808} )
0 commit comments