Skip to content

Commit ef3666c

Browse files
committed
feat(tanstack-react-query): improve useQueries test with realistic mock data
1 parent 7479e96 commit ef3666c

File tree

1 file changed

+36
-17
lines changed

1 file changed

+36
-17
lines changed

packages/tanstack-react-query/tests/useQueries.test.tsx

Lines changed: 36 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,17 @@ const mockPowerSync = {
1212
registerListener: vi.fn(() => {}),
1313
resolveTables: vi.fn(() => ['table1', 'table2']),
1414
onChangeWithCallback: vi.fn(),
15-
getAll: vi.fn((sql, params) => Promise.resolve([sql, ...(params || [])]))
15+
getAll: vi.fn((sql) => {
16+
if (sql.includes('users')) {
17+
return Promise.resolve([{ id: 1, name: 'Test User' }]);
18+
}
19+
20+
if (sql.includes('posts')) {
21+
return Promise.resolve([{ id: 1, title: 'Test Post' }]);
22+
}
23+
24+
return Promise.resolve([{ id: 1, result: 'mock data' }]);
25+
})
1626
};
1727

1828
describe('useQueries', () => {
@@ -58,19 +68,20 @@ describe('useQueries', () => {
5868
() =>
5969
useQueries({
6070
queries: [
61-
{ queryKey: ['q1'], query: 'SELECT 1', parameters: [42] },
62-
{ queryKey: ['q2'], query: 'SELECT 2', parameters: [99] }
71+
{ queryKey: ['users'], query: 'SELECT * FROM users WHERE active = ?', parameters: [true] },
72+
{ queryKey: ['posts'], query: 'SELECT * FROM posts WHERE published = ?', parameters: [true] }
6373
]
6474
}),
6575
{ wrapper }
6676
);
6777

6878
await waitFor(() => {
69-
const results = result.current as any[];
70-
expect(results[0].data[0]).toEqual('SELECT 1');
71-
expect(results[0].data[1]).toEqual(42);
72-
expect(results[1].data[0]).toEqual('SELECT 2');
73-
expect(results[1].data[1]).toEqual(99);
79+
const results = result.current;
80+
81+
expect(results[0].data).toHaveLength(1);
82+
expect(results[0].data?.[0]).toEqual({ id: 1, name: 'Test User' });
83+
expect(results[1].data).toHaveLength(1);
84+
expect(results[1].data?.[0]).toEqual({ id: 1, title: 'Test Post' });
7485
});
7586
});
7687

@@ -85,7 +96,7 @@ describe('useQueries', () => {
8596
useQueries({
8697
queries: [
8798
{ queryKey: ['q1'], query: compilableQuery },
88-
{ queryKey: ['q2'], query: 'SELECT 2' }
99+
{ queryKey: ['q2'], query: 'SELECT * FROM posts' }
89100
]
90101
}),
91102
{ wrapper }
@@ -94,7 +105,7 @@ describe('useQueries', () => {
94105
await waitFor(() => {
95106
const results = result.current as any[];
96107
expect(results[0].data[0].test).toEqual('custom');
97-
expect(results[1].data[0]).toEqual('SELECT 2');
108+
expect(results[1].data[0]).toEqual({ id: 1, title: 'Test Post' });
98109
});
99110
});
100111

@@ -134,19 +145,27 @@ describe('useQueries', () => {
134145
() =>
135146
useQueries({
136147
queries: [
137-
{ queryKey: ['q1'], query: 'SELECT 1', parameters: [1] },
138-
{ queryKey: ['q2'], query: 'SELECT 2', parameters: [2] }
148+
{ queryKey: ['users'], query: 'SELECT * FROM users WHERE active = ?', parameters: [true] },
149+
{ queryKey: ['posts'], query: 'SELECT * FROM posts WHERE published = ?', parameters: [true] }
139150
],
140-
combine: (results) => results.map((r) => r.data).flat()
151+
combine: (results) => {
152+
const [usersResult, postsResult] = results;
153+
return {
154+
totalUsers: usersResult.data?.length ?? 0,
155+
totalPosts: postsResult.data?.length ?? 0,
156+
allData: [...(usersResult.data ?? []), ...(postsResult.data ?? [])]
157+
};
158+
}
141159
}),
142160
{ wrapper }
143161
);
144162

145163
await waitFor(() => {
146-
expect(result.current).toContain('SELECT 1');
147-
expect(result.current).toContain(1);
148-
expect(result.current).toContain('SELECT 2');
149-
expect(result.current).toContain(2);
164+
expect(result.current.totalUsers).toBe(1);
165+
expect(result.current.totalPosts).toBe(1);
166+
expect(result.current.allData).toHaveLength(2);
167+
expect(result.current.allData).toContainEqual({ id: 1, name: 'Test User' });
168+
expect(result.current.allData).toContainEqual({ id: 1, title: 'Test Post' });
150169
});
151170
});
152171

0 commit comments

Comments
 (0)