Skip to content

Commit 05bd69c

Browse files
committed
chore(schema-compiler): add tests for FILTER_PARAMS propagation
1 parent 30140c6 commit 05bd69c

File tree

1 file changed

+44
-18
lines changed

1 file changed

+44
-18
lines changed

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

Lines changed: 44 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -660,21 +660,30 @@ describe('SQL Generation', () => {
660660
/** @type {Compilers} */
661661
const compilers = prepareYamlCompiler(
662662
createSchemaYaml({
663-
cubes: [
664-
{
665-
name: 'Order',
666-
sql: 'select * from order where {FILTER_PARAMS.Order.type.filter(\'type\')}',
667-
measures: [{
668-
name: 'count',
669-
type: 'count',
670-
}],
671-
dimensions: [{
672-
name: 'type',
673-
sql: 'type',
674-
type: 'string'
675-
}]
676-
},
677-
]
663+
cubes: [{
664+
name: 'Order',
665+
sql: 'select * from order where {FILTER_PARAMS.Order.type.filter(\'type\')}',
666+
measures: [{
667+
name: 'count',
668+
type: 'count',
669+
}],
670+
dimensions: [{
671+
name: 'type',
672+
sql: 'type',
673+
type: 'string'
674+
}]
675+
}],
676+
views: [{
677+
name: 'orders_view',
678+
cubes: [{
679+
join_path: 'Order',
680+
prefix: true,
681+
includes: [
682+
'type',
683+
'count',
684+
]
685+
}]
686+
}]
678687
})
679688
);
680689

@@ -829,6 +838,23 @@ describe('SQL Generation', () => {
829838
const cubeSQL = query.cubeSql('Order');
830839
expect(cubeSQL).toMatch(/\(\s*\(.*type\s*=\s*\$\d\$.*OR.*type\s*=\s*\$\d\$.*\)\s*AND\s*\(.*type\s*=\s*\$\d\$.*OR.*type\s*=\s*\$\d\$.*\)\s*\)/);
831840
});
841+
842+
it('propagate filter params from view into cube\'s query', async () => {
843+
await compilers.compiler.compile();
844+
const query = new BaseQuery(compilers, {
845+
measures: ['orders_view.Order_count'],
846+
filters: [
847+
{
848+
member: 'orders_view.Order_type',
849+
operator: 'equals',
850+
values: ['online'],
851+
},
852+
],
853+
});
854+
const cubeSQL = query.cubeSql('Order');
855+
console.log('TEST: ', cubeSQL);
856+
expect(cubeSQL).toContain('select * from order where ((type = $0$))');
857+
});
832858
});
833859
});
834860

@@ -866,13 +892,13 @@ describe('Class unit tests', () => {
866892
expect(baseQuery.aliasName('CamelCaseCube.id', false)).toEqual('camel_case_cube__id');
867893
expect(baseQuery.aliasName('CamelCaseCube.description', false)).toEqual('camel_case_cube__description');
868894
expect(baseQuery.aliasName('CamelCaseCube.grant_total', false)).toEqual('camel_case_cube__grant_total');
869-
895+
870896
// aliasName for pre-agg
871897
expect(baseQuery.aliasName('CamelCaseCube', true)).toEqual('camel_case_cube');
872898
expect(baseQuery.aliasName('CamelCaseCube.id', true)).toEqual('camel_case_cube_id');
873899
expect(baseQuery.aliasName('CamelCaseCube.description', true)).toEqual('camel_case_cube_description');
874900
expect(baseQuery.aliasName('CamelCaseCube.grant_total', true)).toEqual('camel_case_cube_grant_total');
875-
901+
876902
// cubeAlias
877903
expect(baseQuery.cubeAlias('CamelCaseCube')).toEqual('"camel_case_cube"');
878904
expect(baseQuery.cubeAlias('CamelCaseCube.id')).toEqual('"camel_case_cube__id"');
@@ -914,7 +940,7 @@ describe('Class unit tests', () => {
914940
expect(baseQuery.aliasName('CamelCaseCube.id', false)).toEqual('t1__id');
915941
expect(baseQuery.aliasName('CamelCaseCube.description', false)).toEqual('t1__description');
916942
expect(baseQuery.aliasName('CamelCaseCube.grant_total', false)).toEqual('t1__grant_total');
917-
943+
918944
// aliasName for pre-agg
919945
expect(baseQuery.aliasName('CamelCaseCube', true)).toEqual('t1');
920946
expect(baseQuery.aliasName('CamelCaseCube.id', true)).toEqual('t1_id');

0 commit comments

Comments
 (0)