Skip to content

Commit b4a847e

Browse files
sukvvonmanudeli
andauthored
test(angular-query-experimental/inject-query): use precise time in 'advanceTimersByTimeAsync' (#9435)
Co-authored-by: Jonghyeon Ko <manudeli.ko@gmail.com>
1 parent b67caee commit b4a847e

File tree

1 file changed

+23
-29
lines changed

1 file changed

+23
-29
lines changed

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

Lines changed: 23 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,6 @@ import { QueryCache, QueryClient, injectQuery, provideTanStackQuery } from '..'
2222
import { setSignalInputs } from './test-utils'
2323
import type { CreateQueryOptions, OmitKeyof, QueryFunction } from '..'
2424

25-
const QUERY_DURATION = 100
26-
27-
const resolveQueries = () => vi.advanceTimersByTimeAsync(QUERY_DURATION)
28-
2925
describe('injectQuery', () => {
3026
let queryCache: QueryCache
3127
let queryClient: QueryClient
@@ -265,7 +261,7 @@ describe('injectQuery', () => {
265261
const query = TestBed.runInInjectionContext(() => {
266262
return injectQuery(() => ({
267263
queryKey: ['key1'],
268-
queryFn: () => sleep(0).then(() => 'Some data'),
264+
queryFn: () => sleep(10).then(() => 'Some data'),
269265
}))
270266
})
271267

@@ -280,12 +276,11 @@ describe('injectQuery', () => {
280276
const query = TestBed.runInInjectionContext(() => {
281277
return injectQuery(() => ({
282278
queryKey: ['key2'],
283-
queryFn: () => sleep(0).then(() => 'result2'),
279+
queryFn: () => sleep(10).then(() => 'result2'),
284280
}))
285281
})
286282

287-
await resolveQueries()
288-
283+
await vi.advanceTimersByTimeAsync(11)
289284
expect(query.status()).toBe('success')
290285
expect(query.data()).toBe('result2')
291286
expect(query.isPending()).toBe(false)
@@ -300,12 +295,11 @@ describe('injectQuery', () => {
300295
retry: false,
301296
queryKey: ['key3'],
302297
queryFn: () =>
303-
sleep(0).then(() => Promise.reject(new Error('Some error'))),
298+
sleep(10).then(() => Promise.reject(new Error('Some error'))),
304299
}))
305300
})
306301

307-
await resolveQueries()
308-
302+
await vi.advanceTimersByTimeAsync(11)
309303
expect(query.status()).toBe('error')
310304
expect(query.data()).toBe(undefined)
311305
expect(query.error()).toMatchObject({ message: 'Some error' })
@@ -318,7 +312,7 @@ describe('injectQuery', () => {
318312

319313
test('should update query on options contained signal change', async () => {
320314
const key = signal(['key6', 'key7'])
321-
const spy = vi.fn(() => sleep(0).then(() => 'Some data'))
315+
const spy = vi.fn(() => sleep(10).then(() => 'Some data'))
322316

323317
const query = TestBed.runInInjectionContext(() => {
324318
return injectQuery(() => ({
@@ -327,10 +321,10 @@ describe('injectQuery', () => {
327321
}))
328322
})
329323

330-
await resolveQueries()
331-
324+
await vi.advanceTimersByTimeAsync(0)
332325
expect(spy).toHaveBeenCalledTimes(1)
333326

327+
await vi.advanceTimersByTimeAsync(11)
334328
expect(query.status()).toBe('success')
335329

336330
key.set(['key8'])
@@ -347,7 +341,7 @@ describe('injectQuery', () => {
347341
})
348342

349343
test('should only run query once enabled signal is set to true', async () => {
350-
const spy = vi.fn(() => sleep(0).then(() => 'Some data'))
344+
const spy = vi.fn(() => sleep(10).then(() => 'Some data'))
351345
const enabled = signal(false)
352346

353347
const query = TestBed.runInInjectionContext(() => {
@@ -362,7 +356,8 @@ describe('injectQuery', () => {
362356
expect(query.status()).toBe('pending')
363357

364358
enabled.set(true)
365-
await resolveQueries()
359+
360+
await vi.advanceTimersByTimeAsync(11)
366361
expect(spy).toHaveBeenCalledTimes(1)
367362
expect(query.status()).toBe('success')
368363
})
@@ -371,7 +366,7 @@ describe('injectQuery', () => {
371366
const query1 = TestBed.runInInjectionContext(() => {
372367
return injectQuery(() => ({
373368
queryKey: ['dependant1'],
374-
queryFn: () => sleep(0).then(() => 'Some data'),
369+
queryFn: () => sleep(10).then(() => 'Some data'),
375370
}))
376371
})
377372

@@ -393,12 +388,12 @@ describe('injectQuery', () => {
393388
expect(query2.fetchStatus()).toStrictEqual('idle')
394389
expect(dependentQueryFn).not.toHaveBeenCalled()
395390

396-
await resolveQueries()
391+
await vi.advanceTimersByTimeAsync(11)
397392

398393
expect(query1.data()).toStrictEqual('Some data')
399394
expect(query2.fetchStatus()).toStrictEqual('fetching')
400395

401-
await vi.runAllTimersAsync()
396+
await vi.advanceTimersByTimeAsync(1002)
402397

403398
expect(query2.fetchStatus()).toStrictEqual('idle')
404399
expect(query2.status()).toStrictEqual('success')
@@ -409,7 +404,7 @@ describe('injectQuery', () => {
409404
})
410405

411406
test('should use the current value for the queryKey when refetch is called', async () => {
412-
const fetchFn = vi.fn(() => sleep(0).then(() => 'Some data'))
407+
const fetchFn = vi.fn(() => sleep(10).then(() => 'Some data'))
413408
const keySignal = signal('key11')
414409

415410
const query = TestBed.runInInjectionContext(() => {
@@ -431,10 +426,9 @@ describe('injectQuery', () => {
431426
)
432427
})
433428

434-
await resolveQueries()
429+
await vi.advanceTimersByTimeAsync(11)
435430

436431
keySignal.set('key12')
437-
438432
TestBed.tick()
439433

440434
query.refetch().then(() => {
@@ -446,7 +440,7 @@ describe('injectQuery', () => {
446440
)
447441
})
448442

449-
await resolveQueries()
443+
await vi.advanceTimersByTimeAsync(11)
450444
})
451445

452446
describe('throwOnError', () => {
@@ -456,13 +450,13 @@ describe('injectQuery', () => {
456450
return injectQuery(() => ({
457451
queryKey: ['key12'],
458452
queryFn: () =>
459-
sleep(0).then(() => Promise.reject(new Error('Some error'))),
453+
sleep(10).then(() => Promise.reject(new Error('Some error'))),
454+
retry: false,
460455
throwOnError: boundaryFn,
461456
}))
462457
})
463458

464-
await vi.runAllTimersAsync()
465-
459+
await vi.advanceTimersByTimeAsync(11)
466460
expect(boundaryFn).toHaveBeenCalledTimes(1)
467461
expect(boundaryFn).toHaveBeenCalledWith(
468462
Error('Some error'),
@@ -505,13 +499,13 @@ describe('injectQuery', () => {
505499
retry: false,
506500
queryKey: ['key15'],
507501
queryFn: () =>
508-
sleep(0).then(() => Promise.reject(new Error('Some error'))),
502+
sleep(10).then(() => Promise.reject(new Error('Some error'))),
509503
}))
510504
})
511505

512506
expect(query.status()).toBe('pending')
513507

514-
await resolveQueries()
508+
await vi.advanceTimersByTimeAsync(11)
515509

516510
expect(query.status()).toBe('error')
517511
})
@@ -537,7 +531,7 @@ describe('injectQuery', () => {
537531
})
538532

539533
fixture.detectChanges()
540-
await resolveQueries()
534+
await vi.advanceTimersByTimeAsync(0)
541535

542536
expect(fixture.componentInstance.query.data()).toEqual(
543537
'signal-input-required-test',

0 commit comments

Comments
 (0)