Skip to content

Commit 588b30f

Browse files
authored
test(solid-query/useQueries): add test for not fetching during the restoring period when 'isRestoring' is true (#10951)
1 parent 0e2bfe7 commit 588b30f

1 file changed

Lines changed: 62 additions & 1 deletion

File tree

packages/solid-query/src/__tests__/useQueries.test.tsx

Lines changed: 62 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,13 @@ import { fireEvent } from '@solidjs/testing-library'
1111
import * as QueryCore from '@tanstack/query-core'
1212
import { createRenderEffect, createSignal } from 'solid-js'
1313
import { queryKey, sleep } from '@tanstack/query-test-utils'
14-
import { QueriesObserver, QueryCache, QueryClient, useQueries } from '..'
14+
import {
15+
IsRestoringProvider,
16+
QueriesObserver,
17+
QueryCache,
18+
QueryClient,
19+
useQueries,
20+
} from '..'
1521
import { renderWithClient } from './utils'
1622
import type {
1723
QueryFunction,
@@ -717,4 +723,59 @@ describe('useQueries', () => {
717723
await vi.advanceTimersByTimeAsync(20)
718724
QueriesObserverSpy.mockRestore()
719725
})
726+
727+
it('should not fetch for the duration of the restoring period when isRestoring is true', async () => {
728+
const key1 = queryKey()
729+
const key2 = queryKey()
730+
const queryFn1 = vi.fn(() => sleep(10).then(() => 'data1'))
731+
const queryFn2 = vi.fn(() => sleep(10).then(() => 'data2'))
732+
733+
function Page() {
734+
const results = useQueries(() => ({
735+
queries: [
736+
{ queryKey: key1, queryFn: queryFn1 },
737+
{ queryKey: key2, queryFn: queryFn2 },
738+
],
739+
}))
740+
741+
return (
742+
<div>
743+
<div data-testid="status1">{results[0].status}</div>
744+
<div data-testid="status2">{results[1].status}</div>
745+
<div data-testid="fetchStatus1">{results[0].fetchStatus}</div>
746+
<div data-testid="fetchStatus2">{results[1].fetchStatus}</div>
747+
<div data-testid="data1">{results[0].data ?? 'undefined'}</div>
748+
<div data-testid="data2">{results[1].data ?? 'undefined'}</div>
749+
</div>
750+
)
751+
}
752+
753+
const rendered = renderWithClient(queryClient, () => (
754+
<IsRestoringProvider value={() => true}>
755+
<Page />
756+
</IsRestoringProvider>
757+
))
758+
759+
await vi.advanceTimersByTimeAsync(0)
760+
761+
expect(rendered.getByTestId('status1')).toHaveTextContent('pending')
762+
expect(rendered.getByTestId('status2')).toHaveTextContent('pending')
763+
expect(rendered.getByTestId('fetchStatus1')).toHaveTextContent('idle')
764+
expect(rendered.getByTestId('fetchStatus2')).toHaveTextContent('idle')
765+
expect(rendered.getByTestId('data1')).toHaveTextContent('undefined')
766+
expect(rendered.getByTestId('data2')).toHaveTextContent('undefined')
767+
expect(queryFn1).toHaveBeenCalledTimes(0)
768+
expect(queryFn2).toHaveBeenCalledTimes(0)
769+
770+
await vi.advanceTimersByTimeAsync(10)
771+
772+
expect(rendered.getByTestId('status1')).toHaveTextContent('pending')
773+
expect(rendered.getByTestId('status2')).toHaveTextContent('pending')
774+
expect(rendered.getByTestId('fetchStatus1')).toHaveTextContent('idle')
775+
expect(rendered.getByTestId('fetchStatus2')).toHaveTextContent('idle')
776+
expect(rendered.getByTestId('data1')).toHaveTextContent('undefined')
777+
expect(rendered.getByTestId('data2')).toHaveTextContent('undefined')
778+
expect(queryFn1).toHaveBeenCalledTimes(0)
779+
expect(queryFn2).toHaveBeenCalledTimes(0)
780+
})
720781
})

0 commit comments

Comments
 (0)