@@ -5,6 +5,7 @@ import babelTraverse from '@babel/traverse';
55import { prepareJsCompiler } from './PrepareCompiler' ;
66import { ImportExportTranspiler } from '../../src/compiler/transpilers' ;
77import { ErrorReporter } from '../../src/compiler/ErrorReporter' ;
8+ import { PostgresQuery } from '../../src' ;
89
910describe ( 'Transpilers' , ( ) => {
1011 it ( 'CubeCheckDuplicatePropTranspiler' , async ( ) => {
@@ -50,6 +51,66 @@ describe('Transpilers', () => {
5051 await compiler . compile ( ) ;
5152 } ) ;
5253
54+ it ( 'CubePropContextTranspiler without userAttributes should work normally' , async ( ) => {
55+ const { joinGraph, cubeEvaluator, compiler } = prepareJsCompiler ( `
56+ cube(\`Test\`, {
57+ sql: 'SELECT * FROM users',
58+ dimensions: {
59+ userId: {
60+ sql: \`CASE WHEN userId = '\${securityContext.userId}' THEN id ELSE 0 END\`,
61+ type: 'string'
62+ }
63+ }
64+ })
65+ ` ) ;
66+
67+ await compiler . compile ( ) ;
68+
69+ const query = new PostgresQuery ( { joinGraph, cubeEvaluator, compiler } , {
70+ dimensions : [ 'Test.userId' ] ,
71+ timeDimensions : [ ] ,
72+ timezone : 'America/Los_Angeles' ,
73+ contextSymbols : {
74+ securityContext : { userId : 'user123' }
75+ }
76+ } ) ;
77+
78+ const [ res ] = query . buildSqlAndParams ( ) ;
79+ console . log ( res ) ;
80+
81+ expect ( res ) . toContain ( 'CASE WHEN userId = \'user123\' THEN id ELSE 0 END' ) ;
82+ } ) ;
83+
84+ it ( 'CubePropContextTranspiler with shorthand userAttributes should work normally' , async ( ) => {
85+ const { joinGraph, cubeEvaluator, compiler } = prepareJsCompiler ( `
86+ cube(\`Test\`, {
87+ sql: 'SELECT * FROM users',
88+ dimensions: {
89+ userId: {
90+ sql: \`CASE WHEN userId = '\${userAttributes.userId}' THEN id ELSE 0 END\`,
91+ type: 'string'
92+ }
93+ }
94+ })
95+ ` ) ;
96+
97+ await compiler . compile ( ) ;
98+
99+ const query = new PostgresQuery ( { joinGraph, cubeEvaluator, compiler } , {
100+ dimensions : [ 'Test.userId' ] ,
101+ timeDimensions : [ ] ,
102+ timezone : 'America/Los_Angeles' ,
103+ contextSymbols : {
104+ securityContext : { cubeCloud : { userAttributes : { userId : 'user123' } } }
105+ }
106+ } ) ;
107+
108+ const [ res ] = query . buildSqlAndParams ( ) ;
109+ console . log ( res ) ;
110+
111+ expect ( res ) . toContain ( 'CASE WHEN userId = \'user123\' THEN id ELSE 0 END' ) ;
112+ } ) ;
113+
53114 it ( 'ImportExportTranspiler' , async ( ) => {
54115 const ieTranspiler = new ImportExportTranspiler ( ) ;
55116 const errorsReport = new ErrorReporter ( ) ;
0 commit comments