-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathmeta.test.ts
More file actions
101 lines (81 loc) · 4.21 KB
/
meta.test.ts
File metadata and controls
101 lines (81 loc) · 4.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
import test from 'ava';
import { createColumn } from './column.js';
import { addCQIDsColumns, cqIDColumn, cqParentIDColumn, parentCqUUIDResolver } from './meta.js';
import { Resource } from './resource.js';
import { createTable } from './table.js';
test('addCQIDsColumns', (t) => {
const table = createTable({
name: 'table1',
columns: [
createColumn({ name: 'column1', primaryKey: true }),
createColumn({ name: 'column2' }),
createColumn({ name: 'column3' }),
createColumn({ name: 'column4' }),
],
relations: [
createTable({
name: 'table1-child1',
columns: [createColumn({ name: 'column1' }), createColumn({ name: 'column2' })],
}),
createTable({ name: 'table1-child2', columns: [createColumn({ name: 'column1' })] }),
createTable({ name: 'table1-child3', columns: [createColumn({ name: 'column1' })] }),
createTable({
name: 'table1-child4',
columns: [createColumn({ name: 'column1' })],
relations: [
createTable({
name: 'table1-child4-child1',
columns: [
createColumn({ name: 'column1' }),
createColumn({ name: 'column2' }),
createColumn({ name: 'column3', primaryKey: true }),
],
}),
],
}),
],
});
const tableWithCQIDs = addCQIDsColumns(table);
t.is(tableWithCQIDs.columns.length, 6);
t.deepEqual(tableWithCQIDs.columns[0], { ...cqIDColumn, primaryKey: false });
t.deepEqual(tableWithCQIDs.columns[1], cqParentIDColumn);
t.is(tableWithCQIDs.relations[0].columns.length, 4);
t.deepEqual(tableWithCQIDs.relations[0].columns[0], { ...cqIDColumn, primaryKey: true });
t.deepEqual(tableWithCQIDs.relations[0].columns[1], cqParentIDColumn);
t.is(tableWithCQIDs.relations[1].columns.length, 3);
t.deepEqual(tableWithCQIDs.relations[1].columns[0], { ...cqIDColumn, primaryKey: true });
t.deepEqual(tableWithCQIDs.relations[1].columns[1], cqParentIDColumn);
t.is(tableWithCQIDs.relations[2].columns.length, 3);
t.deepEqual(tableWithCQIDs.relations[2].columns[0], { ...cqIDColumn, primaryKey: true });
t.deepEqual(tableWithCQIDs.relations[2].columns[1], cqParentIDColumn);
t.is(tableWithCQIDs.relations[3].columns.length, 3);
t.deepEqual(tableWithCQIDs.relations[3].columns[0], { ...cqIDColumn, primaryKey: true });
t.deepEqual(tableWithCQIDs.relations[3].columns[1], cqParentIDColumn);
t.is(tableWithCQIDs.relations[3].relations[0].columns.length, 5);
t.deepEqual(tableWithCQIDs.relations[3].relations[0].columns[0], { ...cqIDColumn, primaryKey: false });
t.deepEqual(tableWithCQIDs.relations[3].relations[0].columns[1], cqParentIDColumn);
});
test('parentCqUUIDResolver - should set to null for null parent', (t) => {
const table = addCQIDsColumns(createTable({ name: 'table1' }));
const resource = new Resource(table, null, null);
parentCqUUIDResolver()({ id: () => '' }, resource, cqParentIDColumn);
t.is(resource.getColumnData(cqParentIDColumn.name).valid, false);
});
test('parentCqUUIDResolver - should set to null for parent with _cq_id column', (t) => {
const table = addCQIDsColumns(createTable({ name: 'table1', relations: [createTable({ name: 'table1-child1' })] }));
const parentResource = new Resource(table, null, null);
parentResource.setColumData(cqIDColumn.name, null);
const childResource = new Resource(table.relations[0], parentResource, null);
parentCqUUIDResolver()({ id: () => '' }, childResource, cqParentIDColumn);
t.is(childResource.getColumnData(cqParentIDColumn.name).valid, false);
});
test('parentCqUUIDResolver - should set to _cq_id column value when parent has it', (t) => {
const table = addCQIDsColumns(createTable({ name: 'table1', relations: [createTable({ name: 'table1-child1' })] }));
const parentResource = new Resource(table, null, null);
parentResource.setColumData(cqIDColumn.name, '9241a9cb-f580-420f-8fd7-46d2c4f55ccb');
const childResource = new Resource(table.relations[0], parentResource, null);
parentCqUUIDResolver()({ id: () => '' }, childResource, cqParentIDColumn);
const cqParentId = childResource.getColumnData(cqParentIDColumn.name);
t.is(cqParentId.valid, true);
t.is(cqParentId.toString(), '9241a9cb-f580-420f-8fd7-46d2c4f55ccb');
});