@proteinjs/db 1.3.2 → 1.4.0
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 +11 -0
- package/LICENSE +21 -0
- package/dist/generated/index.js +5 -5
- package/dist/generated/index.js.map +1 -1
- package/dist/src/Columns.d.ts.map +1 -1
- package/dist/src/Columns.js +12 -2
- package/dist/src/Columns.js.map +1 -1
- package/dist/src/reference/ReferenceArray.d.ts +3 -4
- package/dist/src/reference/ReferenceArray.d.ts.map +1 -1
- package/dist/src/reference/ReferenceArray.js +22 -51
- package/dist/src/reference/ReferenceArray.js.map +1 -1
- package/dist/test/ReferenceArray.test.js +38 -54
- package/dist/test/ReferenceArray.test.js.map +1 -1
- package/dist/test/ReferenceArraySerializer.test.js +41 -8
- package/dist/test/ReferenceArraySerializer.test.js.map +1 -1
- package/dist/test/reusable/CrudTests.d.ts +1 -1
- package/generated/index.ts +17 -20
- package/package.json +7 -6
- package/src/Columns.ts +11 -1
- package/src/reference/ReferenceArray.ts +23 -46
- package/test/ReferenceArray.test.ts +29 -58
- package/test/ReferenceArraySerializer.test.ts +48 -7
|
@@ -13,81 +13,52 @@ class MockRecord implements Record {
|
|
|
13
13
|
describe('ReferenceArray', () => {
|
|
14
14
|
const createMockRecord = (id: string) => new MockRecord(id, moment(), moment());
|
|
15
15
|
|
|
16
|
-
it('should initialize with correct ids
|
|
17
|
-
const
|
|
18
|
-
const refArray = new ReferenceArray<MockRecord>('mock_table', ['1', '2'], objects);
|
|
19
|
-
|
|
16
|
+
it('should initialize with correct ids', () => {
|
|
17
|
+
const refArray = new ReferenceArray<MockRecord>('mock_table', ['1', '2']);
|
|
20
18
|
expect(refArray._ids).toEqual(['1', '2']);
|
|
21
|
-
expect(refArray._objects).
|
|
19
|
+
expect(refArray._objects).toBeUndefined();
|
|
22
20
|
});
|
|
23
21
|
|
|
24
|
-
it('should
|
|
25
|
-
const
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
// Push a new object
|
|
29
|
-
const refArrayObjects = await refArray.get();
|
|
30
|
-
if (refArrayObjects) {
|
|
31
|
-
refArrayObjects.push(createMockRecord('3'));
|
|
32
|
-
expect(refArray._ids).toEqual(['1', '2', '3']);
|
|
33
|
-
|
|
34
|
-
// Modify an object
|
|
35
|
-
refArrayObjects[1] = createMockRecord('4');
|
|
36
|
-
expect(refArray._ids).toEqual(['1', '4', '3']);
|
|
22
|
+
it('should set and get objects', async () => {
|
|
23
|
+
const refArray = new ReferenceArray<MockRecord>('mock_table', ['1', '2']);
|
|
24
|
+
const mockObjects = [createMockRecord('1'), createMockRecord('2')];
|
|
37
25
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
expect(refArray._ids).toEqual(['1', '4']);
|
|
26
|
+
refArray.set(mockObjects);
|
|
27
|
+
const objects = await refArray.get();
|
|
41
28
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
expect(refArray._ids).toEqual(['4']);
|
|
45
|
-
} else {
|
|
46
|
-
fail('refArrayObjects is undefined');
|
|
47
|
-
}
|
|
29
|
+
expect(objects).toEqual(mockObjects);
|
|
30
|
+
expect(refArray._objects).toBeDefined();
|
|
48
31
|
});
|
|
49
32
|
|
|
50
|
-
it('should
|
|
51
|
-
const
|
|
52
|
-
const
|
|
33
|
+
it('should set objects without updating ids', () => {
|
|
34
|
+
const refArray = new ReferenceArray<MockRecord>('mock_table', ['1', '2']);
|
|
35
|
+
const newObjects = [createMockRecord('3'), createMockRecord('4')];
|
|
53
36
|
|
|
54
|
-
const newObjects = [createMockRecord('5'), createMockRecord('6')];
|
|
55
37
|
refArray.set(newObjects);
|
|
56
|
-
expect(refArray._ids).toEqual(['
|
|
38
|
+
expect(refArray._ids).toEqual(['1', '2']); // ids remain unchanged
|
|
57
39
|
expect(refArray._objects).toEqual(newObjects);
|
|
58
40
|
});
|
|
59
41
|
|
|
60
|
-
it('should not leave null or undefined entries in ids array when objects are deleted', () => {
|
|
61
|
-
const objects = [createMockRecord('1'), createMockRecord('2'), createMockRecord('3')];
|
|
62
|
-
const refArray = new ReferenceArray<MockRecord>('mock_table', ['1', '2', '3'], objects);
|
|
63
|
-
|
|
64
|
-
if (refArray._objects) {
|
|
65
|
-
// Delete the second object using splice
|
|
66
|
-
refArray._objects.splice(1, 1);
|
|
67
|
-
expect(refArray._ids).toEqual(['1', '3']);
|
|
68
|
-
|
|
69
|
-
// Delete the first object using splice
|
|
70
|
-
refArray._objects.splice(0, 1);
|
|
71
|
-
expect(refArray._ids).toEqual(['3']);
|
|
72
|
-
|
|
73
|
-
// Delete the remaining object
|
|
74
|
-
refArray._objects.pop();
|
|
75
|
-
expect(refArray._ids).toEqual([]);
|
|
76
|
-
} else {
|
|
77
|
-
fail('refArray._objects is undefined');
|
|
78
|
-
}
|
|
79
|
-
});
|
|
80
|
-
|
|
81
42
|
it('should handle initializing with an empty array', async () => {
|
|
82
43
|
const refArray = new ReferenceArray<MockRecord>('mock_table', []);
|
|
83
44
|
|
|
84
45
|
expect(refArray._ids).toEqual([]);
|
|
46
|
+
expect(refArray._objects).toBeUndefined();
|
|
47
|
+
|
|
48
|
+
const objects = await refArray.get();
|
|
49
|
+
expect(objects).toEqual([]);
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
it('should not update ids when objects are modified', async () => {
|
|
53
|
+
const refArray = new ReferenceArray<MockRecord>('mock_table', ['1', '2']);
|
|
54
|
+
const initialObjects = [createMockRecord('1'), createMockRecord('2')];
|
|
55
|
+
refArray.set(initialObjects);
|
|
85
56
|
|
|
86
|
-
const
|
|
87
|
-
|
|
57
|
+
const objects = await refArray.get();
|
|
58
|
+
objects.push(createMockRecord('3'));
|
|
59
|
+
objects[1] = createMockRecord('4');
|
|
60
|
+
objects.pop();
|
|
88
61
|
|
|
89
|
-
|
|
90
|
-
expect(refArray._ids).toEqual(['1']);
|
|
91
|
-
expect(refArrayObjects.length).toEqual(1);
|
|
62
|
+
expect(refArray._ids).toEqual(['1', '2']); // ids remain unchanged
|
|
92
63
|
});
|
|
93
64
|
});
|
|
@@ -27,16 +27,57 @@ describe('ReferenceArraySerializer', () => {
|
|
|
27
27
|
});
|
|
28
28
|
|
|
29
29
|
const deserialized = serializer.deserialize(serialized);
|
|
30
|
+
expect(deserialized).toBeInstanceOf(ReferenceArray);
|
|
30
31
|
expect(deserialized._table).toEqual('mock_table');
|
|
31
32
|
expect(deserialized._ids).toEqual(['1', '2']);
|
|
32
33
|
expect(deserialized._objects).toEqual(objects);
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
it('should handle empty ReferenceArray', () => {
|
|
37
|
+
const refArray = new ReferenceArray<MockRecord>('mock_table', []);
|
|
38
|
+
const serializer = new ReferenceArraySerializer();
|
|
39
|
+
|
|
40
|
+
const serialized = serializer.serialize(refArray);
|
|
41
|
+
expect(serialized).toEqual({
|
|
42
|
+
_table: 'mock_table',
|
|
43
|
+
_ids: [],
|
|
44
|
+
_objects: undefined,
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
const deserialized = serializer.deserialize(serialized);
|
|
48
|
+
expect(deserialized).toBeInstanceOf(ReferenceArray);
|
|
49
|
+
expect(deserialized._table).toEqual('mock_table');
|
|
50
|
+
expect(deserialized._ids).toEqual([]);
|
|
51
|
+
expect(deserialized._objects).toBeUndefined();
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
it('should handle ReferenceArray with ids but no objects', () => {
|
|
55
|
+
const refArray = new ReferenceArray<MockRecord>('mock_table', ['1', '2']);
|
|
56
|
+
const serializer = new ReferenceArraySerializer();
|
|
57
|
+
|
|
58
|
+
const serialized = serializer.serialize(refArray);
|
|
59
|
+
expect(serialized).toEqual({
|
|
60
|
+
_table: 'mock_table',
|
|
61
|
+
_ids: ['1', '2'],
|
|
62
|
+
_objects: undefined,
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
const deserialized = serializer.deserialize(serialized);
|
|
66
|
+
expect(deserialized).toBeInstanceOf(ReferenceArray);
|
|
67
|
+
expect(deserialized._table).toEqual('mock_table');
|
|
68
|
+
expect(deserialized._ids).toEqual(['1', '2']);
|
|
69
|
+
expect(deserialized._objects).toBeUndefined();
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
it('should maintain separate ids and objects after deserialization', () => {
|
|
73
|
+
const objects = [createMockRecord('1'), createMockRecord('2')];
|
|
74
|
+
const refArray = new ReferenceArray<MockRecord>('mock_table', ['3', '4'], objects);
|
|
75
|
+
const serializer = new ReferenceArraySerializer();
|
|
76
|
+
|
|
77
|
+
const serialized = serializer.serialize(refArray);
|
|
78
|
+
const deserialized = serializer.deserialize(serialized);
|
|
33
79
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
deserialized._objects.push(createMockRecord('3'));
|
|
37
|
-
expect(deserialized._ids).toEqual(['1', '2', '3']);
|
|
38
|
-
} else {
|
|
39
|
-
fail('deserialized._objects is undefined');
|
|
40
|
-
}
|
|
80
|
+
expect(deserialized._ids).toEqual(['3', '4']);
|
|
81
|
+
expect(deserialized._objects?.map((obj) => obj.id)).toEqual(['1', '2']);
|
|
41
82
|
});
|
|
42
83
|
});
|