diff --git a/packages/svelte-query/tests/createQueries/IsRestoringExample.svelte b/packages/svelte-query/tests/createQueries/IsRestoringExample.svelte new file mode 100644 index 00000000000..320bee94fa8 --- /dev/null +++ b/packages/svelte-query/tests/createQueries/IsRestoringExample.svelte @@ -0,0 +1,36 @@ + + +
+
{result[0].status}
+
{result[1].status}
+
{result[0].fetchStatus}
+
{result[1].fetchStatus}
+
{result[0].data ?? 'undefined'}
+
{result[1].data ?? 'undefined'}
+
diff --git a/packages/svelte-query/tests/createQueries/createQueries.svelte.test.ts b/packages/svelte-query/tests/createQueries/createQueries.svelte.test.ts new file mode 100644 index 00000000000..dfff3892fb8 --- /dev/null +++ b/packages/svelte-query/tests/createQueries/createQueries.svelte.test.ts @@ -0,0 +1,45 @@ +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' +import { render } from '@testing-library/svelte' +import { sleep } from '@tanstack/query-test-utils' +import IsRestoringExample from './IsRestoringExample.svelte' + +describe('createQueries', () => { + beforeEach(() => { + vi.useFakeTimers() + }) + + afterEach(() => { + vi.useRealTimers() + }) + + it('should not fetch for the duration of the restoring period when isRestoring is true', async () => { + const queryFn1 = vi.fn(() => sleep(10).then(() => 'data1')) + const queryFn2 = vi.fn(() => sleep(10).then(() => 'data2')) + + const rendered = render(IsRestoringExample, { + props: { queryFn1, queryFn2 }, + }) + + await vi.advanceTimersByTimeAsync(0) + + expect(rendered.getByTestId('status1')).toHaveTextContent('pending') + expect(rendered.getByTestId('status2')).toHaveTextContent('pending') + expect(rendered.getByTestId('fetchStatus1')).toHaveTextContent('idle') + expect(rendered.getByTestId('fetchStatus2')).toHaveTextContent('idle') + expect(rendered.getByTestId('data1')).toHaveTextContent('undefined') + expect(rendered.getByTestId('data2')).toHaveTextContent('undefined') + expect(queryFn1).toHaveBeenCalledTimes(0) + expect(queryFn2).toHaveBeenCalledTimes(0) + + await vi.advanceTimersByTimeAsync(11) + + expect(rendered.getByTestId('status1')).toHaveTextContent('pending') + expect(rendered.getByTestId('status2')).toHaveTextContent('pending') + expect(rendered.getByTestId('fetchStatus1')).toHaveTextContent('idle') + expect(rendered.getByTestId('fetchStatus2')).toHaveTextContent('idle') + expect(rendered.getByTestId('data1')).toHaveTextContent('undefined') + expect(rendered.getByTestId('data2')).toHaveTextContent('undefined') + expect(queryFn1).toHaveBeenCalledTimes(0) + expect(queryFn2).toHaveBeenCalledTimes(0) + }) +})