diff --git a/.changeset/fuzzy-peaches-sort.md b/.changeset/fuzzy-peaches-sort.md new file mode 100644 index 000000000..8e1e1675a --- /dev/null +++ b/.changeset/fuzzy-peaches-sort.md @@ -0,0 +1,5 @@ +--- +'@tanstack/query-db-collection': patch +--- + +Fix refetch such that it returns the query observer results instead of undefined. diff --git a/packages/query-db-collection/src/query.ts b/packages/query-db-collection/src/query.ts index 47e07be63..4038b49b5 100644 --- a/packages/query-db-collection/src/query.ts +++ b/packages/query-db-collection/src/query.ts @@ -142,7 +142,7 @@ export interface QueryCollectionConfig< */ export type RefetchFn = (opts?: { throwOnError?: boolean -}) => Promise | void> +}) => Promise | void>> /** * Utility methods available on Query Collections for direct writes and manual operations. @@ -1133,7 +1133,7 @@ export function queryCollectionOptions( }) }) - await Promise.all(refetchPromises) + return Promise.all(refetchPromises) } /** diff --git a/packages/query-db-collection/tests/query.test.ts b/packages/query-db-collection/tests/query.test.ts index a6d73cea1..5d177e77e 100644 --- a/packages/query-db-collection/tests/query.test.ts +++ b/packages/query-db-collection/tests/query.test.ts @@ -2759,6 +2759,43 @@ describe(`QueryCollection`, () => { await collection.cleanup() }) + + it(`should return array of QueryObserverResult`, async () => { + const queryKey = [`refetch-return-value-test`] + const mockData = [{ id: `1`, val: Math.random() * 100 }] + const queryFn = vi.fn().mockResolvedValue(mockData) + + const collection = createCollection( + queryCollectionOptions({ + id: `refetch-return-value-test`, + queryClient, + queryKey, + queryFn, + getKey, + startSync: true, + }), + ) + + await vi.waitFor(() => { + expect(collection.status).toBe(`ready`) + }) + + queryFn.mockClear() + + const result = await collection.utils.refetch() + + expect(queryFn).toHaveBeenCalledTimes(1) + + expect(result).not.toBeUndefined() + expect(Array.isArray(result)).toBe(true) + expect(result.length).toBeGreaterThan(0) + for (const r of result) { + expect(r).toHaveProperty(`status`) + expect(r).toHaveProperty(`data`) + } + + await collection.cleanup() + }) }) describe(`Error Handling`, () => {