Skip to content

Commit 44b400c

Browse files
committed
add tests for CubePropContextTranspiler with userAttributes
1 parent ebb4426 commit 44b400c

File tree

1 file changed

+61
-0
lines changed

1 file changed

+61
-0
lines changed

packages/cubejs-schema-compiler/test/unit/transpilers.test.ts

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import babelTraverse from '@babel/traverse';
55
import { prepareJsCompiler } from './PrepareCompiler';
66
import { ImportExportTranspiler } from '../../src/compiler/transpilers';
77
import { ErrorReporter } from '../../src/compiler/ErrorReporter';
8+
import { PostgresQuery } from '../../src';
89

910
describe('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

Comments
 (0)