@@ -60,12 +60,47 @@ describe('QueryBuilder tests', () => {
6060 test ( 'retrieving a paginated list resources with included relations' , async ( ) => {
6161 const queryBuilder = new QueryBuilder < Post , PostAttributes > ( Post ) ;
6262 await queryBuilder . with ( [ 'user' , 'profile' ] ) . get ( ) ;
63+ const requests = server . pretender . handledRequests ;
64+ expect ( requests [ 0 ] . queryParams ) . toStrictEqual ( {
65+ limit : '15' ,
66+ page : '1' ,
67+ include : 'user,profile'
68+ } ) ;
69+ } ) ;
70+
71+ test ( 'retrieving a paginated list resources with included aggregates' , async ( ) => {
72+ const queryBuilder = new QueryBuilder < Post > ( Post ) ;
73+ await queryBuilder
74+ . withAvg ( {
75+ column : 'id' ,
76+ relation : 'tags'
77+ } )
78+ . withMin ( {
79+ column : 'id' ,
80+ relation : 'tags'
81+ } )
82+ . withMax ( {
83+ column : 'id' ,
84+ relation : 'tags'
85+ } )
86+ . withSum ( {
87+ column : 'id' ,
88+ relation : 'tags'
89+ } )
90+ . withCount ( 'tags' )
91+ . withExists ( 'tags' )
92+ . get ( ) ;
6393
6494 const requests = server . pretender . handledRequests ;
6595 expect ( requests [ 0 ] . queryParams ) . toStrictEqual ( {
6696 limit : '15' ,
6797 page : '1' ,
68- include : 'user,profile' ,
98+ with_avg : 'tags.id' ,
99+ with_min : 'tags.id' ,
100+ with_max : 'tags.id' ,
101+ with_sum : 'tags.id' ,
102+ with_count : 'tags' ,
103+ with_exists : 'tags'
69104 } ) ;
70105 } ) ;
71106
@@ -96,11 +131,11 @@ describe('QueryBuilder tests', () => {
96131 field : 'test field' ,
97132 operator : FilterOperator . GreaterThanOrEqual ,
98133 value : 'test value' ,
99- type : FilterType . Or ,
100- } ,
134+ type : FilterType . Or
135+ }
101136 ] ,
102137 search : { value : 'test keyword' } ,
103- sort : [ { field : 'test field' , direction : SortDirection . Desc } ] ,
138+ sort : [ { field : 'test field' , direction : SortDirection . Desc } ]
104139 } ;
105140 expect ( JSON . parse ( requests [ 0 ] . requestBody ) ) . toStrictEqual ( searchParameters ) ;
106141 } ) ;
@@ -129,14 +164,14 @@ describe('QueryBuilder tests', () => {
129164 expect ( requests [ 0 ] . queryParams ) . toStrictEqual ( {
130165 limit : '15' ,
131166 page : '1' ,
132- include : 'user,profile' ,
167+ include : 'user,profile'
133168 } ) ;
134169 } ) ;
135170
136171 test ( 'storing a resource' , async ( ) => {
137172 const queryBuilder = new QueryBuilder < Post , PostAttributes > ( Post ) ;
138173 const post = await queryBuilder . store ( {
139- title : 'Test Post' ,
174+ title : 'Test Post'
140175 } ) ;
141176
142177 expect ( post ) . toBeInstanceOf ( Post ) ;
@@ -147,7 +182,7 @@ describe('QueryBuilder tests', () => {
147182 test ( 'storing a resource and getting its relations' , async ( ) => {
148183 const queryBuilder = new QueryBuilder < Post , PostAttributes > ( Post ) ;
149184 const post = await queryBuilder . with ( [ 'user' , 'profile' ] ) . store ( {
150- title : 'Test Post' ,
185+ title : 'Test Post'
151186 } ) ;
152187
153188 expect ( post ) . toBeInstanceOf ( Post ) ;
@@ -196,7 +231,7 @@ describe('QueryBuilder tests', () => {
196231
197232 const queryBuilder = new QueryBuilder < Post , PostAttributes > ( Post ) ;
198233 const post = await queryBuilder . update ( '1' , {
199- title : 'Updated Post' ,
234+ title : 'Updated Post'
200235 } ) ;
201236
202237 expect ( post ) . toBeInstanceOf ( Post ) ;
@@ -209,7 +244,7 @@ describe('QueryBuilder tests', () => {
209244
210245 const queryBuilder = new QueryBuilder < Post , PostAttributes > ( Post ) ;
211246 const post = await queryBuilder . with ( [ 'user' , 'profile' ] ) . update ( '1' , {
212- title : 'Updated Post' ,
247+ title : 'Updated Post'
213248 } ) ;
214249
215250 expect ( post ) . toBeInstanceOf ( Post ) ;
@@ -225,7 +260,7 @@ describe('QueryBuilder tests', () => {
225260
226261 const queryBuilder = new QueryBuilder < Post , PostAttributes > ( Post ) ;
227262 const post = await queryBuilder . withTrashed ( ) . update ( '1' , {
228- title : 'Updated Post' ,
263+ title : 'Updated Post'
229264 } ) ;
230265
231266 expect ( post ) . toBeInstanceOf ( Post ) ;
@@ -246,7 +281,7 @@ describe('QueryBuilder tests', () => {
246281 expect ( post . $attributes ) . toStrictEqual ( {
247282 id : '1' ,
248283 title : 'Test Post' ,
249- deleted_at : '2021-01-01' ,
284+ deleted_at : '2021-01-01'
250285 } ) ;
251286 expect ( server . schema . posts . find ( '1' ) . attrs . deleted_at ) . toBeDefined ( ) ;
252287 } ) ;
@@ -261,7 +296,7 @@ describe('QueryBuilder tests', () => {
261296 expect ( post . $attributes ) . toStrictEqual ( {
262297 id : '1' ,
263298 title : 'Test Post' ,
264- deleted_at : '2021-01-01' ,
299+ deleted_at : '2021-01-01'
265300 } ) ;
266301 expect ( server . schema . posts . find ( '1' ) . attrs . deleted_at ) . toBeDefined ( ) ;
267302
@@ -319,23 +354,23 @@ describe('QueryBuilder tests', () => {
319354 id : 1 ,
320355 name : 'Test User' ,
321356 updated_at : '2021-02-01' ,
322- created_at : '2021-02-01' ,
323- } as unknown ) as User ,
357+ created_at : '2021-02-01'
358+ } as unknown ) as User
324359 } ) ;
325360
326361 expect ( post ) . toBeInstanceOf ( Post ) ;
327362 expect ( post . $attributes ) . toStrictEqual ( {
328363 id : 1 ,
329364 title : 'test' ,
330365 updated_at : '2021-02-01' ,
331- created_at : '2021-02-01' ,
366+ created_at : '2021-02-01'
332367 } ) ;
333368 expect ( post . $relations . user ) . toBeInstanceOf ( User ) ;
334369 expect ( post . $relations . user . $attributes ) . toStrictEqual ( {
335370 id : 1 ,
336371 name : 'Test User' ,
337372 updated_at : '2021-02-01' ,
338- created_at : '2021-02-01' ,
373+ created_at : '2021-02-01'
339374 } ) ;
340375 } ) ;
341376} ) ;
0 commit comments