From e629c609ff38e9dea7da303c47ddd8a4b713c545 Mon Sep 17 00:00:00 2001 From: Wonsuk Choi Date: Mon, 20 Apr 2026 20:11:54 +0900 Subject: [PATCH 1/2] test(angular-query-experimental/injectQueries): add test for not fetching when 'isRestoring' is true --- .../src/__tests__/inject-queries.test.ts | 48 ++++++++++++++++++- 1 file changed, 47 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..9a9234b2d5e 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,49 @@ describe('injectQueries', () => { expect(results[1]).toMatchObject([{ data: 1 }, { data: undefined }]) expect(results[2]).toMatchObject([{ data: 1 }, { data: 2 }]) }) + + 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) + }) }) From 4b1d9dcc41fc8e57f0e3dd9c5f4feda56fac8809 Mon Sep 17 00:00:00 2001 From: Wonsuk Choi Date: Mon, 20 Apr 2026 20:42:34 +0900 Subject: [PATCH 2/2] 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 | 80 ++++++++++--------- 1 file changed, 41 insertions(+), 39 deletions(-) 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 9a9234b2d5e..1cead27d3c1 100644 --- a/packages/angular-query-experimental/src/__tests__/inject-queries.test.ts +++ b/packages/angular-query-experimental/src/__tests__/inject-queries.test.ts @@ -82,48 +82,50 @@ describe('injectQueries', () => { expect(results[2]).toMatchObject([{ data: 1 }, { data: 2 }]) }) - 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()), - ], - }) + 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)) - const queries = TestBed.runInInjectionContext(() => - injectQueries(() => ({ - queries: [ - { queryKey: key1, queryFn: queryFn1 }, - { queryKey: key2, queryFn: queryFn2 }, + 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(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) + 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) + }) }) })