From a79d0fa4a15cb3e2b9cf2e3910c44478cd215182 Mon Sep 17 00:00:00 2001 From: Wonsuk Choi Date: Sat, 22 Aug 2026 11:58:14 +0900 Subject: [PATCH] test(vue-query/useQuery): move suspense regression tests into 'useQuery.test.ts' --- .../vue-query/src/__tests__/suspense.test.ts | 61 ------------------- .../vue-query/src/__tests__/useQuery.test.ts | 47 +++++++++++++- 2 files changed, 46 insertions(+), 62 deletions(-) delete mode 100644 packages/vue-query/src/__tests__/suspense.test.ts diff --git a/packages/vue-query/src/__tests__/suspense.test.ts b/packages/vue-query/src/__tests__/suspense.test.ts deleted file mode 100644 index 9d172870685..00000000000 --- a/packages/vue-query/src/__tests__/suspense.test.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' -import { experimental_streamedQuery } from '@tanstack/query-core' -import { queryKey, sleep } from '@tanstack/query-test-utils' -import { useQuery } from '../useQuery' -import { useQueryClient } from '../useQueryClient' - -vi.mock('../useQueryClient') - -describe('suspense()', () => { - beforeEach(() => { - vi.useFakeTimers() - }) - - afterEach(() => { - vi.useRealTimers() - }) - - it('should release suspense when setQueryData is called while fetch is in-flight', async () => { - const key = queryKey() - - const query = useQuery({ - queryKey: key, - queryFn: () => sleep(10000).then(() => 'fetched'), - }) - - const suspensePromise = query.suspense() - - const queryClient = useQueryClient() - queryClient.setQueryData(key, 'manual data') - - await vi.advanceTimersByTimeAsync(0) - - const result = await suspensePromise - expect(result.data).toBe('manual data') - }) - - it('should release suspense when streamedQuery receives first chunk', async () => { - const key = queryKey() - - async function* numberGenerator() { - await sleep(10) - yield 'chunk1' - await sleep(10) - yield 'chunk2' - } - - const query = useQuery({ - queryKey: key, - queryFn: experimental_streamedQuery({ - streamFn: () => numberGenerator(), - }), - }) - - const suspensePromise = query.suspense() - - await vi.advanceTimersByTimeAsync(10) - - const result = await suspensePromise - expect(result.data).toStrictEqual(['chunk1']) - }) -}) diff --git a/packages/vue-query/src/__tests__/useQuery.test.ts b/packages/vue-query/src/__tests__/useQuery.test.ts index 698605e872d..567baa03f82 100644 --- a/packages/vue-query/src/__tests__/useQuery.test.ts +++ b/packages/vue-query/src/__tests__/useQuery.test.ts @@ -6,10 +6,11 @@ import { reactive, ref, } from 'vue-demi' -import { QueryObserver } from '@tanstack/query-core' +import { QueryObserver, experimental_streamedQuery } from '@tanstack/query-core' import { queryKey, sleep } from '@tanstack/query-test-utils' import { useQuery } from '../useQuery' import { useBaseQuery } from '../useBaseQuery' +import { useQueryClient } from '../useQueryClient' import type { Mock, MockedFunction } from 'vitest' vi.mock('../useQueryClient') @@ -615,5 +616,49 @@ describe('useQuery', () => { }), ) }) + + it('should release suspense when setQueryData is called while fetch is in-flight', async () => { + const key = queryKey() + + const query = useQuery({ + queryKey: key, + queryFn: () => sleep(10000).then(() => 'fetched'), + }) + + const suspensePromise = query.suspense() + + const queryClient = useQueryClient() + queryClient.setQueryData(key, 'manual data') + + await vi.advanceTimersByTimeAsync(0) + + const result = await suspensePromise + expect(result.data).toBe('manual data') + }) + + it('should release suspense when streamedQuery receives first chunk', async () => { + const key = queryKey() + + async function* numberGenerator() { + await sleep(10) + yield 'chunk1' + await sleep(10) + yield 'chunk2' + } + + const query = useQuery({ + queryKey: key, + queryFn: experimental_streamedQuery({ + streamFn: () => numberGenerator(), + }), + }) + + const suspensePromise = query.suspense() + + await vi.advanceTimersByTimeAsync(10) + + const result = await suspensePromise + expect(result.data).toStrictEqual(['chunk1']) + }) }) })