@@ -11,7 +11,13 @@ import { fireEvent } from '@solidjs/testing-library'
1111import * as QueryCore from '@tanstack/query-core'
1212import { createRenderEffect , createSignal } from 'solid-js'
1313import { queryKey , sleep } from '@tanstack/query-test-utils'
14- import { QueriesObserver , QueryCache , QueryClient , useQueries } from '..'
14+ import {
15+ IsRestoringProvider ,
16+ QueriesObserver ,
17+ QueryCache ,
18+ QueryClient ,
19+ useQueries ,
20+ } from '..'
1521import { renderWithClient } from './utils'
1622import type {
1723 QueryFunction ,
@@ -717,4 +723,59 @@ describe('useQueries', () => {
717723 await vi . advanceTimersByTimeAsync ( 20 )
718724 QueriesObserverSpy . mockRestore ( )
719725 } )
726+
727+ it ( 'should not fetch for the duration of the restoring period when isRestoring is true' , async ( ) => {
728+ const key1 = queryKey ( )
729+ const key2 = queryKey ( )
730+ const queryFn1 = vi . fn ( ( ) => sleep ( 10 ) . then ( ( ) => 'data1' ) )
731+ const queryFn2 = vi . fn ( ( ) => sleep ( 10 ) . then ( ( ) => 'data2' ) )
732+
733+ function Page ( ) {
734+ const results = useQueries ( ( ) => ( {
735+ queries : [
736+ { queryKey : key1 , queryFn : queryFn1 } ,
737+ { queryKey : key2 , queryFn : queryFn2 } ,
738+ ] ,
739+ } ) )
740+
741+ return (
742+ < div >
743+ < div data-testid = "status1" > { results [ 0 ] . status } </ div >
744+ < div data-testid = "status2" > { results [ 1 ] . status } </ div >
745+ < div data-testid = "fetchStatus1" > { results [ 0 ] . fetchStatus } </ div >
746+ < div data-testid = "fetchStatus2" > { results [ 1 ] . fetchStatus } </ div >
747+ < div data-testid = "data1" > { results [ 0 ] . data ?? 'undefined' } </ div >
748+ < div data-testid = "data2" > { results [ 1 ] . data ?? 'undefined' } </ div >
749+ </ div >
750+ )
751+ }
752+
753+ const rendered = renderWithClient ( queryClient , ( ) => (
754+ < IsRestoringProvider value = { ( ) => true } >
755+ < Page />
756+ </ IsRestoringProvider >
757+ ) )
758+
759+ await vi . advanceTimersByTimeAsync ( 0 )
760+
761+ expect ( rendered . getByTestId ( 'status1' ) ) . toHaveTextContent ( 'pending' )
762+ expect ( rendered . getByTestId ( 'status2' ) ) . toHaveTextContent ( 'pending' )
763+ expect ( rendered . getByTestId ( 'fetchStatus1' ) ) . toHaveTextContent ( 'idle' )
764+ expect ( rendered . getByTestId ( 'fetchStatus2' ) ) . toHaveTextContent ( 'idle' )
765+ expect ( rendered . getByTestId ( 'data1' ) ) . toHaveTextContent ( 'undefined' )
766+ expect ( rendered . getByTestId ( 'data2' ) ) . toHaveTextContent ( 'undefined' )
767+ expect ( queryFn1 ) . toHaveBeenCalledTimes ( 0 )
768+ expect ( queryFn2 ) . toHaveBeenCalledTimes ( 0 )
769+
770+ await vi . advanceTimersByTimeAsync ( 10 )
771+
772+ expect ( rendered . getByTestId ( 'status1' ) ) . toHaveTextContent ( 'pending' )
773+ expect ( rendered . getByTestId ( 'status2' ) ) . toHaveTextContent ( 'pending' )
774+ expect ( rendered . getByTestId ( 'fetchStatus1' ) ) . toHaveTextContent ( 'idle' )
775+ expect ( rendered . getByTestId ( 'fetchStatus2' ) ) . toHaveTextContent ( 'idle' )
776+ expect ( rendered . getByTestId ( 'data1' ) ) . toHaveTextContent ( 'undefined' )
777+ expect ( rendered . getByTestId ( 'data2' ) ) . toHaveTextContent ( 'undefined' )
778+ expect ( queryFn1 ) . toHaveBeenCalledTimes ( 0 )
779+ expect ( queryFn2 ) . toHaveBeenCalledTimes ( 0 )
780+ } )
720781} )
0 commit comments