Skip to content

Commit dbee9eb

Browse files
authored
test(query-core/queriesObserver): add test for recalculating combined result when 'combine' function changes (#10508)
1 parent 63909c7 commit dbee9eb

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

packages/query-core/src/__tests__/queriesObserver.test.tsx

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)