@expo/entity 0.31.1 → 0.32.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/build/ComposedEntityCacheAdapter.d.ts +4 -6
- package/build/ComposedEntityCacheAdapter.js +3 -6
- package/build/ComposedEntityCacheAdapter.js.map +1 -1
- package/build/EnforcingEntityLoader.d.ts +1 -1
- package/build/Entity.d.ts +20 -10
- package/build/Entity.js +2 -2
- package/build/Entity.js.map +1 -1
- package/build/EntityAssociationLoader.d.ts +9 -9
- package/build/EntityCompanion.d.ts +6 -5
- package/build/EntityCompanion.js +6 -4
- package/build/EntityCompanion.js.map +1 -1
- package/build/EntityCompanionProvider.d.ts +28 -36
- package/build/EntityCompanionProvider.js +4 -19
- package/build/EntityCompanionProvider.js.map +1 -1
- package/build/EntityConfiguration.d.ts +3 -3
- package/build/EntityConfiguration.js +2 -2
- package/build/EntityConfiguration.js.map +1 -1
- package/build/EntityDatabaseAdapter.d.ts +1 -1
- package/build/EntityDatabaseAdapter.js +1 -1
- package/build/EntityDatabaseAdapter.js.map +1 -1
- package/build/EntityFieldDefinition.d.ts +2 -2
- package/build/EntityFieldDefinition.js +1 -1
- package/build/EntityFieldDefinition.js.map +1 -1
- package/build/EntityLoader.d.ts +4 -2
- package/build/EntityLoader.js +21 -7
- package/build/EntityLoader.js.map +1 -1
- package/build/EntityLoaderFactory.d.ts +4 -7
- package/build/EntityLoaderFactory.js +3 -5
- package/build/EntityLoaderFactory.js.map +1 -1
- package/build/EntityMutationInfo.d.ts +3 -3
- package/build/EntityMutationInfo.js +1 -1
- package/build/EntityMutationInfo.js.map +1 -1
- package/build/EntityMutationTriggerConfiguration.d.ts +3 -3
- package/build/EntityMutationValidator.d.ts +1 -1
- package/build/EntityMutator.d.ts +9 -7
- package/build/EntityMutator.js +21 -21
- package/build/EntityMutator.js.map +1 -1
- package/build/EntityMutatorFactory.d.ts +4 -2
- package/build/EntityMutatorFactory.js +5 -4
- package/build/EntityMutatorFactory.js.map +1 -1
- package/build/EntityPrivacyPolicy.d.ts +3 -3
- package/build/EntityPrivacyPolicy.js +2 -2
- package/build/EntityPrivacyPolicy.js.map +1 -1
- package/build/EntityQueryContext.d.ts +13 -5
- package/build/EntityQueryContext.js +11 -4
- package/build/EntityQueryContext.js.map +1 -1
- package/build/EntityQueryContextProvider.d.ts +3 -3
- package/build/EntityQueryContextProvider.js +2 -2
- package/build/EntityQueryContextProvider.js.map +1 -1
- package/build/EntitySecondaryCacheLoader.d.ts +1 -1
- package/build/EntitySecondaryCacheLoader.js +1 -1
- package/build/EntitySecondaryCacheLoader.js.map +1 -1
- package/build/GenericEntityCacheAdapter.d.ts +14 -0
- package/build/GenericEntityCacheAdapter.js +38 -0
- package/build/GenericEntityCacheAdapter.js.map +1 -0
- package/build/{EntityCacheAdapter.d.ts → IEntityCacheAdapter.d.ts} +5 -8
- package/build/IEntityCacheAdapter.js +3 -0
- package/build/IEntityCacheAdapter.js.map +1 -0
- package/build/IEntityCacheAdapterProvider.d.ts +2 -2
- package/build/IEntityGenericCacher.d.ts +31 -2
- package/build/ReadonlyEntity.d.ts +19 -7
- package/build/ReadonlyEntity.js +15 -13
- package/build/ReadonlyEntity.js.map +1 -1
- package/build/ViewerContext.d.ts +3 -3
- package/build/ViewerContext.js +3 -3
- package/build/ViewerContext.js.map +1 -1
- package/build/ViewerScopedEntityCompanion.d.ts +2 -2
- package/build/ViewerScopedEntityCompanion.js.map +1 -1
- package/build/ViewerScopedEntityCompanionProvider.d.ts +3 -3
- package/build/ViewerScopedEntityCompanionProvider.js +3 -3
- package/build/ViewerScopedEntityCompanionProvider.js.map +1 -1
- package/build/ViewerScopedEntityLoaderFactory.d.ts +1 -1
- package/build/ViewerScopedEntityMutatorFactory.d.ts +1 -1
- package/build/__tests__/ComposedCacheAdapter-test.js +4 -8
- package/build/__tests__/ComposedCacheAdapter-test.js.map +1 -1
- package/build/__tests__/EnforcingEntityLoader-test.js +1 -0
- package/build/__tests__/EnforcingEntityLoader-test.js.map +1 -1
- package/build/__tests__/Entity-test.js +42 -20
- package/build/__tests__/Entity-test.js.map +1 -1
- package/build/__tests__/EntityAssociationLoader-test.js +6 -6
- package/build/__tests__/EntityAssociationLoader-test.js.map +1 -1
- package/build/__tests__/EntityCommonUseCases-test.js +20 -22
- package/build/__tests__/EntityCommonUseCases-test.js.map +1 -1
- package/build/__tests__/EntityCompanion-test.js +2 -1
- package/build/__tests__/EntityCompanion-test.js.map +1 -1
- package/build/__tests__/EntityCompanionProvider-test.js +15 -40
- package/build/__tests__/EntityCompanionProvider-test.js.map +1 -1
- package/build/__tests__/EntityEdges-test.js +48 -54
- package/build/__tests__/EntityEdges-test.js.map +1 -1
- package/build/__tests__/EntityLoader-constructor-test.d.ts +9 -5
- package/build/__tests__/EntityLoader-constructor-test.js +13 -14
- package/build/__tests__/EntityLoader-constructor-test.js.map +1 -1
- package/build/__tests__/EntityLoader-test.js +19 -11
- package/build/__tests__/EntityLoader-test.js.map +1 -1
- package/build/__tests__/EntityMutator-MutationCacheConsistency-test.js +20 -22
- package/build/__tests__/EntityMutator-MutationCacheConsistency-test.js.map +1 -1
- package/build/__tests__/EntityMutator-test.js +67 -14
- package/build/__tests__/EntityMutator-test.js.map +1 -1
- package/build/__tests__/EntityPrivacyPolicy-test.js +82 -29
- package/build/__tests__/EntityPrivacyPolicy-test.js.map +1 -1
- package/build/__tests__/EntityQueryContext-test.js +12 -0
- package/build/__tests__/EntityQueryContext-test.js.map +1 -1
- package/build/__tests__/EntitySecondaryCacheLoader-test.js +1 -2
- package/build/__tests__/EntitySecondaryCacheLoader-test.js.map +1 -1
- package/build/__tests__/EntitySelfReferentialEdges-test.js +16 -20
- package/build/__tests__/EntitySelfReferentialEdges-test.js.map +1 -1
- package/build/__tests__/GenericEntityCacheAdapter-test.d.ts +1 -0
- package/build/__tests__/GenericEntityCacheAdapter-test.js +80 -0
- package/build/__tests__/GenericEntityCacheAdapter-test.js.map +1 -0
- package/build/__tests__/ReadonlyEntity-test.js +79 -13
- package/build/__tests__/ReadonlyEntity-test.js.map +1 -1
- package/build/__tests__/ViewerScopedEntityCompanionProvider-test.js +2 -25
- package/build/__tests__/ViewerScopedEntityCompanionProvider-test.js.map +1 -1
- package/build/__tests__/cases/TwoEntitySameTableDisjointRows-test.js +20 -23
- package/build/__tests__/cases/TwoEntitySameTableDisjointRows-test.js.map +1 -1
- package/build/__tests__/cases/TwoEntitySameTableOverlappingRows-test.js +17 -20
- package/build/__tests__/cases/TwoEntitySameTableOverlappingRows-test.js.map +1 -1
- package/build/errors/EntityError.js +2 -2
- package/build/errors/EntityError.js.map +1 -1
- package/build/errors/EntityInvalidFieldValueError.d.ts +2 -2
- package/build/errors/EntityInvalidFieldValueError.js.map +1 -1
- package/build/errors/EntityNotAuthorizedError.d.ts +2 -2
- package/build/errors/EntityNotAuthorizedError.js +1 -1
- package/build/errors/EntityNotAuthorizedError.js.map +1 -1
- package/build/errors/EntityNotFoundError.d.ts +2 -2
- package/build/errors/EntityNotFoundError.js.map +1 -1
- package/build/index.d.ts +2 -1
- package/build/index.js +3 -3
- package/build/index.js.map +1 -1
- package/build/internal/EntityDataManager.d.ts +1 -1
- package/build/internal/EntityDataManager.js +1 -1
- package/build/internal/EntityDataManager.js.map +1 -1
- package/build/internal/EntityFieldTransformationUtils.d.ts +1 -1
- package/build/internal/EntityFieldTransformationUtils.js +4 -4
- package/build/internal/EntityFieldTransformationUtils.js.map +1 -1
- package/build/internal/EntityTableDataCoordinator.d.ts +3 -3
- package/build/internal/EntityTableDataCoordinator.js.map +1 -1
- package/build/internal/ReadThroughEntityCache.d.ts +3 -3
- package/build/internal/ReadThroughEntityCache.js +1 -1
- package/build/internal/ReadThroughEntityCache.js.map +1 -1
- package/build/internal/__tests__/EntityDataManager-test.js +1 -1
- package/build/internal/__tests__/EntityDataManager-test.js.map +1 -1
- package/build/internal/__tests__/ReadThroughEntityCache-test.js.map +1 -1
- package/build/metrics/EntityMetricsUtils.js.map +1 -1
- package/build/metrics/IEntityMetricsAdapter.js +4 -4
- package/build/metrics/IEntityMetricsAdapter.js.map +1 -1
- package/build/rules/AlwaysAllowPrivacyPolicyRule.d.ts +2 -2
- package/build/rules/AlwaysAllowPrivacyPolicyRule.js.map +1 -1
- package/build/rules/AlwaysDenyPrivacyPolicyRule.d.ts +2 -2
- package/build/rules/AlwaysDenyPrivacyPolicyRule.js.map +1 -1
- package/build/rules/AlwaysSkipPrivacyPolicyRule.d.ts +2 -2
- package/build/rules/AlwaysSkipPrivacyPolicyRule.js.map +1 -1
- package/build/rules/PrivacyPolicyRule.d.ts +1 -1
- package/build/rules/PrivacyPolicyRule.js +1 -1
- package/build/rules/PrivacyPolicyRule.js.map +1 -1
- package/build/testfixtures/DateIDTestEntity.d.ts +2 -3
- package/build/testfixtures/DateIDTestEntity.js +7 -9
- package/build/testfixtures/DateIDTestEntity.js.map +1 -1
- package/build/testfixtures/SimpleTestEntity.d.ts +3 -4
- package/build/testfixtures/SimpleTestEntity.js +7 -9
- package/build/testfixtures/SimpleTestEntity.js.map +1 -1
- package/build/testfixtures/TestEntity.d.ts +2 -3
- package/build/testfixtures/TestEntity.js +14 -10
- package/build/testfixtures/TestEntity.js.map +1 -1
- package/build/testfixtures/TestEntity2.d.ts +2 -3
- package/build/testfixtures/TestEntity2.js +7 -9
- package/build/testfixtures/TestEntity2.js.map +1 -1
- package/build/testfixtures/TestEntityNumberKey.d.ts +2 -3
- package/build/testfixtures/TestEntityNumberKey.js +7 -9
- package/build/testfixtures/TestEntityNumberKey.js.map +1 -1
- package/build/utils/testing/PrivacyPolicyRuleTestUtils.d.ts +4 -4
- package/build/utils/testing/StubCacheAdapter.d.ts +6 -5
- package/build/utils/testing/StubCacheAdapter.js +5 -6
- package/build/utils/testing/StubCacheAdapter.js.map +1 -1
- package/build/utils/testing/StubDatabaseAdapterProvider.js.map +1 -1
- package/build/utils/testing/StubQueryContextProvider.d.ts +2 -1
- package/build/utils/testing/StubQueryContextProvider.js +1 -1
- package/build/utils/testing/StubQueryContextProvider.js.map +1 -1
- package/build/utils/testing/createUnitTestEntityCompanionProvider.js +2 -2
- package/build/utils/testing/createUnitTestEntityCompanionProvider.js.map +1 -1
- package/package.json +3 -3
- package/src/ComposedEntityCacheAdapter.ts +4 -11
- package/src/EnforcingEntityLoader.ts +1 -1
- package/src/Entity.ts +23 -12
- package/src/EntityAssociationLoader.ts +12 -12
- package/src/EntityCompanion.ts +13 -32
- package/src/EntityCompanionProvider.ts +41 -80
- package/src/EntityConfiguration.ts +4 -5
- package/src/EntityFieldDefinition.ts +2 -2
- package/src/EntityLoader.ts +19 -2
- package/src/EntityLoaderFactory.ts +7 -9
- package/src/EntityMutationInfo.ts +2 -2
- package/src/EntityMutationTriggerConfiguration.ts +3 -3
- package/src/EntityMutationValidator.ts +1 -1
- package/src/EntityMutator.ts +38 -31
- package/src/EntityMutatorFactory.ts +6 -1
- package/src/EntityPrivacyPolicy.ts +2 -2
- package/src/EntityQueryContext.ts +24 -4
- package/src/EntityQueryContextProvider.ts +7 -5
- package/src/EntitySecondaryCacheLoader.ts +1 -1
- package/src/GenericEntityCacheAdapter.ts +65 -0
- package/src/{EntityCacheAdapter.ts → IEntityCacheAdapter.ts} +5 -8
- package/src/IEntityCacheAdapterProvider.ts +2 -2
- package/src/IEntityGenericCacher.ts +32 -2
- package/src/ReadonlyEntity.ts +32 -32
- package/src/ViewerContext.ts +10 -8
- package/src/ViewerScopedEntityCompanion.ts +2 -2
- package/src/ViewerScopedEntityCompanionProvider.ts +4 -12
- package/src/ViewerScopedEntityLoaderFactory.ts +1 -1
- package/src/ViewerScopedEntityMutatorFactory.ts +1 -1
- package/src/__tests__/ComposedCacheAdapter-test.ts +6 -11
- package/src/__tests__/EnforcingEntityLoader-test.ts +1 -0
- package/src/__tests__/Entity-test.ts +42 -21
- package/src/__tests__/EntityCommonUseCases-test.ts +20 -22
- package/src/__tests__/EntityCompanion-test.ts +6 -9
- package/src/__tests__/EntityCompanionProvider-test.ts +14 -26
- package/src/__tests__/EntityEdges-test.ts +43 -49
- package/src/__tests__/EntityLoader-constructor-test.ts +16 -12
- package/src/__tests__/EntityLoader-test.ts +9 -0
- package/src/__tests__/EntityMutator-MutationCacheConsistency-test.ts +20 -22
- package/src/__tests__/EntityMutator-test.ts +119 -19
- package/src/__tests__/EntityPrivacyPolicy-test.ts +82 -29
- package/src/__tests__/EntityQueryContext-test.ts +23 -1
- package/src/__tests__/EntitySelfReferentialEdges-test.ts +8 -10
- package/src/__tests__/GenericEntityCacheAdapter-test.ts +102 -0
- package/src/__tests__/ReadonlyEntity-test.ts +79 -13
- package/src/__tests__/ViewerScopedEntityCompanionProvider-test.ts +2 -5
- package/src/__tests__/cases/TwoEntitySameTableDisjointRows-test.ts +30 -24
- package/src/__tests__/cases/TwoEntitySameTableOverlappingRows-test.ts +14 -18
- package/src/errors/EntityInvalidFieldValueError.ts +2 -2
- package/src/errors/EntityNotAuthorizedError.ts +2 -2
- package/src/errors/EntityNotFoundError.ts +2 -2
- package/src/index.ts +2 -1
- package/src/internal/EntityDataManager.ts +1 -1
- package/src/internal/EntityTableDataCoordinator.ts +4 -4
- package/src/internal/ReadThroughEntityCache.ts +2 -2
- package/src/internal/__tests__/EntityDataManager-test.ts +2 -1
- package/src/internal/__tests__/ReadThroughEntityCache-test.ts +8 -8
- package/src/metrics/EntityMetricsUtils.ts +1 -1
- package/src/rules/AlwaysAllowPrivacyPolicyRule.ts +2 -2
- package/src/rules/AlwaysDenyPrivacyPolicyRule.ts +2 -2
- package/src/rules/AlwaysSkipPrivacyPolicyRule.ts +2 -2
- package/src/rules/PrivacyPolicyRule.ts +1 -1
- package/src/testfixtures/DateIDTestEntity.ts +6 -8
- package/src/testfixtures/SimpleTestEntity.ts +6 -8
- package/src/testfixtures/TestEntity.ts +19 -15
- package/src/testfixtures/TestEntity2.ts +6 -8
- package/src/testfixtures/TestEntityNumberKey.ts +6 -8
- package/src/utils/testing/PrivacyPolicyRuleTestUtils.ts +4 -4
- package/src/utils/testing/StubCacheAdapter.ts +9 -11
- package/src/utils/testing/StubDatabaseAdapterProvider.ts +1 -1
- package/src/utils/testing/StubQueryContextProvider.ts +4 -3
- package/src/utils/testing/createUnitTestEntityCompanionProvider.ts +3 -3
- package/build/EntityCacheAdapter.js +0 -13
- package/build/EntityCacheAdapter.js.map +0 -1
|
@@ -26,7 +26,12 @@ describe(Entity, () => {
|
|
|
26
26
|
const data = {
|
|
27
27
|
id: 'what',
|
|
28
28
|
};
|
|
29
|
-
const testEntity = new SimpleTestEntity(
|
|
29
|
+
const testEntity = new SimpleTestEntity({
|
|
30
|
+
viewerContext,
|
|
31
|
+
id: 'what',
|
|
32
|
+
databaseFields: data,
|
|
33
|
+
selectedFields: data,
|
|
34
|
+
});
|
|
30
35
|
expect(SimpleTestEntity.updater(testEntity)).toBeInstanceOf(UpdateMutator);
|
|
31
36
|
});
|
|
32
37
|
});
|
|
@@ -38,7 +43,12 @@ describe(Entity, () => {
|
|
|
38
43
|
const data = {
|
|
39
44
|
id: 'what',
|
|
40
45
|
};
|
|
41
|
-
const testEntity = new SimpleTestDenyDeleteEntity(
|
|
46
|
+
const testEntity = new SimpleTestDenyDeleteEntity({
|
|
47
|
+
viewerContext,
|
|
48
|
+
id: 'what',
|
|
49
|
+
databaseFields: data,
|
|
50
|
+
selectedFields: data,
|
|
51
|
+
});
|
|
42
52
|
const canViewerUpdate = await SimpleTestDenyDeleteEntity.canViewerUpdateAsync(testEntity);
|
|
43
53
|
expect(canViewerUpdate).toBe(true);
|
|
44
54
|
});
|
|
@@ -49,7 +59,12 @@ describe(Entity, () => {
|
|
|
49
59
|
const data = {
|
|
50
60
|
id: 'what',
|
|
51
61
|
};
|
|
52
|
-
const testEntity = new SimpleTestDenyUpdateEntity(
|
|
62
|
+
const testEntity = new SimpleTestDenyUpdateEntity({
|
|
63
|
+
viewerContext,
|
|
64
|
+
id: 'what',
|
|
65
|
+
databaseFields: data,
|
|
66
|
+
selectedFields: data,
|
|
67
|
+
});
|
|
53
68
|
const canViewerUpdate = await SimpleTestDenyUpdateEntity.canViewerUpdateAsync(testEntity);
|
|
54
69
|
expect(canViewerUpdate).toBe(false);
|
|
55
70
|
});
|
|
@@ -62,7 +77,12 @@ describe(Entity, () => {
|
|
|
62
77
|
const data = {
|
|
63
78
|
id: 'what',
|
|
64
79
|
};
|
|
65
|
-
const testEntity = new SimpleTestDenyUpdateEntity(
|
|
80
|
+
const testEntity = new SimpleTestDenyUpdateEntity({
|
|
81
|
+
viewerContext,
|
|
82
|
+
id: 'what',
|
|
83
|
+
databaseFields: data,
|
|
84
|
+
selectedFields: data,
|
|
85
|
+
});
|
|
66
86
|
const canViewerDelete = await SimpleTestDenyUpdateEntity.canViewerDeleteAsync(testEntity);
|
|
67
87
|
expect(canViewerDelete).toBe(true);
|
|
68
88
|
});
|
|
@@ -73,7 +93,12 @@ describe(Entity, () => {
|
|
|
73
93
|
const data = {
|
|
74
94
|
id: 'what',
|
|
75
95
|
};
|
|
76
|
-
const testEntity = new SimpleTestDenyDeleteEntity(
|
|
96
|
+
const testEntity = new SimpleTestDenyDeleteEntity({
|
|
97
|
+
viewerContext,
|
|
98
|
+
id: 'what',
|
|
99
|
+
databaseFields: data,
|
|
100
|
+
selectedFields: data,
|
|
101
|
+
});
|
|
77
102
|
const canViewerDelete = await SimpleTestDenyDeleteEntity.canViewerDeleteAsync(testEntity);
|
|
78
103
|
expect(canViewerDelete).toBe(false);
|
|
79
104
|
});
|
|
@@ -177,37 +202,33 @@ class SimpleTestDenyDeleteEntityPrivacyPolicy extends EntityPrivacyPolicy<
|
|
|
177
202
|
}
|
|
178
203
|
|
|
179
204
|
class SimpleTestDenyUpdateEntity extends Entity<TestEntityFields, string, ViewerContext> {
|
|
180
|
-
static
|
|
205
|
+
static defineCompanionDefinition(): EntityCompanionDefinition<
|
|
181
206
|
TestEntityFields,
|
|
182
207
|
string,
|
|
183
208
|
ViewerContext,
|
|
184
209
|
SimpleTestDenyUpdateEntity,
|
|
185
210
|
SimpleTestDenyUpdateEntityPrivacyPolicy
|
|
186
211
|
> {
|
|
187
|
-
return
|
|
212
|
+
return {
|
|
213
|
+
entityClass: SimpleTestDenyUpdateEntity,
|
|
214
|
+
entityConfiguration: testEntityConfiguration,
|
|
215
|
+
privacyPolicyClass: SimpleTestDenyUpdateEntityPrivacyPolicy,
|
|
216
|
+
};
|
|
188
217
|
}
|
|
189
218
|
}
|
|
190
219
|
|
|
191
|
-
const simpleTestDenyUpdateEntityCompanion = new EntityCompanionDefinition({
|
|
192
|
-
entityClass: SimpleTestDenyUpdateEntity,
|
|
193
|
-
entityConfiguration: testEntityConfiguration,
|
|
194
|
-
privacyPolicyClass: SimpleTestDenyUpdateEntityPrivacyPolicy,
|
|
195
|
-
});
|
|
196
|
-
|
|
197
220
|
class SimpleTestDenyDeleteEntity extends Entity<TestEntityFields, string, ViewerContext> {
|
|
198
|
-
static
|
|
221
|
+
static defineCompanionDefinition(): EntityCompanionDefinition<
|
|
199
222
|
TestEntityFields,
|
|
200
223
|
string,
|
|
201
224
|
ViewerContext,
|
|
202
225
|
SimpleTestDenyDeleteEntity,
|
|
203
226
|
SimpleTestDenyDeleteEntityPrivacyPolicy
|
|
204
227
|
> {
|
|
205
|
-
return
|
|
228
|
+
return {
|
|
229
|
+
entityClass: SimpleTestDenyDeleteEntity,
|
|
230
|
+
entityConfiguration: testEntityConfiguration,
|
|
231
|
+
privacyPolicyClass: SimpleTestDenyDeleteEntityPrivacyPolicy,
|
|
232
|
+
};
|
|
206
233
|
}
|
|
207
234
|
}
|
|
208
|
-
|
|
209
|
-
const simpleTestDenyDeleteEntityCompanion = new EntityCompanionDefinition({
|
|
210
|
-
entityClass: SimpleTestDenyDeleteEntity,
|
|
211
|
-
entityConfiguration: testEntityConfiguration,
|
|
212
|
-
privacyPolicyClass: SimpleTestDenyDeleteEntityPrivacyPolicy,
|
|
213
|
-
});
|
|
@@ -31,14 +31,32 @@ type BlahFields = {
|
|
|
31
31
|
};
|
|
32
32
|
|
|
33
33
|
class BlahEntity extends Entity<BlahFields, string, TestUserViewerContext> {
|
|
34
|
-
static
|
|
34
|
+
static defineCompanionDefinition(): EntityCompanionDefinition<
|
|
35
35
|
BlahFields,
|
|
36
36
|
string,
|
|
37
37
|
TestUserViewerContext,
|
|
38
38
|
BlahEntity,
|
|
39
39
|
BlahEntityPrivacyPolicy
|
|
40
40
|
> {
|
|
41
|
-
return
|
|
41
|
+
return {
|
|
42
|
+
entityClass: BlahEntity,
|
|
43
|
+
entityConfiguration: new EntityConfiguration<BlahFields>({
|
|
44
|
+
idField: 'id',
|
|
45
|
+
tableName: 'blah_table',
|
|
46
|
+
schema: {
|
|
47
|
+
id: new UUIDField({
|
|
48
|
+
columnName: 'id',
|
|
49
|
+
cache: true,
|
|
50
|
+
}),
|
|
51
|
+
ownerID: new UUIDField({
|
|
52
|
+
columnName: 'owner_id',
|
|
53
|
+
}),
|
|
54
|
+
},
|
|
55
|
+
databaseAdapterFlavor: 'postgres',
|
|
56
|
+
cacheAdapterFlavor: 'redis',
|
|
57
|
+
}),
|
|
58
|
+
privacyPolicyClass: BlahEntityPrivacyPolicy,
|
|
59
|
+
};
|
|
42
60
|
}
|
|
43
61
|
}
|
|
44
62
|
|
|
@@ -84,26 +102,6 @@ class BlahEntityPrivacyPolicy extends EntityPrivacyPolicy<
|
|
|
84
102
|
];
|
|
85
103
|
}
|
|
86
104
|
|
|
87
|
-
const blahCompanion = new EntityCompanionDefinition({
|
|
88
|
-
entityClass: BlahEntity,
|
|
89
|
-
entityConfiguration: new EntityConfiguration<BlahFields>({
|
|
90
|
-
idField: 'id',
|
|
91
|
-
tableName: 'blah_table',
|
|
92
|
-
schema: {
|
|
93
|
-
id: new UUIDField({
|
|
94
|
-
columnName: 'id',
|
|
95
|
-
cache: true,
|
|
96
|
-
}),
|
|
97
|
-
ownerID: new UUIDField({
|
|
98
|
-
columnName: 'owner_id',
|
|
99
|
-
}),
|
|
100
|
-
},
|
|
101
|
-
databaseAdapterFlavor: 'postgres',
|
|
102
|
-
cacheAdapterFlavor: 'redis',
|
|
103
|
-
}),
|
|
104
|
-
privacyPolicyClass: BlahEntityPrivacyPolicy,
|
|
105
|
-
});
|
|
106
|
-
|
|
107
105
|
it('runs through a common workflow', async () => {
|
|
108
106
|
// will be one entity companion provider for each request, so
|
|
109
107
|
// share amongst all VCs created in that request
|
|
@@ -1,27 +1,24 @@
|
|
|
1
1
|
import { instance, mock, when } from 'ts-mockito';
|
|
2
2
|
|
|
3
3
|
import EntityCompanion from '../EntityCompanion';
|
|
4
|
+
import EntityCompanionProvider from '../EntityCompanionProvider';
|
|
4
5
|
import EntityLoaderFactory from '../EntityLoaderFactory';
|
|
5
6
|
import EntityMutatorFactory from '../EntityMutatorFactory';
|
|
6
7
|
import EntityTableDataCoordinator from '../internal/EntityTableDataCoordinator';
|
|
7
8
|
import IEntityMetricsAdapter from '../metrics/IEntityMetricsAdapter';
|
|
8
|
-
import TestEntity, {
|
|
9
|
-
TestEntityPrivacyPolicy,
|
|
10
|
-
testEntityConfiguration,
|
|
11
|
-
TestFields,
|
|
12
|
-
} from '../testfixtures/TestEntity';
|
|
9
|
+
import TestEntity, { testEntityConfiguration, TestFields } from '../testfixtures/TestEntity';
|
|
13
10
|
|
|
14
11
|
describe(EntityCompanion, () => {
|
|
15
12
|
it('correctly instantiates mutator and loader factories', () => {
|
|
13
|
+
const entityCompanionProvider = instance(mock<EntityCompanionProvider>());
|
|
14
|
+
|
|
16
15
|
const tableDataCoordinatorMock = mock<EntityTableDataCoordinator<TestFields>>();
|
|
17
16
|
when(tableDataCoordinatorMock.entityConfiguration).thenReturn(testEntityConfiguration);
|
|
18
17
|
|
|
19
18
|
const companion = new EntityCompanion(
|
|
20
|
-
|
|
19
|
+
entityCompanionProvider,
|
|
20
|
+
TestEntity.defineCompanionDefinition(),
|
|
21
21
|
instance(tableDataCoordinatorMock),
|
|
22
|
-
TestEntityPrivacyPolicy,
|
|
23
|
-
[],
|
|
24
|
-
{},
|
|
25
22
|
instance(mock<IEntityMetricsAdapter>())
|
|
26
23
|
);
|
|
27
24
|
expect(companion.getLoaderFactory()).toBeInstanceOf(EntityLoaderFactory);
|
|
@@ -23,26 +23,34 @@ const blahConfiguration = new EntityConfiguration<BlahFields>({
|
|
|
23
23
|
});
|
|
24
24
|
|
|
25
25
|
class Blah1Entity extends Entity<BlahFields, string, ViewerContext> {
|
|
26
|
-
static
|
|
26
|
+
static defineCompanionDefinition(): EntityCompanionDefinition<
|
|
27
27
|
BlahFields,
|
|
28
28
|
string,
|
|
29
29
|
ViewerContext,
|
|
30
30
|
Blah1Entity,
|
|
31
31
|
NoOpTest1PrivacyPolicy
|
|
32
32
|
> {
|
|
33
|
-
return
|
|
33
|
+
return {
|
|
34
|
+
entityClass: Blah1Entity,
|
|
35
|
+
entityConfiguration: blahConfiguration,
|
|
36
|
+
privacyPolicyClass: NoOpTest1PrivacyPolicy,
|
|
37
|
+
};
|
|
34
38
|
}
|
|
35
39
|
}
|
|
36
40
|
|
|
37
41
|
class Blah2Entity extends Entity<BlahFields, string, ViewerContext> {
|
|
38
|
-
static
|
|
42
|
+
static defineCompanionDefinition(): EntityCompanionDefinition<
|
|
39
43
|
BlahFields,
|
|
40
44
|
string,
|
|
41
45
|
ViewerContext,
|
|
42
46
|
Blah2Entity,
|
|
43
47
|
NoOpTest2PrivacyPolicy
|
|
44
48
|
> {
|
|
45
|
-
return
|
|
49
|
+
return {
|
|
50
|
+
entityClass: Blah2Entity,
|
|
51
|
+
entityConfiguration: blahConfiguration,
|
|
52
|
+
privacyPolicyClass: NoOpTest2PrivacyPolicy,
|
|
53
|
+
};
|
|
46
54
|
}
|
|
47
55
|
}
|
|
48
56
|
|
|
@@ -59,31 +67,11 @@ class NoOpTest2PrivacyPolicy extends EntityPrivacyPolicy<
|
|
|
59
67
|
Blah2Entity
|
|
60
68
|
> {}
|
|
61
69
|
|
|
62
|
-
const blah1CompanionDefinition = new EntityCompanionDefinition({
|
|
63
|
-
entityClass: Blah1Entity,
|
|
64
|
-
entityConfiguration: blahConfiguration,
|
|
65
|
-
privacyPolicyClass: NoOpTest1PrivacyPolicy,
|
|
66
|
-
});
|
|
67
|
-
|
|
68
|
-
const blah2CompanionDefinition = new EntityCompanionDefinition({
|
|
69
|
-
entityClass: Blah2Entity,
|
|
70
|
-
entityConfiguration: blahConfiguration,
|
|
71
|
-
privacyPolicyClass: NoOpTest2PrivacyPolicy,
|
|
72
|
-
});
|
|
73
|
-
|
|
74
70
|
describe(EntityCompanionProvider, () => {
|
|
75
71
|
it('returns different instances for different entity types, but share table data coordinators', () => {
|
|
76
72
|
const entityCompanionProvider = createUnitTestEntityCompanionProvider();
|
|
77
|
-
const companion1 = entityCompanionProvider.getCompanionForEntity(
|
|
78
|
-
|
|
79
|
-
blah1CompanionDefinition
|
|
80
|
-
);
|
|
81
|
-
|
|
82
|
-
const companion2 = entityCompanionProvider.getCompanionForEntity(
|
|
83
|
-
Blah2Entity,
|
|
84
|
-
blah2CompanionDefinition
|
|
85
|
-
);
|
|
86
|
-
|
|
73
|
+
const companion1 = entityCompanionProvider.getCompanionForEntity(Blah1Entity);
|
|
74
|
+
const companion2 = entityCompanionProvider.getCompanionForEntity(Blah2Entity);
|
|
87
75
|
expect(companion1).not.toEqual(companion2);
|
|
88
76
|
expect(companion1['tableDataCoordinator']).toEqual(companion2['tableDataCoordinator']);
|
|
89
77
|
});
|
|
@@ -322,45 +322,78 @@ const makeEntityClasses = (edgeDeletionBehavior: EntityEdgeDeletionBehavior) =>
|
|
|
322
322
|
}
|
|
323
323
|
|
|
324
324
|
class ParentEntity extends Entity<ParentFields, string, TestViewerContext> {
|
|
325
|
-
static
|
|
325
|
+
static defineCompanionDefinition(): EntityCompanionDefinition<
|
|
326
326
|
ParentFields,
|
|
327
327
|
string,
|
|
328
328
|
TestViewerContext,
|
|
329
329
|
ParentEntity,
|
|
330
330
|
TestEntityPrivacyPolicy
|
|
331
331
|
> {
|
|
332
|
-
return
|
|
332
|
+
return {
|
|
333
|
+
entityClass: ParentEntity,
|
|
334
|
+
entityConfiguration: parentEntityConfiguration,
|
|
335
|
+
privacyPolicyClass: TestEntityPrivacyPolicy,
|
|
336
|
+
mutationTriggers: {
|
|
337
|
+
beforeDelete: [new ParentCheckInfoDeletionTrigger()],
|
|
338
|
+
afterDelete: [new ParentCheckInfoDeletionTrigger()],
|
|
339
|
+
|
|
340
|
+
beforeUpdate: [new ParentCheckInfoUpdateTrigger()],
|
|
341
|
+
afterUpdate: [new ParentCheckInfoUpdateTrigger()],
|
|
342
|
+
},
|
|
343
|
+
};
|
|
333
344
|
}
|
|
334
345
|
}
|
|
335
346
|
|
|
336
347
|
class ChildEntity extends Entity<ChildFields, string, TestViewerContext> {
|
|
337
|
-
static
|
|
348
|
+
static defineCompanionDefinition(): EntityCompanionDefinition<
|
|
338
349
|
ChildFields,
|
|
339
350
|
string,
|
|
340
351
|
TestViewerContext,
|
|
341
352
|
ChildEntity,
|
|
342
353
|
TestEntityPrivacyPolicy
|
|
343
354
|
> {
|
|
344
|
-
return
|
|
355
|
+
return {
|
|
356
|
+
entityClass: ChildEntity,
|
|
357
|
+
entityConfiguration: childEntityConfiguration,
|
|
358
|
+
privacyPolicyClass: TestEntityPrivacyPolicy,
|
|
359
|
+
mutationTriggers: {
|
|
360
|
+
beforeDelete: [new ChildCheckInfoDeletionTrigger()],
|
|
361
|
+
afterDelete: [new ChildCheckInfoDeletionTrigger()],
|
|
362
|
+
|
|
363
|
+
beforeUpdate: [new ChildCheckInfoUpdateTrigger()],
|
|
364
|
+
afterUpdate: [new ChildCheckInfoUpdateTrigger()],
|
|
365
|
+
},
|
|
366
|
+
};
|
|
345
367
|
}
|
|
346
368
|
}
|
|
347
369
|
|
|
348
370
|
class GrandChildEntity extends Entity<GrandChildFields, string, TestViewerContext> {
|
|
349
|
-
static
|
|
371
|
+
static defineCompanionDefinition(): EntityCompanionDefinition<
|
|
350
372
|
GrandChildFields,
|
|
351
373
|
string,
|
|
352
374
|
TestViewerContext,
|
|
353
375
|
GrandChildEntity,
|
|
354
376
|
TestEntityPrivacyPolicy
|
|
355
377
|
> {
|
|
356
|
-
return
|
|
378
|
+
return {
|
|
379
|
+
entityClass: GrandChildEntity,
|
|
380
|
+
entityConfiguration: grandChildEntityConfiguration,
|
|
381
|
+
privacyPolicyClass: TestEntityPrivacyPolicy,
|
|
382
|
+
mutationTriggers: {
|
|
383
|
+
beforeDelete: [new GrandChildCheckInfoDeletionTrigger()],
|
|
384
|
+
afterDelete: [new GrandChildCheckInfoDeletionTrigger()],
|
|
385
|
+
|
|
386
|
+
beforeUpdate: [new GrandChildCheckInfoUpdateTrigger()],
|
|
387
|
+
afterUpdate: [new GrandChildCheckInfoUpdateTrigger()],
|
|
388
|
+
},
|
|
389
|
+
};
|
|
357
390
|
}
|
|
358
391
|
}
|
|
359
392
|
|
|
360
393
|
const parentEntityConfiguration = new EntityConfiguration<ParentFields>({
|
|
361
394
|
idField: 'id',
|
|
362
395
|
tableName: 'parents',
|
|
363
|
-
|
|
396
|
+
inboundEdges: [ChildEntity],
|
|
364
397
|
schema: {
|
|
365
398
|
id: new UUIDField({
|
|
366
399
|
columnName: 'id',
|
|
@@ -374,7 +407,7 @@ const makeEntityClasses = (edgeDeletionBehavior: EntityEdgeDeletionBehavior) =>
|
|
|
374
407
|
const childEntityConfiguration = new EntityConfiguration<ChildFields>({
|
|
375
408
|
idField: 'id',
|
|
376
409
|
tableName: 'children',
|
|
377
|
-
|
|
410
|
+
inboundEdges: [GrandChildEntity],
|
|
378
411
|
schema: {
|
|
379
412
|
id: new UUIDField({
|
|
380
413
|
columnName: 'id',
|
|
@@ -384,7 +417,7 @@ const makeEntityClasses = (edgeDeletionBehavior: EntityEdgeDeletionBehavior) =>
|
|
|
384
417
|
columnName: 'parent_id',
|
|
385
418
|
cache: true,
|
|
386
419
|
association: {
|
|
387
|
-
|
|
420
|
+
associatedEntityClass: ParentEntity,
|
|
388
421
|
edgeDeletionBehavior,
|
|
389
422
|
},
|
|
390
423
|
}),
|
|
@@ -405,7 +438,7 @@ const makeEntityClasses = (edgeDeletionBehavior: EntityEdgeDeletionBehavior) =>
|
|
|
405
438
|
columnName: 'parent_id',
|
|
406
439
|
cache: true,
|
|
407
440
|
association: {
|
|
408
|
-
|
|
441
|
+
associatedEntityClass: ChildEntity,
|
|
409
442
|
edgeDeletionBehavior,
|
|
410
443
|
},
|
|
411
444
|
}),
|
|
@@ -414,45 +447,6 @@ const makeEntityClasses = (edgeDeletionBehavior: EntityEdgeDeletionBehavior) =>
|
|
|
414
447
|
cacheAdapterFlavor: 'redis',
|
|
415
448
|
});
|
|
416
449
|
|
|
417
|
-
const parentEntityCompanion = new EntityCompanionDefinition({
|
|
418
|
-
entityClass: ParentEntity,
|
|
419
|
-
entityConfiguration: parentEntityConfiguration,
|
|
420
|
-
privacyPolicyClass: TestEntityPrivacyPolicy,
|
|
421
|
-
mutationTriggers: () => ({
|
|
422
|
-
beforeDelete: [new ParentCheckInfoDeletionTrigger()],
|
|
423
|
-
afterDelete: [new ParentCheckInfoDeletionTrigger()],
|
|
424
|
-
|
|
425
|
-
beforeUpdate: [new ParentCheckInfoUpdateTrigger()],
|
|
426
|
-
afterUpdate: [new ParentCheckInfoUpdateTrigger()],
|
|
427
|
-
}),
|
|
428
|
-
});
|
|
429
|
-
|
|
430
|
-
const childEntityCompanion = new EntityCompanionDefinition({
|
|
431
|
-
entityClass: ChildEntity,
|
|
432
|
-
entityConfiguration: childEntityConfiguration,
|
|
433
|
-
privacyPolicyClass: TestEntityPrivacyPolicy,
|
|
434
|
-
mutationTriggers: () => ({
|
|
435
|
-
beforeDelete: [new ChildCheckInfoDeletionTrigger()],
|
|
436
|
-
afterDelete: [new ChildCheckInfoDeletionTrigger()],
|
|
437
|
-
|
|
438
|
-
beforeUpdate: [new ChildCheckInfoUpdateTrigger()],
|
|
439
|
-
afterUpdate: [new ChildCheckInfoUpdateTrigger()],
|
|
440
|
-
}),
|
|
441
|
-
});
|
|
442
|
-
|
|
443
|
-
const grandChildEntityCompanion = new EntityCompanionDefinition({
|
|
444
|
-
entityClass: GrandChildEntity,
|
|
445
|
-
entityConfiguration: grandChildEntityConfiguration,
|
|
446
|
-
privacyPolicyClass: TestEntityPrivacyPolicy,
|
|
447
|
-
mutationTriggers: () => ({
|
|
448
|
-
beforeDelete: [new GrandChildCheckInfoDeletionTrigger()],
|
|
449
|
-
afterDelete: [new GrandChildCheckInfoDeletionTrigger()],
|
|
450
|
-
|
|
451
|
-
beforeUpdate: [new GrandChildCheckInfoUpdateTrigger()],
|
|
452
|
-
afterUpdate: [new GrandChildCheckInfoUpdateTrigger()],
|
|
453
|
-
}),
|
|
454
|
-
});
|
|
455
|
-
|
|
456
450
|
return {
|
|
457
451
|
ParentEntity,
|
|
458
452
|
ChildEntity,
|
|
@@ -87,17 +87,22 @@ export default class TestEntity extends Entity<
|
|
|
87
87
|
ViewerContext,
|
|
88
88
|
TestFieldSelection
|
|
89
89
|
> {
|
|
90
|
-
constructor(
|
|
91
|
-
|
|
90
|
+
constructor(constructorParams: {
|
|
91
|
+
viewerContext: ViewerContext;
|
|
92
|
+
id: string;
|
|
93
|
+
databaseFields: Readonly<TestFields>;
|
|
94
|
+
selectedFields: Readonly<TestFields>;
|
|
95
|
+
}) {
|
|
96
|
+
if (constructorParams.selectedFields.id === ID_SENTINEL_THROW_LITERAL) {
|
|
92
97
|
// eslint-disable-next-line no-throw-literal,@typescript-eslint/no-throw-literal
|
|
93
98
|
throw 'hello';
|
|
94
|
-
} else if (
|
|
99
|
+
} else if (constructorParams.selectedFields.id === ID_SENTINEL_THROW_ERROR) {
|
|
95
100
|
throw new Error('world');
|
|
96
101
|
}
|
|
97
|
-
super(
|
|
102
|
+
super(constructorParams);
|
|
98
103
|
}
|
|
99
104
|
|
|
100
|
-
static
|
|
105
|
+
static defineCompanionDefinition(): EntityCompanionDefinition<
|
|
101
106
|
TestFields,
|
|
102
107
|
string,
|
|
103
108
|
ViewerContext,
|
|
@@ -105,16 +110,14 @@ export default class TestEntity extends Entity<
|
|
|
105
110
|
TestEntityPrivacyPolicy,
|
|
106
111
|
TestFieldSelection
|
|
107
112
|
> {
|
|
108
|
-
return
|
|
113
|
+
return {
|
|
114
|
+
entityClass: TestEntity,
|
|
115
|
+
entityConfiguration: testEntityConfiguration,
|
|
116
|
+
privacyPolicyClass: TestEntityPrivacyPolicy,
|
|
117
|
+
};
|
|
109
118
|
}
|
|
110
119
|
}
|
|
111
120
|
|
|
112
|
-
export const testEntityCompanion = new EntityCompanionDefinition({
|
|
113
|
-
entityClass: TestEntity,
|
|
114
|
-
entityConfiguration: testEntityConfiguration,
|
|
115
|
-
privacyPolicyClass: TestEntityPrivacyPolicy,
|
|
116
|
-
});
|
|
117
|
-
|
|
118
121
|
describe(EntityLoader, () => {
|
|
119
122
|
it('handles thrown errors and literals from constructor', async () => {
|
|
120
123
|
const viewerContext = instance(mock(ViewerContext));
|
|
@@ -158,6 +161,7 @@ describe(EntityLoader, () => {
|
|
|
158
161
|
privacyPolicyEvaluationContext,
|
|
159
162
|
testEntityConfiguration,
|
|
160
163
|
TestEntity,
|
|
164
|
+
/* entitySelectedFields */ undefined,
|
|
161
165
|
privacyPolicy,
|
|
162
166
|
dataManager,
|
|
163
167
|
metricsAdapter
|
|
@@ -75,6 +75,7 @@ describe(EntityLoader, () => {
|
|
|
75
75
|
privacyPolicyEvaluationContext,
|
|
76
76
|
testEntityConfiguration,
|
|
77
77
|
TestEntity,
|
|
78
|
+
/* entitySelectedFields */ undefined,
|
|
78
79
|
privacyPolicy,
|
|
79
80
|
dataManager,
|
|
80
81
|
metricsAdapter
|
|
@@ -177,6 +178,7 @@ describe(EntityLoader, () => {
|
|
|
177
178
|
privacyPolicyEvaluationContext,
|
|
178
179
|
testEntityConfiguration,
|
|
179
180
|
TestEntity,
|
|
181
|
+
/* entitySelectedFields */ undefined,
|
|
180
182
|
privacyPolicy,
|
|
181
183
|
dataManager,
|
|
182
184
|
metricsAdapter
|
|
@@ -275,6 +277,7 @@ describe(EntityLoader, () => {
|
|
|
275
277
|
privacyPolicyEvaluationContext,
|
|
276
278
|
testEntityConfiguration,
|
|
277
279
|
TestEntity,
|
|
280
|
+
/* entitySelectedFields */ undefined,
|
|
278
281
|
privacyPolicy,
|
|
279
282
|
dataManager,
|
|
280
283
|
metricsAdapter
|
|
@@ -353,6 +356,7 @@ describe(EntityLoader, () => {
|
|
|
353
356
|
privacyPolicyEvaluationContext,
|
|
354
357
|
testEntityConfiguration,
|
|
355
358
|
TestEntity,
|
|
359
|
+
/* entitySelectedFields */ undefined,
|
|
356
360
|
privacyPolicy,
|
|
357
361
|
dataManager,
|
|
358
362
|
metricsAdapter
|
|
@@ -385,6 +389,7 @@ describe(EntityLoader, () => {
|
|
|
385
389
|
privacyPolicyEvaluationContext,
|
|
386
390
|
testEntityConfiguration,
|
|
387
391
|
TestEntity,
|
|
392
|
+
/* entitySelectedFields */ undefined,
|
|
388
393
|
privacyPolicy,
|
|
389
394
|
dataManagerInstance,
|
|
390
395
|
metricsAdapter
|
|
@@ -412,6 +417,7 @@ describe(EntityLoader, () => {
|
|
|
412
417
|
privacyPolicyEvaluationContext,
|
|
413
418
|
testEntityConfiguration,
|
|
414
419
|
TestEntity,
|
|
420
|
+
/* entitySelectedFields */ undefined,
|
|
415
421
|
privacyPolicy,
|
|
416
422
|
dataManagerInstance,
|
|
417
423
|
metricsAdapter
|
|
@@ -442,6 +448,7 @@ describe(EntityLoader, () => {
|
|
|
442
448
|
privacyPolicyEvaluationContext,
|
|
443
449
|
testEntityConfiguration,
|
|
444
450
|
TestEntity,
|
|
451
|
+
/* entitySelectedFields */ undefined,
|
|
445
452
|
privacyPolicy,
|
|
446
453
|
dataManagerInstance,
|
|
447
454
|
metricsAdapter
|
|
@@ -486,6 +493,7 @@ describe(EntityLoader, () => {
|
|
|
486
493
|
privacyPolicyEvaluationContext,
|
|
487
494
|
testEntityConfiguration,
|
|
488
495
|
TestEntity,
|
|
496
|
+
/* entitySelectedFields */ undefined,
|
|
489
497
|
privacyPolicy,
|
|
490
498
|
dataManagerInstance,
|
|
491
499
|
metricsAdapter
|
|
@@ -519,6 +527,7 @@ describe(EntityLoader, () => {
|
|
|
519
527
|
privacyPolicyEvaluationContext,
|
|
520
528
|
testEntityConfiguration,
|
|
521
529
|
TestEntity,
|
|
530
|
+
/* entitySelectedFields */ undefined,
|
|
522
531
|
privacyPolicy,
|
|
523
532
|
dataManagerInstance,
|
|
524
533
|
metricsAdapter
|
|
@@ -34,37 +34,35 @@ class BlahEntityPrivacyPolicy extends EntityPrivacyPolicy<
|
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
class BlahEntity extends Entity<BlahFields, string, ViewerContext> {
|
|
37
|
-
static
|
|
37
|
+
static defineCompanionDefinition(): EntityCompanionDefinition<
|
|
38
38
|
BlahFields,
|
|
39
39
|
string,
|
|
40
40
|
ViewerContext,
|
|
41
41
|
BlahEntity,
|
|
42
42
|
BlahEntityPrivacyPolicy
|
|
43
43
|
> {
|
|
44
|
-
return
|
|
44
|
+
return {
|
|
45
|
+
entityClass: BlahEntity,
|
|
46
|
+
entityConfiguration: new EntityConfiguration<BlahFields>({
|
|
47
|
+
idField: 'id',
|
|
48
|
+
tableName: 'blah_table',
|
|
49
|
+
schema: {
|
|
50
|
+
id: new UUIDField({
|
|
51
|
+
columnName: 'id',
|
|
52
|
+
cache: true,
|
|
53
|
+
}),
|
|
54
|
+
},
|
|
55
|
+
databaseAdapterFlavor: 'postgres',
|
|
56
|
+
cacheAdapterFlavor: 'redis',
|
|
57
|
+
}),
|
|
58
|
+
privacyPolicyClass: BlahEntityPrivacyPolicy,
|
|
59
|
+
mutationTriggers: {
|
|
60
|
+
afterCommit: [new TestNonTransactionalMutationTrigger()],
|
|
61
|
+
},
|
|
62
|
+
};
|
|
45
63
|
}
|
|
46
64
|
}
|
|
47
65
|
|
|
48
|
-
const blahCompanion = new EntityCompanionDefinition({
|
|
49
|
-
entityClass: BlahEntity,
|
|
50
|
-
entityConfiguration: new EntityConfiguration<BlahFields>({
|
|
51
|
-
idField: 'id',
|
|
52
|
-
tableName: 'blah_table',
|
|
53
|
-
schema: {
|
|
54
|
-
id: new UUIDField({
|
|
55
|
-
columnName: 'id',
|
|
56
|
-
cache: true,
|
|
57
|
-
}),
|
|
58
|
-
},
|
|
59
|
-
databaseAdapterFlavor: 'postgres',
|
|
60
|
-
cacheAdapterFlavor: 'redis',
|
|
61
|
-
}),
|
|
62
|
-
privacyPolicyClass: BlahEntityPrivacyPolicy,
|
|
63
|
-
mutationTriggers: () => ({
|
|
64
|
-
afterCommit: [new TestNonTransactionalMutationTrigger()],
|
|
65
|
-
}),
|
|
66
|
-
});
|
|
67
|
-
|
|
68
66
|
class TestNonTransactionalMutationTrigger extends EntityNonTransactionalMutationTrigger<
|
|
69
67
|
BlahFields,
|
|
70
68
|
string,
|