@@ -552,6 +552,40 @@ describe('queriesObserver', () => {
552552 expect ( newCombined . keys ) . toEqual ( [ 'pending' ] )
553553 } )
554554
555+ test ( 'should recalculate combined result when combine function changes' , ( ) => {
556+ const combine1 = vi . fn ( ( results : Array < QueryObserverResult > ) => ( {
557+ total : results . length ,
558+ } ) )
559+ const combine2 = vi . fn ( ( results : Array < QueryObserverResult > ) => ( {
560+ total : results . length * 4 ,
561+ } ) )
562+
563+ const key1 = queryKey ( )
564+ const key2 = queryKey ( )
565+ const queryFn1 = vi . fn ( ) . mockReturnValue ( 1 )
566+ const queryFn2 = vi . fn ( ) . mockReturnValue ( 2 )
567+
568+ const queries = [
569+ { queryKey : key1 , queryFn : queryFn1 } ,
570+ { queryKey : key2 , queryFn : queryFn2 } ,
571+ ]
572+
573+ const observer = new QueriesObserver < { total : number } > (
574+ queryClient ,
575+ queries ,
576+ { combine : combine1 } ,
577+ )
578+
579+ const [ raw1 , getCombined1 ] = observer . getOptimisticResult ( queries , combine1 )
580+ const combined1 = getCombined1 ( raw1 )
581+
582+ const [ raw2 , getCombined2 ] = observer . getOptimisticResult ( queries , combine2 )
583+ const combined2 = getCombined2 ( raw2 )
584+
585+ expect ( combined1 . total ) . toBe ( 2 )
586+ expect ( combined2 . total ) . toBe ( 8 )
587+ } )
588+
555589 test ( 'should track properties on all observers when trackResult is called' , ( ) => {
556590 const key1 = queryKey ( )
557591 const key2 = queryKey ( )
0 commit comments