diff --git a/packages/svelte-query-persist-client/tests/AwaitOnSuccess/AwaitOnSuccess.svelte b/packages/svelte-query-persist-client/tests/AwaitOnSuccess/AwaitOnSuccess.svelte
index 4835489c1e..805c08ab6e 100644
--- a/packages/svelte-query-persist-client/tests/AwaitOnSuccess/AwaitOnSuccess.svelte
+++ b/packages/svelte-query-persist-client/tests/AwaitOnSuccess/AwaitOnSuccess.svelte
@@ -9,7 +9,7 @@
queryKey: ['test'],
queryFn: async () => {
states.current.push('fetching')
- await sleep(5)
+ await sleep(10)
states.current.push('fetched')
return 'fetched'
},
diff --git a/packages/svelte-query-persist-client/tests/FreshData/FreshData.svelte b/packages/svelte-query-persist-client/tests/FreshData/FreshData.svelte
index fff8ba820d..eecc82a346 100644
--- a/packages/svelte-query-persist-client/tests/FreshData/FreshData.svelte
+++ b/packages/svelte-query-persist-client/tests/FreshData/FreshData.svelte
@@ -1,17 +1,23 @@
-
data: {query.data ?? 'undefined'}
+data: {query.data ?? 'null'}
fetchStatus: {query.fetchStatus}
diff --git a/packages/svelte-query-persist-client/tests/FreshData/Provider.svelte b/packages/svelte-query-persist-client/tests/FreshData/Provider.svelte
index 70a9ea483f..793d14b40f 100644
--- a/packages/svelte-query-persist-client/tests/FreshData/Provider.svelte
+++ b/packages/svelte-query-persist-client/tests/FreshData/Provider.svelte
@@ -9,11 +9,12 @@
queryClient: QueryClient
persistOptions: OmitKeyof
states: StatelessRef>>
+ onFetch: () => void
}
- let { queryClient, persistOptions, states }: Props = $props()
+ let { queryClient, persistOptions, states, onFetch }: Props = $props()
-
+
diff --git a/packages/svelte-query-persist-client/tests/InitialData/InitialData.svelte b/packages/svelte-query-persist-client/tests/InitialData/InitialData.svelte
index a4df9132f8..10d9d4651e 100644
--- a/packages/svelte-query-persist-client/tests/InitialData/InitialData.svelte
+++ b/packages/svelte-query-persist-client/tests/InitialData/InitialData.svelte
@@ -8,11 +8,7 @@
const query = createQuery(() => ({
queryKey: ['test'],
- queryFn: async () => {
- await sleep(5)
- return 'fetched'
- },
-
+ queryFn: () => sleep(10).then(() => 'fetched'),
initialData: 'initial',
// make sure that initial data is older than the hydration data
// otherwise initialData would be newer and takes precedence
diff --git a/packages/svelte-query-persist-client/tests/OnSuccess/OnSuccess.svelte b/packages/svelte-query-persist-client/tests/OnSuccess/OnSuccess.svelte
index a6ef7b3214..7d552fa5b3 100644
--- a/packages/svelte-query-persist-client/tests/OnSuccess/OnSuccess.svelte
+++ b/packages/svelte-query-persist-client/tests/OnSuccess/OnSuccess.svelte
@@ -1,9 +1,10 @@
diff --git a/packages/svelte-query-persist-client/tests/PersistQueryClientProvider.svelte.test.ts b/packages/svelte-query-persist-client/tests/PersistQueryClientProvider.svelte.test.ts
index 668a848607..479205f265 100644
--- a/packages/svelte-query-persist-client/tests/PersistQueryClientProvider.svelte.test.ts
+++ b/packages/svelte-query-persist-client/tests/PersistQueryClientProvider.svelte.test.ts
@@ -1,5 +1,5 @@
-import { render, waitFor } from '@testing-library/svelte'
-import { describe, expect, test, vi } from 'vitest'
+import { render } from '@testing-library/svelte'
+import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest'
import { QueryClient } from '@tanstack/svelte-query'
import { persistQueryClientSave } from '@tanstack/query-persist-client-core'
import { sleep } from '@tanstack/query-test-utils'
@@ -17,6 +17,14 @@ import type {
} from '@tanstack/query-persist-client-core'
import type { StatusResult } from './utils.svelte.js'
+beforeEach(() => {
+ vi.useFakeTimers()
+})
+
+afterEach(() => {
+ vi.useRealTimers()
+})
+
const createMockPersister = (): Persister => {
let storedState: PersistedClient | undefined
@@ -25,7 +33,7 @@ const createMockPersister = (): Persister => {
storedState = persistClient
},
async restoreClient() {
- return Promise.resolve(storedState)
+ return sleep(10).then(() => storedState)
},
removeClient() {
storedState = undefined
@@ -44,7 +52,7 @@ const createMockErrorPersister = (
// noop
},
async restoreClient() {
- return Promise.reject(error)
+ return sleep(10).then(() => Promise.reject(error))
},
removeClient,
},
@@ -56,14 +64,16 @@ describe('PersistQueryClientProvider', () => {
const states = new StatelessRef>>([])
const queryClient = new QueryClient()
- await queryClient.prefetchQuery({
+ queryClient.prefetchQuery({
queryKey: ['test'],
- queryFn: () => Promise.resolve('hydrated'),
+ queryFn: () => sleep(10).then(() => 'hydrated'),
})
+ await vi.advanceTimersByTimeAsync(10)
const persister = createMockPersister()
- await persistQueryClientSave({ queryClient, persister })
+ persistQueryClientSave({ queryClient, persister })
+ await vi.advanceTimersByTimeAsync(0)
queryClient.clear()
@@ -75,9 +85,11 @@ describe('PersistQueryClientProvider', () => {
},
})
- await waitFor(() => rendered.getByText('fetchStatus: idle'))
- await waitFor(() => rendered.getByText('hydrated'))
- await waitFor(() => rendered.getByText('fetched'))
+ expect(rendered.getByText('fetchStatus: idle')).toBeInTheDocument()
+ await vi.advanceTimersByTimeAsync(10)
+ expect(rendered.getByText('hydrated')).toBeInTheDocument()
+ await vi.advanceTimersByTimeAsync(10)
+ expect(rendered.getByText('fetched')).toBeInTheDocument()
expect(states.current).toHaveLength(3)
@@ -104,14 +116,16 @@ describe('PersistQueryClientProvider', () => {
const states = new StatelessRef>>([])
const queryClient = new QueryClient()
- await queryClient.prefetchQuery({
+ queryClient.prefetchQuery({
queryKey: ['test'],
- queryFn: () => Promise.resolve('hydrated'),
+ queryFn: () => sleep(10).then(() => 'hydrated'),
})
+ await vi.advanceTimersByTimeAsync(10)
const persister = createMockPersister()
- await persistQueryClientSave({ queryClient, persister })
+ persistQueryClientSave({ queryClient, persister })
+ await vi.advanceTimersByTimeAsync(0)
queryClient.clear()
@@ -123,9 +137,11 @@ describe('PersistQueryClientProvider', () => {
},
})
- await waitFor(() => rendered.getByText('fetchStatus: idle'))
- await waitFor(() => rendered.getByText('hydrated'))
- await waitFor(() => rendered.getByText('fetched'))
+ expect(rendered.getByText('fetchStatus: idle')).toBeInTheDocument()
+ await vi.advanceTimersByTimeAsync(10)
+ expect(rendered.getByText('hydrated')).toBeInTheDocument()
+ await vi.advanceTimersByTimeAsync(10)
+ expect(rendered.getByText('fetched')).toBeInTheDocument()
expect(states.current).toHaveLength(3)
@@ -152,14 +168,16 @@ describe('PersistQueryClientProvider', () => {
const states = new StatelessRef>>([])
const queryClient = new QueryClient()
- await queryClient.prefetchQuery({
+ queryClient.prefetchQuery({
queryKey: ['test'],
- queryFn: () => Promise.resolve('hydrated'),
+ queryFn: () => sleep(10).then(() => 'hydrated'),
})
+ await vi.advanceTimersByTimeAsync(10)
const persister = createMockPersister()
- await persistQueryClientSave({ queryClient, persister })
+ persistQueryClientSave({ queryClient, persister })
+ await vi.advanceTimersByTimeAsync(0)
queryClient.clear()
@@ -171,9 +189,11 @@ describe('PersistQueryClientProvider', () => {
},
})
- await waitFor(() => rendered.getByText('initial'))
- await waitFor(() => rendered.getByText('hydrated'))
- await waitFor(() => rendered.getByText('fetched'))
+ expect(rendered.getByText('initial')).toBeInTheDocument()
+ await vi.advanceTimersByTimeAsync(10)
+ expect(rendered.getByText('hydrated')).toBeInTheDocument()
+ await vi.advanceTimersByTimeAsync(10)
+ expect(rendered.getByText('fetched')).toBeInTheDocument()
expect(states.current).toHaveLength(3)
@@ -200,35 +220,42 @@ describe('PersistQueryClientProvider', () => {
const states = new StatelessRef>>([])
const queryClient = new QueryClient()
- await queryClient.prefetchQuery({
+ queryClient.prefetchQuery({
queryKey: ['test'],
- queryFn: () => Promise.resolve('hydrated'),
+ queryFn: () => sleep(10).then(() => 'hydrated'),
})
+ await vi.advanceTimersByTimeAsync(10)
const persister = createMockPersister()
- await persistQueryClientSave({ queryClient, persister })
+ persistQueryClientSave({ queryClient, persister })
+ await vi.advanceTimersByTimeAsync(0)
queryClient.clear()
+ let fetched = false
+
const rendered = render(FreshData, {
props: {
queryClient,
persistOptions: { persister },
states,
+ onFetch: () => {
+ fetched = true
+ },
},
})
- await waitFor(() => rendered.getByText('data: undefined'))
- await waitFor(() => rendered.getByText('data: hydrated'))
- await expect(
- waitFor(() => rendered.getByText('data: fetched'), {
- timeout: 100,
- }),
- ).rejects.toThrowError()
+ expect(rendered.getByText('data: null')).toBeInTheDocument()
+ await vi.advanceTimersByTimeAsync(10)
+ expect(rendered.getByText('data: hydrated')).toBeInTheDocument()
+ await vi.advanceTimersByTimeAsync(10)
+ expect(rendered.getByText('data: hydrated')).toBeInTheDocument()
expect(states.current).toHaveLength(2)
+ expect(fetched).toBe(false)
+
expect(states.current[0]).toMatchObject({
status: 'pending',
fetchStatus: 'idle',
@@ -244,14 +271,16 @@ describe('PersistQueryClientProvider', () => {
test('should call onSuccess after successful restoring', async () => {
const queryClient = new QueryClient()
- await queryClient.prefetchQuery({
+ queryClient.prefetchQuery({
queryKey: ['test'],
- queryFn: () => Promise.resolve('hydrated'),
+ queryFn: () => sleep(10).then(() => 'hydrated'),
})
+ await vi.advanceTimersByTimeAsync(10)
const persister = createMockPersister()
- await persistQueryClientSave({ queryClient, persister })
+ persistQueryClientSave({ queryClient, persister })
+ await vi.advanceTimersByTimeAsync(0)
queryClient.clear()
@@ -266,21 +295,25 @@ describe('PersistQueryClientProvider', () => {
})
expect(onSuccess).toHaveBeenCalledTimes(0)
- await waitFor(() => rendered.getByText('hydrated'))
+ await vi.advanceTimersByTimeAsync(10)
+ expect(rendered.getByText('hydrated')).toBeInTheDocument()
expect(onSuccess).toHaveBeenCalledTimes(1)
- await waitFor(() => rendered.getByText('fetched'))
+ await vi.advanceTimersByTimeAsync(10)
+ expect(rendered.getByText('fetched')).toBeInTheDocument()
})
test('should await onSuccess after successful restoring', async () => {
const queryClient = new QueryClient()
- await queryClient.prefetchQuery({
+ queryClient.prefetchQuery({
queryKey: ['test'],
- queryFn: () => Promise.resolve('hydrated'),
+ queryFn: () => sleep(10).then(() => 'hydrated'),
})
+ await vi.advanceTimersByTimeAsync(10)
const persister = createMockPersister()
- await persistQueryClientSave({ queryClient, persister })
+ persistQueryClientSave({ queryClient, persister })
+ await vi.advanceTimersByTimeAsync(0)
queryClient.clear()
@@ -299,8 +332,10 @@ describe('PersistQueryClientProvider', () => {
},
})
- await waitFor(() => rendered.getByText('hydrated'))
- await waitFor(() => rendered.getByText('fetched'))
+ await vi.advanceTimersByTimeAsync(15)
+ expect(rendered.getByText('hydrated')).toBeInTheDocument()
+ await vi.advanceTimersByTimeAsync(10)
+ expect(rendered.getByText('fetched')).toBeInTheDocument()
expect(states.current).toEqual([
'onSuccess',
@@ -329,7 +364,9 @@ describe('PersistQueryClientProvider', () => {
props: { queryClient, persistOptions: { persister }, onError, onSuccess },
})
- await waitFor(() => rendered.getByText('fetched'))
+ await vi.advanceTimersByTimeAsync(10)
+ await vi.advanceTimersByTimeAsync(10)
+ expect(rendered.getByText('fetched')).toBeInTheDocument()
expect(removeClient).toHaveBeenCalledTimes(1)
expect(onSuccess).toHaveBeenCalledTimes(0)
expect(onError).toHaveBeenCalledTimes(1)
diff --git a/packages/svelte-query-persist-client/tests/RemoveCache/RemoveCache.svelte b/packages/svelte-query-persist-client/tests/RemoveCache/RemoveCache.svelte
index a6ef7b3214..7d552fa5b3 100644
--- a/packages/svelte-query-persist-client/tests/RemoveCache/RemoveCache.svelte
+++ b/packages/svelte-query-persist-client/tests/RemoveCache/RemoveCache.svelte
@@ -1,9 +1,10 @@
diff --git a/packages/svelte-query-persist-client/tests/RestoreCache/RestoreCache.svelte b/packages/svelte-query-persist-client/tests/RestoreCache/RestoreCache.svelte
index 79b9b6add5..4829b37b4b 100644
--- a/packages/svelte-query-persist-client/tests/RestoreCache/RestoreCache.svelte
+++ b/packages/svelte-query-persist-client/tests/RestoreCache/RestoreCache.svelte
@@ -1,5 +1,6 @@