@@ -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
1828describe ( '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