@@ -347,4 +347,45 @@ describe('queriesObserver', () => {
347347 expect ( queryFn1 ) . toHaveBeenCalledTimes ( 1 )
348348 expect ( queryFn2 ) . toHaveBeenCalledTimes ( 1 )
349349 } )
350+
351+ test ( 'should notify when results change during early return' , async ( ) => {
352+ const key1 = queryKey ( )
353+ const key2 = queryKey ( )
354+ const queryFn1 = vi . fn ( ) . mockReturnValue ( 1 )
355+ const queryFn2 = vi . fn ( ) . mockReturnValue ( 2 )
356+
357+ queryClient . setQueryData ( key1 , 1 )
358+ queryClient . setQueryData ( key2 , 2 )
359+
360+ const observer = new QueriesObserver ( queryClient , [
361+ { queryKey : key1 , queryFn : queryFn1 } ,
362+ { queryKey : key2 , queryFn : queryFn2 } ,
363+ ] )
364+
365+ const results : Array < Array < QueryObserverResult > > = [ ]
366+ results . push ( observer . getCurrentResult ( ) )
367+
368+ const unsubscribe = observer . subscribe ( ( result ) => {
369+ results . push ( result )
370+ } )
371+
372+ observer . setQueries ( [
373+ { queryKey : key1 , queryFn : queryFn1 , staleTime : Infinity } ,
374+ { queryKey : key2 , queryFn : queryFn2 , staleTime : Infinity } ,
375+ ] )
376+
377+ await vi . advanceTimersByTimeAsync ( 0 )
378+
379+ unsubscribe ( )
380+
381+ expect ( results . length ) . toBeGreaterThanOrEqual ( 2 )
382+ expect ( results [ 0 ] ) . toMatchObject ( [
383+ { status : 'success' , data : 1 } ,
384+ { status : 'success' , data : 2 } ,
385+ ] )
386+ expect ( results [ results . length - 1 ] ) . toMatchObject ( [
387+ { status : 'success' , data : 1 } ,
388+ { status : 'success' , data : 2 } ,
389+ ] )
390+ } )
350391} )
0 commit comments