@@ -3,11 +3,12 @@ import {
33 Component ,
44 effect ,
55 provideZonelessChangeDetection ,
6+ signal ,
67} from '@angular/core'
78import { TestBed } from '@angular/core/testing'
89import { render } from '@testing-library/angular'
910import { queryKey , sleep } from '@tanstack/query-test-utils'
10- import { QueryClient , provideTanStackQuery } from '..'
11+ import { QueryClient , provideIsRestoring , provideTanStackQuery } from '..'
1112import { injectQueries } from '../inject-queries'
1213
1314let 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