@@ -12,7 +12,17 @@ const mockPowerSync = {
12
12
registerListener : vi . fn ( ( ) => { } ) ,
13
13
resolveTables : vi . fn ( ( ) => [ 'table1' , 'table2' ] ) ,
14
14
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
+ } )
16
26
} ;
17
27
18
28
describe ( 'useQueries' , ( ) => {
@@ -58,19 +68,20 @@ describe('useQueries', () => {
58
68
( ) =>
59
69
useQueries ( {
60
70
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 ] }
63
73
]
64
74
} ) ,
65
75
{ wrapper }
66
76
) ;
67
77
68
78
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' } ) ;
74
85
} ) ;
75
86
} ) ;
76
87
@@ -85,7 +96,7 @@ describe('useQueries', () => {
85
96
useQueries ( {
86
97
queries : [
87
98
{ queryKey : [ 'q1' ] , query : compilableQuery } ,
88
- { queryKey : [ 'q2' ] , query : 'SELECT 2 ' }
99
+ { queryKey : [ 'q2' ] , query : 'SELECT * FROM posts ' }
89
100
]
90
101
} ) ,
91
102
{ wrapper }
@@ -94,7 +105,7 @@ describe('useQueries', () => {
94
105
await waitFor ( ( ) => {
95
106
const results = result . current as any [ ] ;
96
107
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' } ) ;
98
109
} ) ;
99
110
} ) ;
100
111
@@ -134,19 +145,27 @@ describe('useQueries', () => {
134
145
( ) =>
135
146
useQueries ( {
136
147
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 ] }
139
150
] ,
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
+ }
141
159
} ) ,
142
160
{ wrapper }
143
161
) ;
144
162
145
163
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' } ) ;
150
169
} ) ;
151
170
} ) ;
152
171
0 commit comments