Skip to content

Commit f860b8d

Browse files
committed
test(query-core): add test for QueriesObserver early return notification
1 parent 7eaaad7 commit f860b8d

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed

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

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

Comments
 (0)