From 079f64d7e007c1832211f6f4271a1d0314e15412 Mon Sep 17 00:00:00 2001 From: Konstantin Burkalev Date: Mon, 9 Sep 2024 14:01:26 +0300 Subject: [PATCH] =?UTF-8?q?Add=20tests=20for=C2=A0proxying=20predefined=20?= =?UTF-8?q?granularities?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../test/unit/base-query.test.ts | 48 ++++++++++++++++++- .../cubejs-schema-compiler/test/unit/utils.ts | 10 ++++ 2 files changed, 56 insertions(+), 2 deletions(-) diff --git a/packages/cubejs-schema-compiler/test/unit/base-query.test.ts b/packages/cubejs-schema-compiler/test/unit/base-query.test.ts index 33d4ed3650946..979ab100c4128 100644 --- a/packages/cubejs-schema-compiler/test/unit/base-query.test.ts +++ b/packages/cubejs-schema-compiler/test/unit/base-query.test.ts @@ -313,6 +313,44 @@ describe('SQL Generation', () => { filters: [], timezone: 'Europe/Kyiv' }, + { + measures: [ + 'orders.count' + ], + timeDimensions: [ + { + dimension: 'orders.createdAt', + dateRange: [ + '2020-01-01', + '2021-12-31' + ] + } + ], + dimensions: [ + 'orders.createdAtPredefinedYear' + ], + filters: [], + timezone: 'Europe/Kyiv' + }, + { + measures: [ + 'orders.count' + ], + timeDimensions: [ + { + dimension: 'orders.createdAt', + dateRange: [ + '2020-01-01', + '2021-12-31' + ] + } + ], + dimensions: [ + 'orders.createdAtPredefinedQuarter' + ], + filters: [], + timezone: 'Europe/Kyiv' + }, ]; it('Test time series with different granularities', async () => { @@ -375,8 +413,14 @@ describe('SQL Generation', () => { const queryString = queryAndParams[0]; console.log('Generated query: ', queryString); - expect(queryString.includes('INTERVAL \'6 months\'')).toBeTruthy(); - expect(queryString.includes('count("orders".id')).toBeTruthy(); + if (q.dimensions[0].includes('PredefinedYear')) { + expect(queryString.includes('date_trunc(\'year\'')).toBeTruthy(); + } else if (q.dimensions[0].includes('PredefinedQuarter')) { + expect(queryString.includes('date_trunc(\'quarter\'')).toBeTruthy(); + } else { + expect(queryString.includes('INTERVAL \'6 months\'')).toBeTruthy(); + expect(queryString.includes('count("orders".id')).toBeTruthy(); + } }); }); }); diff --git a/packages/cubejs-schema-compiler/test/unit/utils.ts b/packages/cubejs-schema-compiler/test/unit/utils.ts index 9b77d34c8b333..9aa4018c2f257 100644 --- a/packages/cubejs-schema-compiler/test/unit/utils.ts +++ b/packages/cubejs-schema-compiler/test/unit/utils.ts @@ -103,6 +103,16 @@ export function createCubeSchemaWithCustomGranularities(name: string): string { } } }, + createdAtPredefinedYear: { + public: true, + sql: \`\${createdAt.year}\`, + type: 'string', + }, + createdAtPredefinedQuarter: { + public: true, + sql: \`\${createdAt.quarter}\`, + type: 'string', + }, createdAtHalfYear: { public: true, sql: \`\${createdAt.half_year}\`,