Skip to content

Commit fc879fb

Browse files
committed
add tests
1 parent a38f47f commit fc879fb

File tree

1 file changed

+186
-0
lines changed

1 file changed

+186
-0
lines changed

packages/cubejs-schema-compiler/test/unit/postgres-query.test.ts

Lines changed: 186 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@ describe('PostgresQuery', () => {
3535
interval: '1 quarter',
3636
offset: '1 month',
3737
},
38+
fiscal_quarter_no_offset: {
39+
interval: '1 quarter',
40+
},
3841
}
3942
},
4043
fiscalCreatedAtLabel: {
@@ -142,4 +145,187 @@ describe('PostgresQuery', () => {
142145
const queryAndParams = query.buildSqlAndParams();
143146
expect(queryAndParams[0].split('AT TIME ZONE \'America/Los_Angeles\'').length).toEqual(3);
144147
});
148+
149+
describe('order by clause', () => {
150+
it('multi granularity ordered by min granularity (auto)', async () => {
151+
await compiler.compile();
152+
153+
let query = new PostgresQuery({ joinGraph, cubeEvaluator, compiler }, {
154+
measures: [
155+
'visitors.count'
156+
],
157+
timeDimensions: [{
158+
dimension: 'visitors.createdAt',
159+
granularity: 'month',
160+
dateRange: ['2020-01-01', '2020-12-31'],
161+
}, {
162+
dimension: 'visitors.createdAt',
163+
granularity: 'week',
164+
dateRange: ['2020-01-01', '2020-12-31'],
165+
}, {
166+
dimension: 'visitors.createdAt',
167+
granularity: 'fiscal_quarter',
168+
dateRange: ['2020-01-01', '2020-12-31'],
169+
}, {
170+
dimension: 'visitors.createdAt',
171+
dateRange: ['2020-01-01', '2020-12-31'],
172+
}],
173+
order: [{ id: 'visitors.createdAt', desc: false }],
174+
timezone: 'America/Los_Angeles'
175+
});
176+
177+
let queryAndParams = query.buildSqlAndParams();
178+
expect(queryAndParams[0]).toContain('ORDER BY 2 ASC');
179+
180+
query = new PostgresQuery({ joinGraph, cubeEvaluator, compiler }, {
181+
measures: [
182+
'visitors.count'
183+
],
184+
timeDimensions: [{
185+
dimension: 'visitors.createdAt',
186+
granularity: 'week',
187+
dateRange: ['2020-01-01', '2020-12-31'],
188+
}, {
189+
dimension: 'visitors.createdAt',
190+
granularity: 'fiscal_quarter',
191+
dateRange: ['2020-01-01', '2020-12-31'],
192+
}, {
193+
dimension: 'visitors.createdAt',
194+
granularity: 'month',
195+
dateRange: ['2020-01-01', '2020-12-31'],
196+
}, {
197+
dimension: 'visitors.createdAt',
198+
dateRange: ['2020-01-01', '2020-12-31'],
199+
}],
200+
order: [{ id: 'visitors.createdAt', desc: false }],
201+
timezone: 'America/Los_Angeles'
202+
});
203+
204+
queryAndParams = query.buildSqlAndParams();
205+
expect(queryAndParams[0]).toContain('ORDER BY 1 ASC');
206+
207+
query = new PostgresQuery({ joinGraph, cubeEvaluator, compiler }, {
208+
measures: [
209+
'visitors.count'
210+
],
211+
timeDimensions: [{
212+
dimension: 'visitors.createdAt',
213+
granularity: 'year',
214+
dateRange: ['2020-01-01', '2020-12-31'],
215+
}, {
216+
dimension: 'visitors.createdAt',
217+
granularity: 'fiscal_quarter_no_offset',
218+
dateRange: ['2020-01-01', '2020-12-31'],
219+
}, {
220+
dimension: 'visitors.createdAt',
221+
dateRange: ['2020-01-01', '2020-12-31'],
222+
}],
223+
order: [{ id: 'visitors.createdAt', desc: false }],
224+
timezone: 'America/Los_Angeles'
225+
});
226+
227+
queryAndParams = query.buildSqlAndParams();
228+
expect(queryAndParams[0]).toContain('ORDER BY 2 ASC');
229+
});
230+
231+
it('multi granularity ordered by specified granularity', async () => {
232+
await compiler.compile();
233+
234+
let query = new PostgresQuery({ joinGraph, cubeEvaluator, compiler }, {
235+
measures: [
236+
'visitors.count'
237+
],
238+
timeDimensions: [{
239+
dimension: 'visitors.createdAt',
240+
granularity: 'month',
241+
dateRange: ['2020-01-01', '2020-12-31'],
242+
}, {
243+
dimension: 'visitors.createdAt',
244+
granularity: 'week',
245+
dateRange: ['2020-01-01', '2020-12-31'],
246+
}, {
247+
dimension: 'visitors.createdAt',
248+
dateRange: ['2020-01-01', '2020-12-31'],
249+
}],
250+
order: [{ id: 'visitors.createdAt.week', desc: false }],
251+
timezone: 'America/Los_Angeles'
252+
});
253+
254+
let queryAndParams = query.buildSqlAndParams();
255+
expect(queryAndParams[0]).toContain('ORDER BY 2 ASC');
256+
257+
query = new PostgresQuery({ joinGraph, cubeEvaluator, compiler }, {
258+
measures: [
259+
'visitors.count'
260+
],
261+
timeDimensions: [{
262+
dimension: 'visitors.createdAt',
263+
granularity: 'month',
264+
dateRange: ['2020-01-01', '2020-12-31'],
265+
}, {
266+
dimension: 'visitors.createdAt',
267+
granularity: 'week',
268+
dateRange: ['2020-01-01', '2020-12-31'],
269+
}, {
270+
dimension: 'visitors.createdAt',
271+
dateRange: ['2020-01-01', '2020-12-31'],
272+
}],
273+
order: [{ id: 'visitors.createdAt.month', desc: false }],
274+
timezone: 'America/Los_Angeles'
275+
});
276+
277+
queryAndParams = query.buildSqlAndParams();
278+
expect(queryAndParams[0]).toContain('ORDER BY 1 ASC');
279+
280+
query = new PostgresQuery({ joinGraph, cubeEvaluator, compiler }, {
281+
measures: [
282+
'visitors.count'
283+
],
284+
timeDimensions: [{
285+
dimension: 'visitors.createdAt',
286+
granularity: 'week',
287+
dateRange: ['2020-01-01', '2020-12-31'],
288+
}, {
289+
dimension: 'visitors.createdAt',
290+
granularity: 'month',
291+
dateRange: ['2020-01-01', '2020-12-31'],
292+
}, {
293+
dimension: 'visitors.createdAt',
294+
dateRange: ['2020-01-01', '2020-12-31'],
295+
}],
296+
order: [{ id: 'visitors.createdAt.month', desc: false }],
297+
timezone: 'America/Los_Angeles'
298+
});
299+
300+
queryAndParams = query.buildSqlAndParams();
301+
expect(queryAndParams[0]).toContain('ORDER BY 2 ASC');
302+
303+
query = new PostgresQuery({ joinGraph, cubeEvaluator, compiler }, {
304+
measures: [
305+
'visitors.count'
306+
],
307+
timeDimensions: [{
308+
dimension: 'visitors.createdAt',
309+
granularity: 'week',
310+
dateRange: ['2020-01-01', '2020-12-31'],
311+
}, {
312+
dimension: 'visitors.createdAt',
313+
granularity: 'month',
314+
dateRange: ['2020-01-01', '2020-12-31'],
315+
}, {
316+
dimension: 'visitors.createdAt',
317+
granularity: 'fiscal_quarter_no_offset',
318+
dateRange: ['2020-01-01', '2020-12-31'],
319+
}, {
320+
dimension: 'visitors.createdAt',
321+
dateRange: ['2020-01-01', '2020-12-31'],
322+
}],
323+
order: [{ id: 'visitors.createdAt.fiscal_quarter_no_offset', desc: false }],
324+
timezone: 'America/Los_Angeles'
325+
});
326+
327+
queryAndParams = query.buildSqlAndParams();
328+
expect(queryAndParams[0]).toContain('ORDER BY 3 ASC');
329+
});
330+
});
145331
});

0 commit comments

Comments
 (0)