Skip to content

Commit ee3b39c

Browse files
committed
add tests
1 parent 904ded9 commit ee3b39c

File tree

4 files changed

+61
-0
lines changed

4 files changed

+61
-0
lines changed

packages/cubejs-schema-compiler/test/unit/__snapshots__/schema.test.ts.snap

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1816,6 +1816,7 @@ Array [
18161816
},
18171817
],
18181818
"name": "folder1",
1819+
"type": "folder",
18191820
},
18201821
Object {
18211822
"includes": Array [
@@ -1831,6 +1832,7 @@ Array [
18311832
},
18321833
],
18331834
"name": "folder2",
1835+
"type": "folder",
18341836
},
18351837
]
18361838
`;

packages/cubejs-schema-compiler/test/unit/fixtures/folders.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,17 @@ views:
105105
includes:
106106
- users_city
107107
- users_renamed_in_view3_gender
108+
- name: test_view4
109+
extends: test_view3
110+
folders:
111+
- name: folder3
112+
includes:
113+
- users_city
114+
- name: inner folder 4
115+
includes:
116+
- renamed_orders_status
117+
- name: inner folder 5
118+
includes: "*"
108119

109120
# - name: empty_view
110121
# cubes:

packages/cubejs-schema-compiler/test/unit/fixtures/folders_invalid_path.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,9 @@ views:
7272
- age
7373
- renamed_gender
7474
- users.age
75+
- name: inner folder
76+
includes:
77+
- users.renamed_gender
7578
- name: folder2
7679
includes: '*'
7780
- name: test_view2

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

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

46+
it('a nested folders with some * and named members', async () => {
47+
const testView = metaTransformer.cubes.find(
48+
(it) => it.config.name === 'test_view4'
49+
);
50+
51+
expect(testView.config.folders.length).toBe(3);
52+
53+
const folder1 = testView.config.folders.find(
54+
(it) => it.name === 'folder1'
55+
);
56+
expect(folder1.members).toEqual([
57+
'test_view4.users_age',
58+
'test_view4.users_state',
59+
'test_view4.renamed_orders_status',
60+
]);
61+
62+
const folder2 = testView.config.folders.find(
63+
(it) => it.name === 'folder2'
64+
);
65+
expect(folder2.members).toEqual(
66+
expect.arrayContaining(['test_view4.users_city', 'test_view4.users_renamed_in_view3_gender'])
67+
);
68+
69+
const folder3 = testView.config.folders.find(
70+
(it) => it.name === 'folder3'
71+
);
72+
expect(folder3.members.length).toBe(3);
73+
expect(folder3.members[1]).toEqual(
74+
{ name: 'inner folder 4', members: ['test_view4.renamed_orders_status'] }
75+
);
76+
expect(folder3.members[2].name).toEqual('inner folder 5');
77+
expect(folder3.members[2].members).toEqual([
78+
'test_view4.renamed_orders_count',
79+
'test_view4.renamed_orders_id',
80+
'test_view4.renamed_orders_number',
81+
'test_view4.renamed_orders_status',
82+
'test_view4.users_age',
83+
'test_view4.users_state',
84+
'test_view4.users_gender',
85+
'test_view4.users_city',
86+
'test_view4.users_renamed_in_view3_gender',
87+
]);
88+
});
89+
4690
it('folders from view extending other view', async () => {
4791
const view2 = metaTransformer.cubes.find(
4892
(it) => it.config.name === 'test_view2'
@@ -93,6 +137,7 @@ describe('Cube Folders', () => {
93137
throw new Error('should throw earlier');
94138
} catch (e: any) {
95139
expect(e.toString()).toMatch(/Paths aren't allowed in the 'folders' but 'users.age' has been provided for test_view/);
140+
expect(e.toString()).toMatch(/Paths aren't allowed in the 'folders' but 'users.renamed_gender' has been provided for test_view/);
96141
expect(e.toString()).toMatch(/Member 'users.age' included in folder 'folder1' not found/);
97142
}
98143
});

0 commit comments

Comments
 (0)