Skip to content

Commit 8a5fc2d

Browse files
committed
use
1 parent 9dfe64f commit 8a5fc2d

12 files changed

Lines changed: 425 additions & 379 deletions

packages/query-core/src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ export {
88
dehydrate,
99
hydrate,
1010
} from './hydration'
11+
export { pendingThenable } from './thenable'
1112
export { InfiniteQueryObserver } from './infiniteQueryObserver'
1213
export { MutationCache } from './mutationCache'
1314
export type { MutationCacheNotifyEvent } from './mutationCache'

packages/react-query/src/__tests__/QueryResetErrorBoundary.test.tsx

Lines changed: 14 additions & 153 deletions
Original file line numberDiff line numberDiff line change
@@ -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

1715
describe('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

Comments
 (0)