Skip to content

Commit 799952f

Browse files
authored
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'
1 parent 599e51d commit 799952f

1 file changed

Lines changed: 49 additions & 1 deletion

File tree

packages/angular-query-experimental/src/__tests__/inject-queries.test.ts

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,12 @@ import {
33
Component,
44
effect,
55
provideZonelessChangeDetection,
6+
signal,
67
} from '@angular/core'
78
import { TestBed } from '@angular/core/testing'
89
import { render } from '@testing-library/angular'
910
import { queryKey, sleep } from '@tanstack/query-test-utils'
10-
import { QueryClient, provideTanStackQuery } from '..'
11+
import { QueryClient, provideIsRestoring, provideTanStackQuery } from '..'
1112
import { injectQueries } from '../inject-queries'
1213

1314
let queryClient: QueryClient
@@ -80,4 +81,51 @@ describe('injectQueries', () => {
8081
expect(results[1]).toMatchObject([{ data: 1 }, { data: undefined }])
8182
expect(results[2]).toMatchObject([{ data: 1 }, { data: 2 }])
8283
})
84+
85+
describe('isRestoring', () => {
86+
it('should not fetch for the duration of the restoring period when isRestoring is true', async () => {
87+
const key1 = queryKey()
88+
const key2 = queryKey()
89+
const queryFn1 = vi.fn().mockImplementation(() => sleep(10).then(() => 1))
90+
const queryFn2 = vi.fn().mockImplementation(() => sleep(10).then(() => 2))
91+
92+
TestBed.resetTestingModule()
93+
TestBed.configureTestingModule({
94+
providers: [
95+
provideZonelessChangeDetection(),
96+
provideTanStackQuery(queryClient),
97+
provideIsRestoring(signal(true).asReadonly()),
98+
],
99+
})
100+
101+
const queries = TestBed.runInInjectionContext(() =>
102+
injectQueries(() => ({
103+
queries: [
104+
{ queryKey: key1, queryFn: queryFn1 },
105+
{ queryKey: key2, queryFn: queryFn2 },
106+
],
107+
})),
108+
)
109+
110+
await vi.advanceTimersByTimeAsync(0)
111+
expect(queries()[0].status()).toBe('pending')
112+
expect(queries()[0].fetchStatus()).toBe('idle')
113+
expect(queries()[0].data()).toBeUndefined()
114+
expect(queries()[1].status()).toBe('pending')
115+
expect(queries()[1].fetchStatus()).toBe('idle')
116+
expect(queries()[1].data()).toBeUndefined()
117+
expect(queryFn1).toHaveBeenCalledTimes(0)
118+
expect(queryFn2).toHaveBeenCalledTimes(0)
119+
120+
await vi.advanceTimersByTimeAsync(11)
121+
expect(queries()[0].status()).toBe('pending')
122+
expect(queries()[0].fetchStatus()).toBe('idle')
123+
expect(queries()[0].data()).toBeUndefined()
124+
expect(queries()[1].status()).toBe('pending')
125+
expect(queries()[1].fetchStatus()).toBe('idle')
126+
expect(queries()[1].data()).toBeUndefined()
127+
expect(queryFn1).toHaveBeenCalledTimes(0)
128+
expect(queryFn2).toHaveBeenCalledTimes(0)
129+
})
130+
})
83131
})

0 commit comments

Comments
 (0)