Skip to content

Commit b98b0b7

Browse files
committed
more tests for folders
1 parent 80d5122 commit b98b0b7

File tree

3 files changed

+221
-0
lines changed

3 files changed

+221
-0
lines changed
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
cubes:
2+
- name: orders
3+
sql: SELECT * FROM orders
4+
joins:
5+
- name: users
6+
sql: "{CUBE}.order_id = {orders}.id"
7+
relationship: many_to_one
8+
measures:
9+
- name: count
10+
sql: id
11+
type: count
12+
dimensions:
13+
- name: id
14+
sql: id
15+
type: number
16+
primary_key: true
17+
18+
- name: number
19+
sql: number
20+
type: number
21+
22+
- name: status
23+
sql: status
24+
type: string
25+
hierarchies:
26+
- name: orders_hierarchy
27+
levels:
28+
- "{CUBE}.status"
29+
- number
30+
- users.city
31+
- name: some_other_hierarchy
32+
title: Some other hierarchy
33+
levels:
34+
- users.state
35+
- users.city
36+
#
37+
- name: users
38+
sql: SELECT * FROM users
39+
hierarchies:
40+
- name: users_hierarchy
41+
levels:
42+
- users.age
43+
- city
44+
dimensions:
45+
- name: age
46+
sql: age
47+
type: number
48+
- name: state
49+
sql: state
50+
type: string
51+
- name: city
52+
sql: city
53+
type: string
54+
- name: gender
55+
sql: gender
56+
type: string
57+
58+
views:
59+
- name: test_view
60+
cubes:
61+
- join_path: orders
62+
includes: "*"
63+
- join_path: users
64+
includes:
65+
- age
66+
- state
67+
- name: gender
68+
alias: renamed_gender
69+
folders:
70+
- name: folder1
71+
includes:
72+
- age
73+
- renamed_gender
74+
- users.age
75+
- name: folder2
76+
includes: '*'
77+
- name: test_view2
78+
cubes:
79+
- join_path: orders
80+
alias: renamed_orders
81+
prefix: true
82+
includes: "*"
83+
- join_path: users
84+
prefix: true
85+
includes:
86+
- age
87+
- state
88+
folders:
89+
- name: folder1
90+
includes:
91+
- users_age
92+
- users_state
93+
- renamed_orders_status
94+
# - name: empty_view
95+
# cubes:
96+
# - join_path: orders
97+
# includes:
98+
# - count
99+
# - status
100+
101+
102+
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
cubes:
2+
- name: orders
3+
sql: SELECT * FROM orders
4+
joins:
5+
- name: users
6+
sql: "{CUBE}.order_id = {orders}.id"
7+
relationship: many_to_one
8+
measures:
9+
- name: count
10+
sql: id
11+
type: count
12+
dimensions:
13+
- name: id
14+
sql: id
15+
type: number
16+
primary_key: true
17+
18+
- name: number
19+
sql: number
20+
type: number
21+
22+
- name: status
23+
sql: status
24+
type: string
25+
hierarchies:
26+
- name: orders_hierarchy
27+
levels:
28+
- "{CUBE}.status"
29+
- number
30+
- users.city
31+
- name: some_other_hierarchy
32+
title: Some other hierarchy
33+
levels:
34+
- users.state
35+
- users.city
36+
#
37+
- name: users
38+
sql: SELECT * FROM users
39+
hierarchies:
40+
- name: users_hierarchy
41+
levels:
42+
- users.age
43+
- city
44+
dimensions:
45+
- name: age
46+
sql: age
47+
type: number
48+
- name: state
49+
sql: state
50+
type: string
51+
- name: city
52+
sql: city
53+
type: string
54+
- name: gender
55+
sql: gender
56+
type: string
57+
58+
views:
59+
- name: test_view
60+
cubes:
61+
- join_path: orders
62+
includes: "*"
63+
- join_path: users
64+
includes:
65+
- age
66+
- state
67+
- name: gender
68+
alias: renamed_gender
69+
folders:
70+
- name: folder1
71+
includes:
72+
- age
73+
- renamed_gender
74+
- non-existent
75+
- name: folder2
76+
includes: '*'
77+
- name: test_view2
78+
cubes:
79+
- join_path: orders
80+
alias: renamed_orders
81+
prefix: true
82+
includes: "*"
83+
- join_path: users
84+
prefix: true
85+
includes:
86+
- age
87+
- state
88+
folders:
89+
- name: folder1
90+
includes:
91+
- users_age
92+
- users_state
93+
- renamed_orders_status
94+
# - name: empty_view
95+
# cubes:
96+
# - join_path: orders
97+
# includes:
98+
# - count
99+
# - status
100+
101+
102+

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

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,23 @@ describe('Cube Folders', () => {
4343
);
4444
});
4545

46+
it('throws errors for folder members with path', async () => {
47+
const modelContent = fs.readFileSync(
48+
path.join(process.cwd(), '/test/unit/fixtures/folders_invalid_path.yml'),
49+
'utf8'
50+
);
51+
// eslint-disable-next-line @typescript-eslint/no-shadow
52+
const { compiler } = prepareYamlCompiler(modelContent);
53+
54+
try {
55+
await compiler.compile();
56+
throw new Error('should throw earlier');
57+
} catch (e: any) {
58+
expect(e.toString()).toMatch(/Paths aren't allowed in the 'folders' but 'users.age' has been provided for test_view/);
59+
expect(e.toString()).toMatch(/Member 'users.age' included in folder 'folder1' not found/);
60+
}
61+
});
62+
4663
it('a folder with aliased and prefixed cubes', async () => {
4764
const view = metaTransformer.cubes.find(
4865
(it) => it.config.name === 'test_view2'

0 commit comments

Comments
 (0)