@proteinjs/db 1.19.0 → 1.20.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/dist/generated/index.js +1 -1
- package/dist/generated/index.js.map +1 -1
- package/dist/generated/test/index.d.ts +1 -1
- package/dist/generated/test/index.d.ts.map +1 -1
- package/dist/generated/test/index.js +52 -34
- package/dist/generated/test/index.js.map +1 -1
- package/dist/index.d.ts +0 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -6
- package/dist/index.js.map +1 -1
- package/dist/src/Db.d.ts +2 -2
- package/dist/src/Db.d.ts.map +1 -1
- package/dist/src/Db.js +6 -3
- package/dist/src/Db.js.map +1 -1
- package/dist/src/TableWatcherRunner.d.ts.map +1 -1
- package/dist/src/TableWatcherRunner.js +4 -1
- package/dist/src/TableWatcherRunner.js.map +1 -1
- package/dist/src/schema/TableManager.d.ts.map +1 -1
- package/dist/src/schema/TableManager.js +4 -1
- package/dist/src/schema/TableManager.js.map +1 -1
- package/dist/test/index.d.ts +13 -0
- package/dist/test/index.d.ts.map +1 -0
- package/dist/test/index.js +29 -0
- package/dist/test/index.js.map +1 -0
- package/dist/test/reusable/CascadeDeleteTests.d.ts +1 -189
- package/dist/test/reusable/CascadeDeleteTests.d.ts.map +1 -1
- package/dist/test/reusable/CascadeDeleteTests.js +36 -393
- package/dist/test/reusable/CascadeDeleteTests.js.map +1 -1
- package/dist/test/reusable/ColumnTypesTests.d.ts +1 -52
- package/dist/test/reusable/ColumnTypesTests.d.ts.map +1 -1
- package/dist/test/reusable/ColumnTypesTests.js +20 -86
- package/dist/test/reusable/ColumnTypesTests.js.map +1 -1
- package/dist/test/reusable/CrudTests.d.ts +1 -50
- package/dist/test/reusable/CrudTests.d.ts.map +1 -1
- package/dist/test/reusable/CrudTests.js +37 -126
- package/dist/test/reusable/CrudTests.js.map +1 -1
- package/dist/test/reusable/DynamicReferenceColumnTests.d.ts +3 -0
- package/dist/test/reusable/DynamicReferenceColumnTests.d.ts.map +1 -0
- package/dist/test/reusable/DynamicReferenceColumnTests.js +429 -0
- package/dist/test/reusable/DynamicReferenceColumnTests.js.map +1 -0
- package/dist/test/reusable/TableManagerTests.d.ts +1 -2
- package/dist/test/reusable/TableManagerTests.d.ts.map +1 -1
- package/dist/test/reusable/TableManagerTests.js +57 -152
- package/dist/test/reusable/TableManagerTests.js.map +1 -1
- package/dist/test/reusable/TransactionTests.d.ts +1 -51
- package/dist/test/reusable/TransactionTests.d.ts.map +1 -1
- package/dist/test/reusable/TransactionTests.js +24 -111
- package/dist/test/reusable/TransactionTests.js.map +1 -1
- package/dist/test/util/DbTestEnvironment.d.ts +12 -0
- package/dist/test/util/DbTestEnvironment.d.ts.map +1 -0
- package/dist/test/util/DbTestEnvironment.js +125 -0
- package/dist/test/util/DbTestEnvironment.js.map +1 -0
- package/dist/test/util/tables/cascadeDeleteTestTables.d.ts +191 -0
- package/dist/test/util/tables/cascadeDeleteTestTables.d.ts.map +1 -0
- package/dist/test/util/tables/cascadeDeleteTestTables.js +234 -0
- package/dist/test/util/tables/cascadeDeleteTestTables.js.map +1 -0
- package/dist/test/util/tables/columnTypesTestTables.d.ts +47 -0
- package/dist/test/util/tables/columnTypesTestTables.d.ts.map +1 -0
- package/dist/test/util/tables/columnTypesTestTables.js +49 -0
- package/dist/test/util/tables/columnTypesTestTables.js.map +1 -0
- package/dist/test/util/tables/crudTestTables.d.ts +48 -0
- package/dist/test/util/tables/crudTestTables.d.ts.map +1 -0
- package/dist/test/util/tables/crudTestTables.js +58 -0
- package/dist/test/util/tables/crudTestTables.js.map +1 -0
- package/dist/test/util/tables/dynamicReferenceColumnTestTables.d.ts +76 -0
- package/dist/test/util/tables/dynamicReferenceColumnTestTables.d.ts.map +1 -0
- package/dist/test/util/tables/dynamicReferenceColumnTestTables.js +131 -0
- package/dist/test/util/tables/dynamicReferenceColumnTestTables.js.map +1 -0
- package/dist/test/util/tables/tableManagerTestTables.d.ts +86 -0
- package/dist/test/util/tables/tableManagerTestTables.d.ts.map +1 -0
- package/dist/test/util/tables/tableManagerTestTables.js +131 -0
- package/dist/test/util/tables/tableManagerTestTables.js.map +1 -0
- package/dist/test/util/tables/transactionTestTables.d.ts +48 -0
- package/dist/test/util/tables/transactionTestTables.d.ts.map +1 -0
- package/dist/test/util/tables/transactionTestTables.js +58 -0
- package/dist/test/util/tables/transactionTestTables.js.map +1 -0
- package/generated/index.ts +18 -15
- package/generated/test/index.ts +67 -46
- package/index.ts +0 -7
- package/package.json +29 -17
- package/src/Db.ts +8 -3
- package/src/TableWatcherRunner.ts +4 -1
- package/src/schema/TableManager.ts +4 -1
- package/test/index.ts +13 -0
- package/test/reusable/CascadeDeleteTests.ts +38 -320
- package/test/reusable/ColumnTypesTests.ts +9 -85
- package/test/reusable/CrudTests.ts +26 -97
- package/test/reusable/DynamicReferenceColumnTests.ts +342 -0
- package/test/reusable/TableManagerTests.ts +18 -97
- package/test/reusable/TransactionTests.ts +26 -93
- package/test/util/DbTestEnvironment.ts +46 -0
- package/test/util/tables/cascadeDeleteTestTables.ts +232 -0
- package/test/util/tables/columnTypesTestTables.ts +63 -0
- package/test/util/tables/crudTestTables.ts +44 -0
- package/test/util/tables/dynamicReferenceColumnTestTables.ts +87 -0
- package/test/util/tables/tableManagerTestTables.ts +98 -0
- package/test/util/tables/transactionTestTables.ts +44 -0
- package/tsconfig.json +7 -1
- package/LICENSE +0 -21
- package/dist/test/reusable/DynamicReferenceColumn.d.ts +0 -77
- package/dist/test/reusable/DynamicReferenceColumn.d.ts.map +0 -1
- package/dist/test/reusable/DynamicReferenceColumn.js +0 -656
- package/dist/test/reusable/DynamicReferenceColumn.js.map +0 -1
- package/test/reusable/DynamicReferenceColumn.ts +0 -487
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DynamicReferenceColumn.js","sourceRoot":"","sources":["../../../test/reusable/DynamicReferenceColumn.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,487 +0,0 @@
|
|
|
1
|
-
import { DynamicReferenceColumn, StringColumn, DynamicReferenceTableNameColumn } from '../../src/Columns';
|
|
2
|
-
import { Db, DbDriver } from '../../src/Db';
|
|
3
|
-
import { Reference } from '../../src/reference/Reference';
|
|
4
|
-
import { Table } from '../../src/Table';
|
|
5
|
-
import { withRecordColumns, Record } from '../../src/Record';
|
|
6
|
-
import { QueryBuilder } from '@proteinjs/db-query';
|
|
7
|
-
|
|
8
|
-
interface ProjectAssignment extends Record {
|
|
9
|
-
projectName: string;
|
|
10
|
-
employeeTableName?: string | null;
|
|
11
|
-
employeeRef?: Reference<Engineer | Designer | ProjectManager> | null;
|
|
12
|
-
projectLeadTableName?: string | null;
|
|
13
|
-
projectLeadRef?: Reference<Engineer | Designer | ProjectManager> | null;
|
|
14
|
-
startDate: string;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
interface Engineer extends Record {
|
|
18
|
-
name: string;
|
|
19
|
-
yearsOfExperience: number;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
interface Designer extends Record {
|
|
23
|
-
name: string;
|
|
24
|
-
specialization: string;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
interface ProjectManager extends Record {
|
|
28
|
-
name: string;
|
|
29
|
-
certificate: string;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
class ProjectAssignmentTable extends Table<ProjectAssignment> {
|
|
33
|
-
name = 'db_test_project_assignments';
|
|
34
|
-
columns = withRecordColumns<ProjectAssignment>({
|
|
35
|
-
projectName: new StringColumn('project_name'),
|
|
36
|
-
employeeTableName: new DynamicReferenceTableNameColumn('employee_table_name', 'employee_ref'),
|
|
37
|
-
employeeRef: new DynamicReferenceColumn<Engineer | Designer | ProjectManager>(
|
|
38
|
-
'employee_ref',
|
|
39
|
-
'employee_table_name',
|
|
40
|
-
true // Enable cascade delete for testing
|
|
41
|
-
),
|
|
42
|
-
projectLeadTableName: new DynamicReferenceTableNameColumn('project_lead_table_name', 'project_lead_ref', {
|
|
43
|
-
defaultValue: async () => 'TEST_DEFAULT_VALUE',
|
|
44
|
-
updateValue: async () => 'TEST_UPDATE_VALUE',
|
|
45
|
-
}),
|
|
46
|
-
projectLeadRef: new DynamicReferenceColumn<Engineer | Designer | ProjectManager>(
|
|
47
|
-
'project_lead_ref',
|
|
48
|
-
'project_lead_table_name',
|
|
49
|
-
true // Enable cascade delete for testing
|
|
50
|
-
),
|
|
51
|
-
startDate: new StringColumn('start_date'),
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
class EngineerTable extends Table<Engineer> {
|
|
56
|
-
name = 'db_test_engineers';
|
|
57
|
-
columns = withRecordColumns<Engineer>({
|
|
58
|
-
name: new StringColumn('name'),
|
|
59
|
-
yearsOfExperience: new StringColumn('years_of_experience'),
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
class DesignerTable extends Table<Designer> {
|
|
64
|
-
name = 'db_test_designers';
|
|
65
|
-
columns = withRecordColumns<Designer>({
|
|
66
|
-
name: new StringColumn('name'),
|
|
67
|
-
specialization: new StringColumn('specialization'),
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
class ProjectManagerTable extends Table<ProjectManager> {
|
|
72
|
-
name = 'db_test_project_managers';
|
|
73
|
-
columns = withRecordColumns<ProjectManager>({
|
|
74
|
-
name: new StringColumn('name'),
|
|
75
|
-
certificate: new StringColumn('certificate'),
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
// Invalid table with missing DynamicReferenceTableNameColumn
|
|
80
|
-
class InvalidTableMissingTableName extends Table<Record> {
|
|
81
|
-
name = 'db_test_invalid_missing_table_name';
|
|
82
|
-
columns = withRecordColumns<Record>({
|
|
83
|
-
// Only has DynamicReferenceColumn without its required table name column
|
|
84
|
-
employeeRef: new DynamicReferenceColumn<Engineer | Designer | ProjectManager>(
|
|
85
|
-
'employee_ref',
|
|
86
|
-
'employee_table_name', // References a non-existent column
|
|
87
|
-
true
|
|
88
|
-
),
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
// Invalid table with unused DynamicReferenceTableNameColumn
|
|
93
|
-
class InvalidTableUnusedTableName extends Table<Record> {
|
|
94
|
-
name = 'db_test_invalid_unused_table_name';
|
|
95
|
-
columns = withRecordColumns<Record>({
|
|
96
|
-
// Has DynamicReferenceTableNameColumn but no DynamicReferenceColumn using it
|
|
97
|
-
employeeTableName: new DynamicReferenceTableNameColumn('employee_table_name', 'employee_ref'),
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
/** Used for testing purposes only. */
|
|
102
|
-
export const getDynamicReferenceColumnTestTable = (tableName: string) => {
|
|
103
|
-
const projectAssignmentTable = new ProjectAssignmentTable();
|
|
104
|
-
const engineerTable = new EngineerTable();
|
|
105
|
-
const designerTable = new DesignerTable();
|
|
106
|
-
const projectManagerTable = new ProjectManagerTable();
|
|
107
|
-
|
|
108
|
-
switch (tableName) {
|
|
109
|
-
case projectAssignmentTable.name:
|
|
110
|
-
return projectAssignmentTable;
|
|
111
|
-
case engineerTable.name:
|
|
112
|
-
return engineerTable;
|
|
113
|
-
case designerTable.name:
|
|
114
|
-
return designerTable;
|
|
115
|
-
case projectManagerTable.name:
|
|
116
|
-
return projectManagerTable;
|
|
117
|
-
default:
|
|
118
|
-
throw new Error(`Cannot find test table: ${tableName}`);
|
|
119
|
-
}
|
|
120
|
-
};
|
|
121
|
-
|
|
122
|
-
// Test suite
|
|
123
|
-
export const dynamicReferenceColumnTests = (driver: DbDriver, dropTable: (table: Table<any>) => Promise<void>) => {
|
|
124
|
-
return () => {
|
|
125
|
-
let projectAssignmentTable: Table<ProjectAssignment>;
|
|
126
|
-
let engineerTable: Table<Engineer>;
|
|
127
|
-
let designerTable: Table<Designer>;
|
|
128
|
-
let projectManagerTable: Table<ProjectManager>;
|
|
129
|
-
const db = new Db(driver, getDynamicReferenceColumnTestTable);
|
|
130
|
-
|
|
131
|
-
beforeAll(async () => {
|
|
132
|
-
if (driver.start) {
|
|
133
|
-
await driver.start();
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
await driver.getTableManager().loadTable(new ProjectAssignmentTable());
|
|
137
|
-
await driver.getTableManager().loadTable(new EngineerTable());
|
|
138
|
-
await driver.getTableManager().loadTable(new DesignerTable());
|
|
139
|
-
await driver.getTableManager().loadTable(new ProjectManagerTable());
|
|
140
|
-
});
|
|
141
|
-
|
|
142
|
-
beforeEach(async () => {
|
|
143
|
-
await driver.getTableManager().loadTable(new ProjectAssignmentTable());
|
|
144
|
-
await driver.getTableManager().loadTable(new EngineerTable());
|
|
145
|
-
await driver.getTableManager().loadTable(new DesignerTable());
|
|
146
|
-
await driver.getTableManager().loadTable(new ProjectManagerTable());
|
|
147
|
-
|
|
148
|
-
projectAssignmentTable = new ProjectAssignmentTable();
|
|
149
|
-
engineerTable = new EngineerTable();
|
|
150
|
-
designerTable = new DesignerTable();
|
|
151
|
-
projectManagerTable = new ProjectManagerTable();
|
|
152
|
-
});
|
|
153
|
-
|
|
154
|
-
afterEach(async () => {
|
|
155
|
-
await dropTable(new ProjectAssignmentTable());
|
|
156
|
-
await dropTable(new EngineerTable());
|
|
157
|
-
await dropTable(new DesignerTable());
|
|
158
|
-
await dropTable(new ProjectManagerTable());
|
|
159
|
-
});
|
|
160
|
-
|
|
161
|
-
describe('TableManager validation', () => {
|
|
162
|
-
test('should throw error when DynamicReferenceTableNameColumn is missing', async () => {
|
|
163
|
-
const invalidTable = new InvalidTableMissingTableName();
|
|
164
|
-
|
|
165
|
-
await expect(async () => {
|
|
166
|
-
await driver.getTableManager().loadTable(invalidTable);
|
|
167
|
-
}).rejects.toThrow(/missing its required DynamicReferenceTableNameColumn 'employee_table_name'/);
|
|
168
|
-
});
|
|
169
|
-
|
|
170
|
-
test('should throw error when DynamicReferenceTableNameColumn is unused', async () => {
|
|
171
|
-
const invalidTable = new InvalidTableUnusedTableName();
|
|
172
|
-
|
|
173
|
-
await expect(async () => {
|
|
174
|
-
await driver.getTableManager().loadTable(invalidTable);
|
|
175
|
-
}).rejects.toThrow(
|
|
176
|
-
/has a DynamicReferenceTableNameColumn 'employee_table_name' but no DynamicReferenceColumn references it/
|
|
177
|
-
);
|
|
178
|
-
});
|
|
179
|
-
});
|
|
180
|
-
|
|
181
|
-
test('should handle references to different types', async () => {
|
|
182
|
-
// Create an engineer
|
|
183
|
-
const engineer = await db.insert(engineerTable, {
|
|
184
|
-
name: 'John Doe',
|
|
185
|
-
yearsOfExperience: 5,
|
|
186
|
-
});
|
|
187
|
-
|
|
188
|
-
// Create a designer
|
|
189
|
-
const designer = await db.insert(designerTable, {
|
|
190
|
-
name: 'Jane Smith',
|
|
191
|
-
specialization: 'UI/UX',
|
|
192
|
-
});
|
|
193
|
-
|
|
194
|
-
// Assign both to different projects
|
|
195
|
-
const engineerAssignment = await db.insert(projectAssignmentTable, {
|
|
196
|
-
projectName: 'Backend API',
|
|
197
|
-
employeeRef: new Reference(engineerTable.name, engineer.id),
|
|
198
|
-
startDate: '2024-01-01',
|
|
199
|
-
});
|
|
200
|
-
|
|
201
|
-
const designerAssignment = await db.insert(projectAssignmentTable, {
|
|
202
|
-
projectName: 'Website Redesign',
|
|
203
|
-
employeeRef: new Reference(designerTable.name, designer.id),
|
|
204
|
-
startDate: '2024-01-15',
|
|
205
|
-
});
|
|
206
|
-
|
|
207
|
-
// Verify engineer assignment
|
|
208
|
-
const fetchedEngineerAssignment = await db.get(projectAssignmentTable, { id: engineerAssignment.id });
|
|
209
|
-
expect(fetchedEngineerAssignment.employeeRef?._table).toBe(engineerTable.name);
|
|
210
|
-
expect(fetchedEngineerAssignment.employeeRef?._id).toBe(engineer.id);
|
|
211
|
-
expect(fetchedEngineerAssignment.employeeTableName).toBe(engineerTable.name);
|
|
212
|
-
|
|
213
|
-
// Verify designer assignment
|
|
214
|
-
const fetchedDesignerAssignment = await db.get(projectAssignmentTable, { id: designerAssignment.id });
|
|
215
|
-
expect(fetchedDesignerAssignment.employeeRef?._table).toBe(designerTable.name);
|
|
216
|
-
expect(fetchedDesignerAssignment.employeeRef?._id).toBe(designer.id);
|
|
217
|
-
expect(fetchedDesignerAssignment.employeeTableName).toBe(designerTable.name);
|
|
218
|
-
});
|
|
219
|
-
|
|
220
|
-
test('should cascade delete multiple types of records when references are deleted', async () => {
|
|
221
|
-
// Create employees
|
|
222
|
-
const engineer = await db.insert(engineerTable, {
|
|
223
|
-
name: 'John Doe',
|
|
224
|
-
yearsOfExperience: 5,
|
|
225
|
-
});
|
|
226
|
-
|
|
227
|
-
const projectManager = await db.insert(projectManagerTable, {
|
|
228
|
-
name: 'Alice Brown',
|
|
229
|
-
certificate: 'Scrum Master',
|
|
230
|
-
});
|
|
231
|
-
|
|
232
|
-
const designer = await db.insert(designerTable, {
|
|
233
|
-
name: 'Jane Smith',
|
|
234
|
-
specialization: 'UI/UX',
|
|
235
|
-
});
|
|
236
|
-
|
|
237
|
-
// Create assignments
|
|
238
|
-
const engineerAssignment = await db.insert(projectAssignmentTable, {
|
|
239
|
-
projectName: 'Backend API',
|
|
240
|
-
employeeRef: new Reference<Engineer>(engineerTable.name, engineer.id),
|
|
241
|
-
startDate: '2024-01-01',
|
|
242
|
-
});
|
|
243
|
-
|
|
244
|
-
const pmAssignment = await db.insert(projectAssignmentTable, {
|
|
245
|
-
projectName: 'Project Planning',
|
|
246
|
-
employeeRef: new Reference<ProjectManager>(projectManagerTable.name, projectManager.id),
|
|
247
|
-
startDate: '2024-01-10',
|
|
248
|
-
});
|
|
249
|
-
|
|
250
|
-
const designerAssignment = await db.insert(projectAssignmentTable, {
|
|
251
|
-
projectName: 'Website Redesign',
|
|
252
|
-
employeeRef: new Reference<Designer>(designerTable.name, designer.id),
|
|
253
|
-
startDate: '2024-01-15',
|
|
254
|
-
});
|
|
255
|
-
|
|
256
|
-
// Delete the engineer's and PM's assignments - should cascade delete both
|
|
257
|
-
const deleteQuery = new QueryBuilder<ProjectAssignment>(projectAssignmentTable.name).condition({
|
|
258
|
-
field: 'id',
|
|
259
|
-
operator: 'IN',
|
|
260
|
-
value: [engineerAssignment.id, pmAssignment.id],
|
|
261
|
-
});
|
|
262
|
-
const recordsDeleted = await db.delete(projectAssignmentTable, deleteQuery);
|
|
263
|
-
|
|
264
|
-
expect(recordsDeleted).toBe(2);
|
|
265
|
-
|
|
266
|
-
// Verify engineer and PM were deleted but designer remains
|
|
267
|
-
const remainingEngineers = await db.query(engineerTable, {});
|
|
268
|
-
expect(remainingEngineers.length).toBe(0); // Engineer should be deleted
|
|
269
|
-
|
|
270
|
-
const remainingPMs = await db.query(projectManagerTable, {});
|
|
271
|
-
expect(remainingPMs.length).toBe(0); // PM should be deleted
|
|
272
|
-
|
|
273
|
-
const remainingDesigners = await db.query(designerTable, {});
|
|
274
|
-
expect(remainingDesigners.length).toBe(1); // Designer should still exist
|
|
275
|
-
expect(remainingDesigners[0].id).toBe(designer.id);
|
|
276
|
-
|
|
277
|
-
// Only designer assignment should still exist
|
|
278
|
-
const remainingAssignments = await db.query(projectAssignmentTable, {});
|
|
279
|
-
expect(remainingAssignments.length).toBe(1);
|
|
280
|
-
expect(remainingAssignments[0].id).toBe(designerAssignment.id);
|
|
281
|
-
});
|
|
282
|
-
|
|
283
|
-
test('should allow changing table name when updating reference to new type', async () => {
|
|
284
|
-
// Create employees
|
|
285
|
-
const engineer = await db.insert(engineerTable, {
|
|
286
|
-
name: 'John Doe',
|
|
287
|
-
yearsOfExperience: 5,
|
|
288
|
-
});
|
|
289
|
-
|
|
290
|
-
const designer = await db.insert(designerTable, {
|
|
291
|
-
name: 'Jane Smith',
|
|
292
|
-
specialization: 'UI/UX',
|
|
293
|
-
});
|
|
294
|
-
|
|
295
|
-
// Create initial assignment to engineer
|
|
296
|
-
const assignment = await db.insert(projectAssignmentTable, {
|
|
297
|
-
projectName: 'Full Stack App',
|
|
298
|
-
employeeRef: new Reference(engineerTable.name, engineer.id),
|
|
299
|
-
startDate: '2024-01-01',
|
|
300
|
-
});
|
|
301
|
-
|
|
302
|
-
// Reassign to designer
|
|
303
|
-
await db.update(
|
|
304
|
-
projectAssignmentTable,
|
|
305
|
-
{
|
|
306
|
-
employeeRef: new Reference(designerTable.name, designer.id),
|
|
307
|
-
},
|
|
308
|
-
{ id: assignment.id }
|
|
309
|
-
);
|
|
310
|
-
|
|
311
|
-
// Verify reassignment
|
|
312
|
-
const updatedAssignment = await db.get(projectAssignmentTable, { id: assignment.id });
|
|
313
|
-
expect(updatedAssignment.employeeRef).toBeDefined();
|
|
314
|
-
expect(updatedAssignment.employeeRef?._table).toBe(designerTable.name);
|
|
315
|
-
expect(updatedAssignment.employeeRef?._id).toBe(designer.id);
|
|
316
|
-
expect(updatedAssignment.employeeTableName).toBe(designerTable.name);
|
|
317
|
-
});
|
|
318
|
-
|
|
319
|
-
describe('DynamicReferenceTableNameColumn behavior', () => {
|
|
320
|
-
test('should handle defaultValue logic correctly', async () => {
|
|
321
|
-
// Test case 1: Reference column is populated
|
|
322
|
-
const engineer = await db.insert(engineerTable, {
|
|
323
|
-
name: 'John Doe',
|
|
324
|
-
yearsOfExperience: 5,
|
|
325
|
-
});
|
|
326
|
-
|
|
327
|
-
const assignment = await db.insert(projectAssignmentTable, {
|
|
328
|
-
projectName: 'Test Project',
|
|
329
|
-
employeeRef: new Reference(engineerTable.name, engineer.id),
|
|
330
|
-
startDate: '2024-01-01',
|
|
331
|
-
});
|
|
332
|
-
|
|
333
|
-
// Verify table name was set correctly from reference
|
|
334
|
-
expect(assignment.employeeTableName).toBe(engineerTable.name);
|
|
335
|
-
|
|
336
|
-
// Test case 2: Reference column is null
|
|
337
|
-
const assignmentNoRef = await db.insert(projectAssignmentTable, {
|
|
338
|
-
projectName: 'No Reference Project',
|
|
339
|
-
employeeRef: null,
|
|
340
|
-
startDate: '2024-01-01',
|
|
341
|
-
});
|
|
342
|
-
|
|
343
|
-
// Verify table name is null when reference is null
|
|
344
|
-
expect(assignmentNoRef.employeeTableName).toBeNull();
|
|
345
|
-
|
|
346
|
-
// Test case 3: Reference without table name should throw
|
|
347
|
-
await expect(
|
|
348
|
-
db.insert(projectAssignmentTable, {
|
|
349
|
-
projectName: 'Invalid Reference',
|
|
350
|
-
employeeRef: new Reference('', engineer.id), // Empty table name
|
|
351
|
-
startDate: '2024-01-01',
|
|
352
|
-
})
|
|
353
|
-
).rejects.toThrow(/table name must be set in Reference object/);
|
|
354
|
-
});
|
|
355
|
-
|
|
356
|
-
test('should handle updateValue logic correctly', async () => {
|
|
357
|
-
// Create initial records
|
|
358
|
-
const engineer = await db.insert(engineerTable, {
|
|
359
|
-
name: 'John Doe',
|
|
360
|
-
yearsOfExperience: 5,
|
|
361
|
-
});
|
|
362
|
-
|
|
363
|
-
const designer = await db.insert(designerTable, {
|
|
364
|
-
name: 'Jane Smith',
|
|
365
|
-
specialization: 'UI/UX',
|
|
366
|
-
});
|
|
367
|
-
|
|
368
|
-
const assignment = await db.insert(projectAssignmentTable, {
|
|
369
|
-
projectName: 'Initial Project',
|
|
370
|
-
employeeRef: new Reference(engineerTable.name, engineer.id),
|
|
371
|
-
startDate: '2024-01-01',
|
|
372
|
-
});
|
|
373
|
-
|
|
374
|
-
// Test case 1: Update reference to new table
|
|
375
|
-
await db.update(
|
|
376
|
-
projectAssignmentTable,
|
|
377
|
-
{
|
|
378
|
-
employeeRef: new Reference(designerTable.name, designer.id),
|
|
379
|
-
},
|
|
380
|
-
{ id: assignment.id }
|
|
381
|
-
);
|
|
382
|
-
|
|
383
|
-
const updatedAssignment = await db.get(projectAssignmentTable, { id: assignment.id });
|
|
384
|
-
expect(updatedAssignment.employeeTableName).toBe(designerTable.name);
|
|
385
|
-
|
|
386
|
-
// Test case 2: Update without changing reference
|
|
387
|
-
await db.update(
|
|
388
|
-
projectAssignmentTable,
|
|
389
|
-
{
|
|
390
|
-
projectName: 'Updated Project Name',
|
|
391
|
-
},
|
|
392
|
-
{ id: assignment.id }
|
|
393
|
-
);
|
|
394
|
-
|
|
395
|
-
const unchangedAssignment = await db.get(projectAssignmentTable, { id: assignment.id });
|
|
396
|
-
expect(unchangedAssignment.employeeTableName).toBe(designerTable.name); // Should retain previous value
|
|
397
|
-
|
|
398
|
-
// Test case 3: Update with invalid reference should throw
|
|
399
|
-
await expect(
|
|
400
|
-
db.update(
|
|
401
|
-
projectAssignmentTable,
|
|
402
|
-
{
|
|
403
|
-
employeeRef: new Reference('', designer.id), // Empty table name
|
|
404
|
-
},
|
|
405
|
-
{ id: assignment.id }
|
|
406
|
-
)
|
|
407
|
-
).rejects.toThrow(/table name must be set in Reference object/);
|
|
408
|
-
});
|
|
409
|
-
|
|
410
|
-
test('should handle null references correctly', async () => {
|
|
411
|
-
// Create initial assignment with reference
|
|
412
|
-
const engineer = await db.insert(engineerTable, {
|
|
413
|
-
name: 'John Doe',
|
|
414
|
-
yearsOfExperience: 5,
|
|
415
|
-
});
|
|
416
|
-
|
|
417
|
-
const assignment = await db.insert(projectAssignmentTable, {
|
|
418
|
-
projectName: 'Initial Project',
|
|
419
|
-
employeeRef: new Reference(engineerTable.name, engineer.id),
|
|
420
|
-
startDate: '2024-01-01',
|
|
421
|
-
});
|
|
422
|
-
|
|
423
|
-
// Update to null reference
|
|
424
|
-
await db.update(
|
|
425
|
-
projectAssignmentTable,
|
|
426
|
-
{
|
|
427
|
-
employeeRef: null,
|
|
428
|
-
},
|
|
429
|
-
{ id: assignment.id }
|
|
430
|
-
);
|
|
431
|
-
|
|
432
|
-
const nullRefAssignment = await db.get(projectAssignmentTable, { id: assignment.id });
|
|
433
|
-
expect(nullRefAssignment.employeeRef).toBeNull();
|
|
434
|
-
expect(nullRefAssignment.employeeTableName).toBe(engineerTable.name); // Should retain previous value
|
|
435
|
-
});
|
|
436
|
-
|
|
437
|
-
test('should handle custom defaultValue override for projectLead', async () => {
|
|
438
|
-
const engineer = await db.insert(engineerTable, {
|
|
439
|
-
name: 'John Doe',
|
|
440
|
-
yearsOfExperience: 5,
|
|
441
|
-
});
|
|
442
|
-
|
|
443
|
-
// Even with a reference provided, should use the custom default value
|
|
444
|
-
const assignment = await db.insert(projectAssignmentTable, {
|
|
445
|
-
projectName: 'Custom Default Test',
|
|
446
|
-
projectLeadRef: new Reference(engineerTable.name, engineer.id),
|
|
447
|
-
startDate: '2024-01-01',
|
|
448
|
-
});
|
|
449
|
-
|
|
450
|
-
// Should use our custom default value instead of the reference's table name
|
|
451
|
-
expect(assignment.projectLeadTableName).toBe('TEST_DEFAULT_VALUE');
|
|
452
|
-
});
|
|
453
|
-
|
|
454
|
-
test('should handle custom updateValue override for projectLead', async () => {
|
|
455
|
-
const engineer = await db.insert(engineerTable, {
|
|
456
|
-
name: 'John Doe',
|
|
457
|
-
yearsOfExperience: 5,
|
|
458
|
-
});
|
|
459
|
-
|
|
460
|
-
const designer = await db.insert(designerTable, {
|
|
461
|
-
name: 'Jane Smith',
|
|
462
|
-
specialization: 'UI/UX',
|
|
463
|
-
});
|
|
464
|
-
|
|
465
|
-
// Create initial assignment
|
|
466
|
-
const assignment = await db.insert(projectAssignmentTable, {
|
|
467
|
-
projectName: 'Initial Project',
|
|
468
|
-
projectLeadRef: new Reference(engineerTable.name, engineer.id),
|
|
469
|
-
startDate: '2024-01-01',
|
|
470
|
-
});
|
|
471
|
-
|
|
472
|
-
// Update the reference
|
|
473
|
-
await db.update(
|
|
474
|
-
projectAssignmentTable,
|
|
475
|
-
{
|
|
476
|
-
projectLeadRef: new Reference(designerTable.name, designer.id),
|
|
477
|
-
},
|
|
478
|
-
{ id: assignment.id }
|
|
479
|
-
);
|
|
480
|
-
|
|
481
|
-
const updatedAssignment = await db.get(projectAssignmentTable, { id: assignment.id });
|
|
482
|
-
// Should use our custom update value instead of the new reference's table name
|
|
483
|
-
expect(updatedAssignment.projectLeadTableName).toBe('TEST_UPDATE_VALUE');
|
|
484
|
-
});
|
|
485
|
-
});
|
|
486
|
-
};
|
|
487
|
-
};
|