Skip to content

Commit e629c60

Browse files
committed
test(angular-query-experimental/injectQueries): add test for not fetching when 'isRestoring' is true
1 parent 599e51d commit e629c60

1 file changed

Lines changed: 47 additions & 1 deletion

File tree

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

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

0 commit comments

Comments
 (0)