diff --git a/packages/svelte-query/tests/QueryClientProvider/ChildComponent.svelte b/packages/svelte-query/tests/QueryClientProvider/ChildComponent.svelte new file mode 100644 index 0000000000..1912606ecd --- /dev/null +++ b/packages/svelte-query/tests/QueryClientProvider/ChildComponent.svelte @@ -0,0 +1,14 @@ + + +
{$query.data}
diff --git a/packages/svelte-query/tests/QueryClientProvider/ParentComponent.svelte b/packages/svelte-query/tests/QueryClientProvider/ParentComponent.svelte new file mode 100644 index 0000000000..7129cf8a31 --- /dev/null +++ b/packages/svelte-query/tests/QueryClientProvider/ParentComponent.svelte @@ -0,0 +1,14 @@ + + + + + diff --git a/packages/svelte-query/tests/QueryClientProvider/QueryClientProvider.test.ts b/packages/svelte-query/tests/QueryClientProvider/QueryClientProvider.test.ts new file mode 100644 index 0000000000..86c9907cb7 --- /dev/null +++ b/packages/svelte-query/tests/QueryClientProvider/QueryClientProvider.test.ts @@ -0,0 +1,20 @@ +import { describe, expect, test } from 'vitest' +import { render, waitFor } from '@testing-library/svelte' +import { QueryCache } from '@tanstack/query-core' +import ParentComponent from './ParentComponent.svelte' + +describe('QueryClientProvider', () => { + test('Sets a specific cache for all queries to use', async () => { + const queryCache = new QueryCache() + + const rendered = render(ParentComponent, { + props: { + queryCache: queryCache, + }, + }) + + await waitFor(() => rendered.getByText('test')) + + expect(queryCache.find({ queryKey: ['hello'] })).toBeDefined() + }) +}) diff --git a/packages/svelte-query/tests/context.test.ts b/packages/svelte-query/tests/context/context.test.ts similarity index 54% rename from packages/svelte-query/tests/context.test.ts rename to packages/svelte-query/tests/context/context.test.ts index 8ea9dabeb1..f3428917d1 100644 --- a/packages/svelte-query/tests/context.test.ts +++ b/packages/svelte-query/tests/context/context.test.ts @@ -1,8 +1,8 @@ import { describe, expect, it } from 'vitest' -import { getIsRestoringContext } from '../src/context' +import { getIsRestoringContext } from '../../src/context' describe('getIsRestoringContext', () => { - it('Should not throw when called outside of a component', async () => { + it('Should not throw when called outside of a component', () => { expect(() => getIsRestoringContext()).to.not.throw() }) }) diff --git a/packages/svelte-query/tests/CreateMutation.svelte b/packages/svelte-query/tests/createMutation/BaseExample.svelte similarity index 62% rename from packages/svelte-query/tests/CreateMutation.svelte rename to packages/svelte-query/tests/createMutation/BaseExample.svelte index 2c3074e3a7..e4bf80d4dd 100644 --- a/packages/svelte-query/tests/CreateMutation.svelte +++ b/packages/svelte-query/tests/createMutation/BaseExample.svelte @@ -1,8 +1,8 @@ + + +
Data: {$query.data ?? 'undefined'}
+
Count: {$count}
diff --git a/packages/svelte-query/tests/createQuery.test.ts b/packages/svelte-query/tests/createQuery/createQuery.test.ts similarity index 83% rename from packages/svelte-query/tests/createQuery.test.ts rename to packages/svelte-query/tests/createQuery/createQuery.test.ts index 482043b7fd..0449eb951c 100644 --- a/packages/svelte-query/tests/createQuery.test.ts +++ b/packages/svelte-query/tests/createQuery/createQuery.test.ts @@ -1,13 +1,14 @@ import { describe, expect, test } from 'vitest' -import { render, waitFor } from '@testing-library/svelte' +import { fireEvent, render, waitFor } from '@testing-library/svelte' import { derived, writable } from 'svelte/store' import { QueryClient } from '@tanstack/query-core' -import CreateQuery from './CreateQuery.svelte' -import { sleep } from './utils' +import { sleep } from '../utils' +import BaseExample from './BaseExample.svelte' +import DisabledExample from './DisabledExample.svelte' describe('createQuery', () => { test('Render and wait for success', async () => { - const rendered = render(CreateQuery, { + const rendered = render(BaseExample, { props: { options: { queryKey: ['test'], @@ -38,7 +39,7 @@ describe('createQuery', () => { }, }) - const rendered = render(CreateQuery, { + const rendered = render(BaseExample, { props: { options: optionsStore, queryClient: new QueryClient(), @@ -61,7 +62,7 @@ describe('createQuery', () => { }, })) - const rendered = render(CreateQuery, { + const rendered = render(BaseExample, { props: { options: derivedStore, queryClient: new QueryClient(), @@ -84,7 +85,7 @@ describe('createQuery', () => { }, })) - const rendered = render(CreateQuery, { + const rendered = render(BaseExample, { props: { options: derivedStore, queryClient: new QueryClient({ @@ -125,7 +126,7 @@ describe('createQuery', () => { placeholderData: (previousData: string) => previousData, })) - const rendered = render(CreateQuery, { + const rendered = render(BaseExample, { props: { options: derivedStore, queryClient: new QueryClient(), @@ -154,4 +155,17 @@ describe('createQuery', () => { expect(rendered.queryByText('Success 2')).toBeInTheDocument() }) }) + + test('Should not fetch when switching to a disabled query', async () => { + const rendered = render(DisabledExample) + + await waitFor(() => rendered.getByText('Data: 0')) + + fireEvent.click(rendered.getByRole('button', { name: /Increment/i })) + + await waitFor(() => { + rendered.getByText('Count: 1') + rendered.getByText('Data: undefined') + }) + }) }) diff --git a/packages/svelte-query/tests/queryOptions.test.ts b/packages/svelte-query/tests/queryOptions/queryOptions.test.ts similarity index 98% rename from packages/svelte-query/tests/queryOptions.test.ts rename to packages/svelte-query/tests/queryOptions/queryOptions.test.ts index f73cc0c7d7..65c7e47679 100644 --- a/packages/svelte-query/tests/queryOptions.test.ts +++ b/packages/svelte-query/tests/queryOptions/queryOptions.test.ts @@ -1,6 +1,6 @@ import { QueryClient, dataTagSymbol, skipToken } from '@tanstack/query-core' import { describe, expectTypeOf, it } from 'vitest' -import { queryOptions } from '../src/queryOptions' +import { queryOptions } from '../../src/queryOptions' describe('queryOptions', () => { it('should not allow excess properties', () => { diff --git a/packages/svelte-query/tests/useIsFetching/BaseExample.svelte b/packages/svelte-query/tests/useIsFetching/BaseExample.svelte new file mode 100644 index 0000000000..f94b56dd2b --- /dev/null +++ b/packages/svelte-query/tests/useIsFetching/BaseExample.svelte @@ -0,0 +1,33 @@ + + + +
isFetching: {$isFetching}
+ +{#if $query.isSuccess} + {$query.data} +{/if} diff --git a/packages/svelte-query/tests/useIsFetching/useIsFetching.test.ts b/packages/svelte-query/tests/useIsFetching/useIsFetching.test.ts new file mode 100644 index 0000000000..7ca6ca6322 --- /dev/null +++ b/packages/svelte-query/tests/useIsFetching/useIsFetching.test.ts @@ -0,0 +1,14 @@ +import { describe, test } from 'vitest' +import { fireEvent, render } from '@testing-library/svelte' +import BaseExample from './BaseExample.svelte' + +describe('useIsFetching', () => { + test('should update as queries start and stop fetching', async () => { + const rendered = render(BaseExample) + + await rendered.findByText('isFetching: 0') + fireEvent.click(rendered.getByRole('button', { name: /setReady/i })) + await rendered.findByText('isFetching: 1') + await rendered.findByText('isFetching: 0') + }) +}) diff --git a/packages/svelte-query/tests/UseMutationState.svelte b/packages/svelte-query/tests/useMutationState/BaseExample.svelte similarity index 81% rename from packages/svelte-query/tests/UseMutationState.svelte rename to packages/svelte-query/tests/useMutationState/BaseExample.svelte index d980c8121e..543a9a5271 100644 --- a/packages/svelte-query/tests/UseMutationState.svelte +++ b/packages/svelte-query/tests/useMutationState/BaseExample.svelte @@ -1,12 +1,12 @@