From 799952fa94420c820064cea377cd9a6579ab968e Mon Sep 17 00:00:00 2001 From: Wonsuk Choi Date: Mon, 20 Apr 2026 20:48:37 +0900 Subject: [PATCH] test(angular-query-experimental/injectQueries): add test for not fetching when 'isRestoring' is true (#10526) * test(angular-query-experimental/injectQueries): add test for not fetching when 'isRestoring' is true * test(angular-query-experimental/inject-queries): wrap 'isRestoring' test in 'describe' block for consistency with 'inject-query.test.ts' --- .../src/__tests__/inject-queries.test.ts | 50 ++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/packages/angular-query-experimental/src/__tests__/inject-queries.test.ts b/packages/angular-query-experimental/src/__tests__/inject-queries.test.ts index d85e1985b3e..1cead27d3c1 100644 --- a/packages/angular-query-experimental/src/__tests__/inject-queries.test.ts +++ b/packages/angular-query-experimental/src/__tests__/inject-queries.test.ts @@ -3,11 +3,12 @@ import { Component, effect, provideZonelessChangeDetection, + signal, } from '@angular/core' import { TestBed } from '@angular/core/testing' import { render } from '@testing-library/angular' import { queryKey, sleep } from '@tanstack/query-test-utils' -import { QueryClient, provideTanStackQuery } from '..' +import { QueryClient, provideIsRestoring, provideTanStackQuery } from '..' import { injectQueries } from '../inject-queries' let queryClient: QueryClient @@ -80,4 +81,51 @@ describe('injectQueries', () => { expect(results[1]).toMatchObject([{ data: 1 }, { data: undefined }]) expect(results[2]).toMatchObject([{ data: 1 }, { data: 2 }]) }) + + describe('isRestoring', () => { + it('should not fetch for the duration of the restoring period when isRestoring is true', async () => { + const key1 = queryKey() + const key2 = queryKey() + const queryFn1 = vi.fn().mockImplementation(() => sleep(10).then(() => 1)) + const queryFn2 = vi.fn().mockImplementation(() => sleep(10).then(() => 2)) + + TestBed.resetTestingModule() + TestBed.configureTestingModule({ + providers: [ + provideZonelessChangeDetection(), + provideTanStackQuery(queryClient), + provideIsRestoring(signal(true).asReadonly()), + ], + }) + + const queries = TestBed.runInInjectionContext(() => + injectQueries(() => ({ + queries: [ + { queryKey: key1, queryFn: queryFn1 }, + { queryKey: key2, queryFn: queryFn2 }, + ], + })), + ) + + await vi.advanceTimersByTimeAsync(0) + expect(queries()[0].status()).toBe('pending') + expect(queries()[0].fetchStatus()).toBe('idle') + expect(queries()[0].data()).toBeUndefined() + expect(queries()[1].status()).toBe('pending') + expect(queries()[1].fetchStatus()).toBe('idle') + expect(queries()[1].data()).toBeUndefined() + expect(queryFn1).toHaveBeenCalledTimes(0) + expect(queryFn2).toHaveBeenCalledTimes(0) + + await vi.advanceTimersByTimeAsync(11) + expect(queries()[0].status()).toBe('pending') + expect(queries()[0].fetchStatus()).toBe('idle') + expect(queries()[0].data()).toBeUndefined() + expect(queries()[1].status()).toBe('pending') + expect(queries()[1].fetchStatus()).toBe('idle') + expect(queries()[1].data()).toBeUndefined() + expect(queryFn1).toHaveBeenCalledTimes(0) + expect(queryFn2).toHaveBeenCalledTimes(0) + }) + }) })