Skip to content

Commit 8dbbdf8

Browse files
committed
Added test for aggregate methods
1 parent ed3cea6 commit 8dbbdf8

File tree

1 file changed

+51
-16
lines changed

1 file changed

+51
-16
lines changed

tests/integration/drivers/default/builders/queryBuilder.test.ts

Lines changed: 51 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)