@expo/entity 0.16.0 → 0.20.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.
Files changed (210) hide show
  1. package/build/EnforcingEntityLoader.js +2 -2
  2. package/build/EnforcingEntityLoader.js.map +1 -1
  3. package/build/Entity.js +8 -2
  4. package/build/Entity.js.map +1 -1
  5. package/build/EntityAssociationLoader.js +3 -3
  6. package/build/EntityAssociationLoader.js.map +1 -1
  7. package/build/EntityCompanion.d.ts +5 -0
  8. package/build/EntityCompanion.js +8 -1
  9. package/build/EntityCompanion.js.map +1 -1
  10. package/build/EntityCompanionProvider.d.ts +1 -1
  11. package/build/EntityCompanionProvider.js +5 -5
  12. package/build/EntityCompanionProvider.js.map +1 -1
  13. package/build/EntityConfiguration.d.ts +1 -1
  14. package/build/EntityConfiguration.js +3 -3
  15. package/build/EntityConfiguration.js.map +1 -1
  16. package/build/EntityDatabaseAdapter.d.ts +4 -4
  17. package/build/EntityDatabaseAdapter.js +13 -13
  18. package/build/EntityDatabaseAdapter.js.map +1 -1
  19. package/build/EntityFieldDefinition.d.ts +77 -0
  20. package/build/EntityFieldDefinition.js +53 -0
  21. package/build/EntityFieldDefinition.js.map +1 -0
  22. package/build/EntityFields.d.ts +5 -78
  23. package/build/EntityFields.js +19 -61
  24. package/build/EntityFields.js.map +1 -1
  25. package/build/EntityLoader.d.ts +3 -1
  26. package/build/EntityLoader.js +19 -15
  27. package/build/EntityLoader.js.map +1 -1
  28. package/build/EntityLoaderFactory.d.ts +3 -1
  29. package/build/EntityLoaderFactory.js +3 -2
  30. package/build/EntityLoaderFactory.js.map +1 -1
  31. package/build/EntityMutationInfo.d.ts +26 -0
  32. package/build/EntityMutationInfo.js +10 -0
  33. package/build/EntityMutationInfo.js.map +1 -0
  34. package/build/EntityMutationTriggerConfiguration.d.ts +4 -4
  35. package/build/EntityMutationValidator.d.ts +3 -3
  36. package/build/EntityMutationValidator.js.map +1 -1
  37. package/build/EntityMutator.d.ts +5 -16
  38. package/build/EntityMutator.js +62 -58
  39. package/build/EntityMutator.js.map +1 -1
  40. package/build/EntityPrivacyPolicy.d.ts +5 -4
  41. package/build/EntityPrivacyPolicy.js +60 -12
  42. package/build/EntityPrivacyPolicy.js.map +1 -1
  43. package/build/EntityQueryContext.d.ts +13 -0
  44. package/build/EntityQueryContext.js +18 -0
  45. package/build/EntityQueryContext.js.map +1 -1
  46. package/build/EntitySecondaryCacheLoader.js +2 -2
  47. package/build/EntitySecondaryCacheLoader.js.map +1 -1
  48. package/build/ReadonlyEntity.js +3 -4
  49. package/build/ReadonlyEntity.js.map +1 -1
  50. package/build/ViewerScopedEntityCompanion.d.ts +5 -0
  51. package/build/ViewerScopedEntityCompanion.js +6 -0
  52. package/build/ViewerScopedEntityCompanion.js.map +1 -1
  53. package/build/__tests__/EnforcingEntityLoader-test.js +82 -82
  54. package/build/__tests__/EnforcingEntityLoader-test.js.map +1 -1
  55. package/build/__tests__/Entity-test.js +6 -6
  56. package/build/__tests__/Entity-test.js.map +1 -1
  57. package/build/__tests__/EntityAssociationLoader-test.js +40 -40
  58. package/build/__tests__/EntityAssociationLoader-test.js.map +1 -1
  59. package/build/__tests__/EntityCommonUseCases-test.js +11 -11
  60. package/build/__tests__/EntityCommonUseCases-test.js.map +1 -1
  61. package/build/__tests__/EntityCompanion-test.js +3 -3
  62. package/build/__tests__/EntityCompanion-test.js.map +1 -1
  63. package/build/__tests__/EntityCompanionProvider-test.js +1 -1
  64. package/build/__tests__/EntityCompanionProvider-test.js.map +1 -1
  65. package/build/__tests__/EntityDatabaseAdapter-test.js +12 -12
  66. package/build/__tests__/EntityDatabaseAdapter-test.js.map +1 -1
  67. package/build/__tests__/EntityEdges-test.js +103 -6
  68. package/build/__tests__/EntityEdges-test.js.map +1 -1
  69. package/build/__tests__/EntityFields-test.js +18 -26
  70. package/build/__tests__/EntityFields-test.js.map +1 -1
  71. package/build/__tests__/EntityLoader-constructor-test.d.ts +22 -0
  72. package/build/__tests__/EntityLoader-constructor-test.js +111 -0
  73. package/build/__tests__/EntityLoader-constructor-test.js.map +1 -0
  74. package/build/__tests__/EntityLoader-test.js +81 -73
  75. package/build/__tests__/EntityLoader-test.js.map +1 -1
  76. package/build/__tests__/EntityMutator-MutationCacheConsistency-test.d.ts +1 -0
  77. package/build/__tests__/EntityMutator-MutationCacheConsistency-test.js +81 -0
  78. package/build/__tests__/EntityMutator-MutationCacheConsistency-test.js.map +1 -0
  79. package/build/__tests__/EntityMutator-test.js +138 -136
  80. package/build/__tests__/EntityMutator-test.js.map +1 -1
  81. package/build/__tests__/EntityPrivacyPolicy-test.js +143 -67
  82. package/build/__tests__/EntityPrivacyPolicy-test.js.map +1 -1
  83. package/build/__tests__/EntitySecondaryCacheLoader-test.js +15 -15
  84. package/build/__tests__/EntitySecondaryCacheLoader-test.js.map +1 -1
  85. package/build/__tests__/EntitySelfReferentialEdges-test.js +13 -12
  86. package/build/__tests__/EntitySelfReferentialEdges-test.js.map +1 -1
  87. package/build/__tests__/ReadonlyEntity-test.js +12 -12
  88. package/build/__tests__/ReadonlyEntity-test.js.map +1 -1
  89. package/build/__tests__/ViewerContext-test.js +2 -2
  90. package/build/__tests__/ViewerContext-test.js.map +1 -1
  91. package/build/__tests__/ViewerScopedEntityCompanion-test.js +2 -2
  92. package/build/__tests__/ViewerScopedEntityCompanion-test.js.map +1 -1
  93. package/build/__tests__/ViewerScopedEntityCompanionProvider-test.js +2 -2
  94. package/build/__tests__/ViewerScopedEntityCompanionProvider-test.js.map +1 -1
  95. package/build/__tests__/ViewerScopedEntityLoaderFactory-test.js +5 -5
  96. package/build/__tests__/ViewerScopedEntityLoaderFactory-test.js.map +1 -1
  97. package/build/__tests__/ViewerScopedEntityMutatorFactory-test.js +5 -5
  98. package/build/__tests__/ViewerScopedEntityMutatorFactory-test.js.map +1 -1
  99. package/build/__tests__/cases/TwoEntitySameTableDisjointRows-test.js +5 -5
  100. package/build/__tests__/cases/TwoEntitySameTableDisjointRows-test.js.map +1 -1
  101. package/build/__tests__/cases/TwoEntitySameTableOverlappingRows-test.js +2 -2
  102. package/build/__tests__/cases/TwoEntitySameTableOverlappingRows-test.js.map +1 -1
  103. package/build/__tests__/entityUtils-test.js +21 -21
  104. package/build/__tests__/entityUtils-test.js.map +1 -1
  105. package/build/index.d.ts +3 -0
  106. package/build/index.js +5 -1
  107. package/build/index.js.map +1 -1
  108. package/build/internal/EntityDataManager.js +8 -7
  109. package/build/internal/EntityDataManager.js.map +1 -1
  110. package/build/internal/EntityFieldTransformationUtils.js +2 -2
  111. package/build/internal/EntityFieldTransformationUtils.js.map +1 -1
  112. package/build/internal/ReadThroughEntityCache.js +4 -4
  113. package/build/internal/ReadThroughEntityCache.js.map +1 -1
  114. package/build/internal/__tests__/EntityDataManager-test.js +21 -21
  115. package/build/internal/__tests__/EntityDataManager-test.js.map +1 -1
  116. package/build/internal/__tests__/EntityFieldTransformationUtils-test.js +8 -8
  117. package/build/internal/__tests__/EntityFieldTransformationUtils-test.js.map +1 -1
  118. package/build/internal/__tests__/ReadThroughEntityCache-test.js +48 -48
  119. package/build/internal/__tests__/ReadThroughEntityCache-test.js.map +1 -1
  120. package/build/metrics/EntityMetricsUtils.js +1 -1
  121. package/build/metrics/EntityMetricsUtils.js.map +1 -1
  122. package/build/metrics/IEntityMetricsAdapter.d.ts +16 -0
  123. package/build/metrics/IEntityMetricsAdapter.js +6 -1
  124. package/build/metrics/IEntityMetricsAdapter.js.map +1 -1
  125. package/build/metrics/NoOpEntityMetricsAdapter.d.ts +2 -1
  126. package/build/metrics/NoOpEntityMetricsAdapter.js +1 -0
  127. package/build/metrics/NoOpEntityMetricsAdapter.js.map +1 -1
  128. package/build/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.js +4 -4
  129. package/build/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.js.map +1 -1
  130. package/build/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.js +4 -4
  131. package/build/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.js.map +1 -1
  132. package/build/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.js +4 -4
  133. package/build/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.js.map +1 -1
  134. package/build/testfixtures/DateIDTestEntity.js.map +1 -1
  135. package/build/testfixtures/SimpleTestEntity.js.map +1 -1
  136. package/build/testfixtures/TestEntity.d.ts +6 -6
  137. package/build/testfixtures/TestEntity.js +4 -4
  138. package/build/testfixtures/TestEntity.js.map +1 -1
  139. package/build/testfixtures/TestEntity2.d.ts +5 -5
  140. package/build/testfixtures/TestEntity2.js.map +1 -1
  141. package/build/testfixtures/TestEntityNumberKey.js +1 -1
  142. package/build/testfixtures/TestEntityNumberKey.js.map +1 -1
  143. package/build/utils/collections/__tests__/maps-test.js +13 -13
  144. package/build/utils/collections/__tests__/maps-test.js.map +1 -1
  145. package/build/utils/collections/maps.js +1 -1
  146. package/build/utils/collections/maps.js.map +1 -1
  147. package/build/utils/testing/PrivacyPolicyRuleTestUtils.d.ts +6 -6
  148. package/build/utils/testing/PrivacyPolicyRuleTestUtils.js +1 -1
  149. package/build/utils/testing/PrivacyPolicyRuleTestUtils.js.map +1 -1
  150. package/build/utils/testing/StubCacheAdapter.js +1 -1
  151. package/build/utils/testing/StubCacheAdapter.js.map +1 -1
  152. package/build/utils/testing/StubDatabaseAdapter.js +7 -7
  153. package/build/utils/testing/StubDatabaseAdapter.js.map +1 -1
  154. package/build/utils/testing/__tests__/StubDatabaseAdapter-test.js +26 -26
  155. package/build/utils/testing/__tests__/StubDatabaseAdapter-test.js.map +1 -1
  156. package/build/utils/testing/describeFieldTestCase.d.ts +2 -0
  157. package/build/utils/testing/describeFieldTestCase.js +18 -0
  158. package/build/utils/testing/describeFieldTestCase.js.map +1 -0
  159. package/package.json +2 -1
  160. package/src/Entity.ts +10 -2
  161. package/src/EntityAssociationLoader.ts +1 -1
  162. package/src/EntityCompanion.ts +10 -2
  163. package/src/EntityCompanionProvider.ts +5 -9
  164. package/src/EntityConfiguration.ts +1 -1
  165. package/src/EntityDatabaseAdapter.ts +10 -8
  166. package/src/EntityFieldDefinition.ts +124 -0
  167. package/src/EntityFields.ts +11 -126
  168. package/src/EntityLoader.ts +12 -4
  169. package/src/EntityLoaderFactory.ts +5 -2
  170. package/src/EntityMutationInfo.ts +47 -0
  171. package/src/EntityMutationTriggerConfiguration.ts +5 -5
  172. package/src/EntityMutationValidator.ts +10 -4
  173. package/src/EntityMutator.ts +98 -76
  174. package/src/EntityPrivacyPolicy.ts +77 -19
  175. package/src/EntityQueryContext.ts +20 -0
  176. package/src/ReadonlyEntity.ts +3 -2
  177. package/src/ViewerScopedEntityCompanion.ts +8 -0
  178. package/src/__tests__/Entity-test.ts +8 -8
  179. package/src/__tests__/EntityCommonUseCases-test.ts +4 -4
  180. package/src/__tests__/EntityEdges-test.ts +169 -14
  181. package/src/__tests__/EntityFields-test.ts +6 -23
  182. package/src/__tests__/EntityLoader-constructor-test.ts +177 -0
  183. package/src/__tests__/EntityLoader-test.ts +48 -20
  184. package/src/__tests__/EntityMutator-MutationCacheConsistency-test.ts +105 -0
  185. package/src/__tests__/EntityMutator-test.ts +153 -146
  186. package/src/__tests__/EntityPrivacyPolicy-test.ts +215 -78
  187. package/src/__tests__/EntitySecondaryCacheLoader-test.ts +7 -9
  188. package/src/__tests__/EntitySelfReferentialEdges-test.ts +6 -5
  189. package/src/__tests__/ReadonlyEntity-test.ts +1 -1
  190. package/src/__tests__/ViewerContext-test.ts +7 -6
  191. package/src/__tests__/ViewerScopedEntityCompanion-test.ts +11 -10
  192. package/src/__tests__/ViewerScopedEntityMutatorFactory-test.ts +4 -3
  193. package/src/__tests__/cases/TwoEntitySameTableDisjointRows-test.ts +6 -6
  194. package/src/__tests__/cases/TwoEntitySameTableOverlappingRows-test.ts +4 -4
  195. package/src/index.ts +3 -0
  196. package/src/internal/EntityDataManager.ts +2 -1
  197. package/src/internal/__tests__/EntityDataManager-test.ts +6 -6
  198. package/src/internal/__tests__/ReadThroughEntityCache-test.ts +15 -13
  199. package/src/metrics/EntityMetricsUtils.ts +56 -50
  200. package/src/metrics/IEntityMetricsAdapter.ts +23 -0
  201. package/src/metrics/NoOpEntityMetricsAdapter.ts +2 -0
  202. package/src/testfixtures/DateIDTestEntity.ts +4 -4
  203. package/src/testfixtures/SimpleTestEntity.ts +4 -4
  204. package/src/testfixtures/TestEntity.ts +8 -8
  205. package/src/testfixtures/TestEntity2.ts +4 -4
  206. package/src/testfixtures/TestEntityNumberKey.ts +6 -6
  207. package/src/utils/testing/StubDatabaseAdapter.ts +4 -4
  208. package/src/utils/testing/__tests__/StubDatabaseAdapter-test.ts +18 -18
  209. package/src/utils/testing/describeFieldTestCase.ts +21 -0
  210. package/CHANGELOG.md +0 -241
@@ -6,7 +6,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const Entity_1 = __importDefault(require("../Entity"));
7
7
  const EntityCompanionProvider_1 = require("../EntityCompanionProvider");
8
8
  const EntityConfiguration_1 = __importDefault(require("../EntityConfiguration"));
9
+ const EntityFieldDefinition_1 = require("../EntityFieldDefinition");
9
10
  const EntityFields_1 = require("../EntityFields");
11
+ const EntityMutationInfo_1 = require("../EntityMutationInfo");
12
+ const EntityMutationTriggerConfiguration_1 = require("../EntityMutationTriggerConfiguration");
10
13
  const EntityPrivacyPolicy_1 = __importDefault(require("../EntityPrivacyPolicy"));
11
14
  const ReadThroughEntityCache_1 = require("../internal/ReadThroughEntityCache");
12
15
  const AlwaysAllowPrivacyPolicyRule_1 = __importDefault(require("../rules/AlwaysAllowPrivacyPolicyRule"));
@@ -31,6 +34,68 @@ class TestEntityPrivacyPolicy extends EntityPrivacyPolicy_1.default {
31
34
  }
32
35
  // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
33
36
  const makeEntityClasses = (edgeDeletionBehavior) => {
37
+ const triggerExecutionCounts = {
38
+ parent: 0,
39
+ child: 0,
40
+ grandchild: 0,
41
+ };
42
+ class ParentCheckInfoTrigger extends EntityMutationTriggerConfiguration_1.EntityMutationTrigger {
43
+ async executeAsync(_viewerContext, _queryContext, _entity, mutationInfo) {
44
+ if (mutationInfo.type !== EntityMutationInfo_1.EntityMutationType.DELETE) {
45
+ return;
46
+ }
47
+ if (mutationInfo.cascadingDeleteCause !== null) {
48
+ throw new Error('Parent entity should not have casade delete cause');
49
+ }
50
+ triggerExecutionCounts.parent++;
51
+ }
52
+ }
53
+ class ChildCheckInfoTrigger extends EntityMutationTriggerConfiguration_1.EntityMutationTrigger {
54
+ async executeAsync(_viewerContext, _queryContext, _entity, mutationInfo) {
55
+ if (mutationInfo.type !== EntityMutationInfo_1.EntityMutationType.DELETE) {
56
+ return;
57
+ }
58
+ if (mutationInfo.cascadingDeleteCause === null) {
59
+ throw new Error('Child entity should have casade delete cause');
60
+ }
61
+ const cascadingDeleteCauseEntity = mutationInfo.cascadingDeleteCause.entity;
62
+ if (!(cascadingDeleteCauseEntity instanceof ParentEntity)) {
63
+ throw new Error('Child entity should have casade delete cause entity of type ParentEntity');
64
+ }
65
+ const secondLevelCascadingDeleteCause = mutationInfo.cascadingDeleteCause.cascadingDeleteCause;
66
+ if (secondLevelCascadingDeleteCause) {
67
+ throw new Error('Child entity should not have two-level casade delete cause');
68
+ }
69
+ triggerExecutionCounts.child++;
70
+ }
71
+ }
72
+ class GrandChildCheckInfoTrigger extends EntityMutationTriggerConfiguration_1.EntityMutationTrigger {
73
+ async executeAsync(_viewerContext, _queryContext, _entity, mutationInfo) {
74
+ if (mutationInfo.type !== EntityMutationInfo_1.EntityMutationType.DELETE) {
75
+ return;
76
+ }
77
+ if (mutationInfo.cascadingDeleteCause === null) {
78
+ throw new Error('GrandChild entity should have cascade delete cause');
79
+ }
80
+ const cascadingDeleteCauseEntity = mutationInfo.cascadingDeleteCause.entity;
81
+ if (!(cascadingDeleteCauseEntity instanceof ChildEntity)) {
82
+ throw new Error('GrandChild entity should have cascade delete cause entity of type ChildEntity');
83
+ }
84
+ const secondLevelCascadingDeleteCause = mutationInfo.cascadingDeleteCause.cascadingDeleteCause;
85
+ if (!secondLevelCascadingDeleteCause) {
86
+ throw new Error('GrandChild entity should have two-level casade delete cause');
87
+ }
88
+ const secondLevelCascadingDeleteCauseEntity = secondLevelCascadingDeleteCause.entity;
89
+ if (!(secondLevelCascadingDeleteCauseEntity instanceof ParentEntity)) {
90
+ throw new Error('GrandChild entity should have second level casade delete cause entity of type ParentEntity');
91
+ }
92
+ const thirdLevelCascadingDeleteCause = secondLevelCascadingDeleteCause.cascadingDeleteCause;
93
+ if (thirdLevelCascadingDeleteCause) {
94
+ throw new Error('GrandChild entity should not have three-level casade delete cause');
95
+ }
96
+ triggerExecutionCounts.grandchild++;
97
+ }
98
+ }
34
99
  class ParentEntity extends Entity_1.default {
35
100
  static getCompanionDefinition() {
36
101
  return parentEntityCompanion;
@@ -104,28 +169,41 @@ const makeEntityClasses = (edgeDeletionBehavior) => {
104
169
  entityClass: ParentEntity,
105
170
  entityConfiguration: parentEntityConfiguration,
106
171
  privacyPolicyClass: TestEntityPrivacyPolicy,
172
+ mutationTriggers: () => ({
173
+ beforeDelete: [new ParentCheckInfoTrigger()],
174
+ afterDelete: [new ParentCheckInfoTrigger()],
175
+ }),
107
176
  });
108
177
  const childEntityCompanion = new EntityCompanionProvider_1.EntityCompanionDefinition({
109
178
  entityClass: ChildEntity,
110
179
  entityConfiguration: childEntityConfiguration,
111
180
  privacyPolicyClass: TestEntityPrivacyPolicy,
181
+ mutationTriggers: () => ({
182
+ beforeDelete: [new ChildCheckInfoTrigger()],
183
+ afterDelete: [new ChildCheckInfoTrigger()],
184
+ }),
112
185
  });
113
186
  const grandChildEntityCompanion = new EntityCompanionProvider_1.EntityCompanionDefinition({
114
187
  entityClass: GrandChildEntity,
115
188
  entityConfiguration: grandChildEntityConfiguration,
116
189
  privacyPolicyClass: TestEntityPrivacyPolicy,
190
+ mutationTriggers: () => ({
191
+ beforeDelete: [new GrandChildCheckInfoTrigger()],
192
+ afterDelete: [new GrandChildCheckInfoTrigger()],
193
+ }),
117
194
  });
118
195
  return {
119
196
  ParentEntity,
120
197
  ChildEntity,
121
198
  GrandChildEntity,
199
+ triggerExecutionCounts,
122
200
  };
123
201
  };
124
202
  describe('EntityMutator.processEntityDeletionForInboundEdgesAsync', () => {
125
203
  describe('EntityEdgeDeletionBehavior.CASCADE_DELETE', () => {
126
204
  it('deletes', async () => {
127
- const { ParentEntity, ChildEntity, GrandChildEntity } = makeEntityClasses(EntityFields_1.EntityEdgeDeletionBehavior.CASCADE_DELETE);
128
- const companionProvider = createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider();
205
+ const { ParentEntity, ChildEntity, GrandChildEntity, triggerExecutionCounts } = makeEntityClasses(EntityFieldDefinition_1.EntityEdgeDeletionBehavior.CASCADE_DELETE);
206
+ const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
129
207
  const viewerContext = new TestViewerContext_1.default(companionProvider);
130
208
  const parent = await ParentEntity.creator(viewerContext).enforceCreateAsync();
131
209
  const child = await ChildEntity.creator(viewerContext)
@@ -141,12 +219,18 @@ describe('EntityMutator.processEntityDeletionForInboundEdgesAsync', () => {
141
219
  await expect(ParentEntity.loader(viewerContext).enforcing().loadByIDNullableAsync(parent.getID())).resolves.toBeNull();
142
220
  await expect(ChildEntity.loader(viewerContext).enforcing().loadByIDNullableAsync(child.getID())).resolves.toBeNull();
143
221
  await expect(GrandChildEntity.loader(viewerContext).enforcing().loadByIDNullableAsync(grandchild.getID())).resolves.toBeNull();
222
+ // two calls for each trigger, one beforeDelete, one afterDelete
223
+ expect(triggerExecutionCounts).toMatchObject({
224
+ parent: 2,
225
+ child: 2,
226
+ grandchild: 2,
227
+ });
144
228
  });
145
229
  });
146
230
  describe('EntityEdgeDeletionBehavior.SET_NULL', () => {
147
231
  it('sets null', async () => {
148
- const { ParentEntity, ChildEntity, GrandChildEntity } = makeEntityClasses(EntityFields_1.EntityEdgeDeletionBehavior.SET_NULL);
149
- const companionProvider = createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider();
232
+ const { ParentEntity, ChildEntity, GrandChildEntity, triggerExecutionCounts } = makeEntityClasses(EntityFieldDefinition_1.EntityEdgeDeletionBehavior.SET_NULL);
233
+ const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
150
234
  const viewerContext = new TestViewerContext_1.default(companionProvider);
151
235
  const parent = await ParentEntity.creator(viewerContext).enforceCreateAsync();
152
236
  const child = await ChildEntity.creator(viewerContext)
@@ -168,13 +252,20 @@ describe('EntityMutator.processEntityDeletionForInboundEdgesAsync', () => {
168
252
  .enforcing()
169
253
  .loadByIDAsync(grandchild.getID());
170
254
  expect(loadedGrandchild.getField('parent_id')).toEqual(loadedChild.getID());
255
+ // two calls for only parent trigger, one beforeDelete, one afterDelete
256
+ // when using set null the descendants aren't deleted
257
+ expect(triggerExecutionCounts).toMatchObject({
258
+ parent: 2,
259
+ child: 0,
260
+ grandchild: 0,
261
+ });
171
262
  });
172
263
  });
173
264
  describe('EntityEdgeDeletionBehavior.CASCADE_DELETE_INVALIDATE_CACHE', () => {
174
265
  it('invalidates the cache', async () => {
175
266
  var _a, _b, _c, _d;
176
- const { ParentEntity, ChildEntity, GrandChildEntity } = makeEntityClasses(EntityFields_1.EntityEdgeDeletionBehavior.CASCADE_DELETE_INVALIDATE_CACHE);
177
- const companionProvider = createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider();
267
+ const { ParentEntity, ChildEntity, GrandChildEntity, triggerExecutionCounts } = makeEntityClasses(EntityFieldDefinition_1.EntityEdgeDeletionBehavior.CASCADE_DELETE_INVALIDATE_CACHE);
268
+ const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
178
269
  const viewerContext = new TestViewerContext_1.default(companionProvider);
179
270
  const parent = await ParentEntity.creator(viewerContext).enforceCreateAsync();
180
271
  const child = await ChildEntity.creator(viewerContext)
@@ -210,6 +301,12 @@ describe('EntityMutator.processEntityDeletionForInboundEdgesAsync', () => {
210
301
  await expect(ParentEntity.loader(viewerContext).enforcing().loadByIDNullableAsync(parent.getID())).resolves.toBeNull();
211
302
  await expect(ChildEntity.loader(viewerContext).enforcing().loadByIDNullableAsync(child.getID())).resolves.not.toBeNull();
212
303
  await expect(GrandChildEntity.loader(viewerContext).enforcing().loadByIDNullableAsync(grandchild.getID())).resolves.not.toBeNull();
304
+ // two calls for each trigger, one beforeDelete, one afterDelete
305
+ expect(triggerExecutionCounts).toMatchObject({
306
+ parent: 2,
307
+ child: 2,
308
+ grandchild: 2,
309
+ });
213
310
  });
214
311
  });
215
312
  });
@@ -1 +1 @@
1
- {"version":3,"file":"EntityEdges-test.js","sourceRoot":"","sources":["../../src/__tests__/EntityEdges-test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EntityEdges-test.js","sourceRoot":"","sources":["../../src/__tests__/EntityEdges-test.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,18 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  const uuid_1 = require("uuid");
7
+ const EntityFieldDefinition_1 = require("../EntityFieldDefinition");
4
8
  const EntityFields_1 = require("../EntityFields");
5
- class TestFieldDefinition extends EntityFields_1.EntityFieldDefinition {
9
+ const describeFieldTestCase_1 = __importDefault(require("../utils/testing/describeFieldTestCase"));
10
+ class TestFieldDefinition extends EntityFieldDefinition_1.EntityFieldDefinition {
6
11
  validateInputValueInternal(value) {
7
12
  return value === 'helloworld';
8
13
  }
9
14
  }
10
- describe(EntityFields_1.EntityFieldDefinition, () => {
15
+ describe(EntityFieldDefinition_1.EntityFieldDefinition, () => {
11
16
  it('returns correct column name and defaults cache to false', () => {
12
17
  const fieldDefinition1 = new TestFieldDefinition({ columnName: 'wat' });
13
18
  expect(fieldDefinition1.columnName).toEqual('wat');
@@ -33,31 +38,18 @@ describe(EntityFields_1.EntityFieldDefinition, () => {
33
38
  expect(fieldDefinition.validateInputValue('helloworld')).toBe(true);
34
39
  });
35
40
  });
36
- const describeFieldTestCase = (fieldDefinition, validValues, invalidValues) => {
37
- describe(fieldDefinition.constructor.name, () => {
38
- if (validValues.length > 0) {
39
- test.each(validValues)(`${fieldDefinition.constructor.name}.valid %p`, (value) => {
40
- expect(fieldDefinition.validateInputValue(value)).toBe(true);
41
- });
42
- }
43
- if (invalidValues.length > 0) {
44
- test.each(invalidValues)(`${fieldDefinition.constructor.name}.invalid %p`, (value) => {
45
- expect(fieldDefinition.validateInputValue(value)).toBe(false);
46
- });
47
- }
48
- });
49
- };
50
- describeFieldTestCase(new EntityFields_1.StringField({ columnName: 'wat' }), ['hello', ''], [1, true, {}, [[]]]);
51
- describeFieldTestCase(new EntityFields_1.UUIDField({ columnName: 'wat' }), [uuid_1.v1(), uuid_1.v3('wat', uuid_1.v3.DNS), uuid_1.v4(), uuid_1.v5('wat', uuid_1.v5.DNS)], [uuid_1.v4().replace('-', ''), '', 'hello']);
52
- describeFieldTestCase(new EntityFields_1.DateField({ columnName: 'wat' }), [new Date()], [Date.now()]);
53
- describeFieldTestCase(new EntityFields_1.BooleanField({ columnName: 'wat' }), [true, false], [0, 1, '']);
54
- describeFieldTestCase(new EntityFields_1.NumberField({ columnName: 'wat' }), [1, 0.5, -0.5], ['1']);
55
- describeFieldTestCase(new EntityFields_1.StringArrayField({ columnName: 'wat' }), [[['what']], [[]]], // jest test cases need extra wrapping array
41
+ (0, describeFieldTestCase_1.default)(new EntityFields_1.StringField({ columnName: 'wat' }), ['hello', ''], [1, true, {}, [[]]]);
42
+ (0, describeFieldTestCase_1.default)(new EntityFields_1.UUIDField({ columnName: 'wat' }), [(0, uuid_1.v1)(), (0, uuid_1.v3)('wat', uuid_1.v3.DNS), (0, uuid_1.v4)(), (0, uuid_1.v5)('wat', uuid_1.v5.DNS)], [(0, uuid_1.v4)().replace('-', ''), '', 'hello']);
43
+ (0, describeFieldTestCase_1.default)(new EntityFields_1.DateField({ columnName: 'wat' }), [new Date()], [Date.now()]);
44
+ (0, describeFieldTestCase_1.default)(new EntityFields_1.BooleanField({ columnName: 'wat' }), [true, false], [0, 1, '']);
45
+ (0, describeFieldTestCase_1.default)(new EntityFields_1.IntField({ columnName: 'wat' }), [1], ['1', 0.5, true]);
46
+ (0, describeFieldTestCase_1.default)(new EntityFields_1.FloatField({ columnName: 'wat' }), [1, 0.5, -0.5], ['1']);
47
+ (0, describeFieldTestCase_1.default)(new EntityFields_1.StringArrayField({ columnName: 'wat' }), [[['what']], [[]]], // jest test cases need extra wrapping array
56
48
  ['hello']);
57
- describeFieldTestCase(new EntityFields_1.JSONObjectField({ columnName: 'wat' }), [{}], [true, 'hello']);
58
- describeFieldTestCase(new EntityFields_1.EnumField({ columnName: 'wat' }), ['hello', 1], [true]);
59
- describeFieldTestCase(new EntityFields_1.JSONArrayField({ columnName: 'wat' }), [[[1, 2]], [['hello']]], // jest test cases need extra wrapping array
49
+ (0, describeFieldTestCase_1.default)(new EntityFields_1.JSONObjectField({ columnName: 'wat' }), [{}], [true, 'hello']);
50
+ (0, describeFieldTestCase_1.default)(new EntityFields_1.EnumField({ columnName: 'wat' }), ['hello', 1], [true]);
51
+ (0, describeFieldTestCase_1.default)(new EntityFields_1.JSONArrayField({ columnName: 'wat' }), [[[1, 2]], [['hello']]], // jest test cases need extra wrapping array
60
52
  [1, 'hello']);
61
- describeFieldTestCase(new EntityFields_1.MaybeJSONArrayField({ columnName: 'wat' }), [1, 'hello', [['hello']]], // jest test cases need extra wrapping array
53
+ (0, describeFieldTestCase_1.default)(new EntityFields_1.MaybeJSONArrayField({ columnName: 'wat' }), [1, 'hello', [['hello']]], // jest test cases need extra wrapping array
62
54
  []);
63
55
  //# sourceMappingURL=EntityFields-test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EntityFields-test.js","sourceRoot":"","sources":["../../src/__tests__/EntityFields-test.ts"],"names":[],"mappings":";;AAAA,+BAA8E;AAE9E,kDAYyB;AAEzB,MAAM,mBAAoB,SAAQ,oCAA6B;IACnD,0BAA0B,CAAC,KAAa;QAChD,OAAO,KAAK,KAAK,YAAY,CAAC;IAChC,CAAC;CACF;AAED,QAAQ,CAAC,oCAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,gBAAgB,GAAG,IAAI,mBAAmB,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;QACxE,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACnD,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAE9C,MAAM,gBAAgB,GAAG,IAAI,mBAAmB,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACrF,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACnD,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACrD,MAAM,eAAe,GAAG,IAAI,mBAAmB,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACpF,MAAM,CAAC,eAAe,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,gDAAgD,EAAE,GAAG,EAAE;QAC1D,MAAM,eAAe,GAAG,IAAI,mBAAmB,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACpF,MAAM,CAAC,eAAe,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACzD,MAAM,eAAe,GAAG,IAAI,mBAAmB,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACpF,MAAM,CAAC,eAAe,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACtD,MAAM,eAAe,GAAG,IAAI,mBAAmB,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACpF,MAAM,CAAC,eAAe,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,MAAM,qBAAqB,GAAG,CAC5B,eAAyC,EACzC,WAAgB,EAChB,aAAoB,EACd,EAAE;IACR,QAAQ,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE;QAC9C,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YAC1B,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,eAAe,CAAC,WAAW,CAAC,IAAI,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE;gBAC/E,MAAM,CAAC,eAAe,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/D,CAAC,CAAC,CAAC;SACJ;QAED,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5B,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,eAAe,CAAC,WAAW,CAAC,IAAI,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE;gBACnF,MAAM,CAAC,eAAe,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChE,CAAC,CAAC,CAAC;SACJ;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,qBAAqB,CAAC,IAAI,0BAAW,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAClG,qBAAqB,CACnB,IAAI,wBAAS,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EACpC,CAAC,SAAM,EAAE,EAAE,SAAM,CAAC,KAAK,EAAE,SAAM,CAAC,GAAG,CAAC,EAAE,SAAM,EAAE,EAAE,SAAM,CAAC,KAAK,EAAE,SAAM,CAAC,GAAG,CAAC,CAAC,EAC1E,CAAC,SAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CACzC,CAAC;AACF,qBAAqB,CAAC,IAAI,wBAAS,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACxF,qBAAqB,CAAC,IAAI,2BAAY,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC1F,qBAAqB,CAAC,IAAI,0BAAW,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACrF,qBAAqB,CACnB,IAAI,+BAAgB,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAC3C,CAAC,CAAC,CAAC,MAAM,CAAC,CAAQ,EAAE,CAAC,EAAE,CAAQ,CAAC,EAAE,4CAA4C;AAC9E,CAAC,OAAO,CAAC,CACV,CAAC;AACF,qBAAqB,CAAC,IAAI,8BAAe,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;AACzF,qBAAqB,CAAC,IAAI,wBAAS,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AAClF,qBAAqB,CACnB,IAAI,6BAAc,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EACzC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,CAAQ,CAAC,EAAE,4CAA4C;AACnF,CAAC,CAAC,EAAE,OAAO,CAAC,CACb,CAAC;AACF,qBAAqB,CACnB,IAAI,kCAAmB,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAC9C,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,4CAA4C;AACvE,EAAE,CACH,CAAC"}
1
+ {"version":3,"file":"EntityFields-test.js","sourceRoot":"","sources":["../../src/__tests__/EntityFields-test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import Entity from '../Entity';
2
+ import { EntityCompanionDefinition } from '../EntityCompanionProvider';
3
+ import EntityConfiguration from '../EntityConfiguration';
4
+ import EntityPrivacyPolicy from '../EntityPrivacyPolicy';
5
+ import ViewerContext from '../ViewerContext';
6
+ import AlwaysAllowPrivacyPolicyRule from '../rules/AlwaysAllowPrivacyPolicyRule';
7
+ export declare type TestFields = {
8
+ id: string;
9
+ };
10
+ export declare type TestFieldSelection = keyof TestFields;
11
+ export declare const testEntityConfiguration: EntityConfiguration<TestFields>;
12
+ export declare class TestEntityPrivacyPolicy extends EntityPrivacyPolicy<TestFields, string, ViewerContext, TestEntity, TestFieldSelection> {
13
+ protected readonly readRules: AlwaysAllowPrivacyPolicyRule<TestFields, string, ViewerContext, TestEntity, "id">[];
14
+ protected readonly createRules: AlwaysAllowPrivacyPolicyRule<TestFields, string, ViewerContext, TestEntity, "id">[];
15
+ protected readonly updateRules: AlwaysAllowPrivacyPolicyRule<TestFields, string, ViewerContext, TestEntity, "id">[];
16
+ protected readonly deleteRules: AlwaysAllowPrivacyPolicyRule<TestFields, string, ViewerContext, TestEntity, "id">[];
17
+ }
18
+ export default class TestEntity extends Entity<TestFields, string, ViewerContext, TestFieldSelection> {
19
+ constructor(viewerContext: ViewerContext, rawFields: Readonly<TestFields>);
20
+ static getCompanionDefinition(): EntityCompanionDefinition<TestFields, string, ViewerContext, TestEntity, TestEntityPrivacyPolicy, TestFieldSelection>;
21
+ }
22
+ export declare const testEntityCompanion: EntityCompanionDefinition<TestFields, string, ViewerContext, TestEntity, TestEntityPrivacyPolicy, "id">;
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.testEntityCompanion = exports.TestEntityPrivacyPolicy = exports.testEntityConfiguration = void 0;
7
+ const ts_mockito_1 = require("ts-mockito");
8
+ const Entity_1 = __importDefault(require("../Entity"));
9
+ const EntityCompanionProvider_1 = require("../EntityCompanionProvider");
10
+ const EntityConfiguration_1 = __importDefault(require("../EntityConfiguration"));
11
+ const EntityFields_1 = require("../EntityFields");
12
+ const EntityLoader_1 = __importDefault(require("../EntityLoader"));
13
+ const EntityPrivacyPolicy_1 = __importDefault(require("../EntityPrivacyPolicy"));
14
+ const ViewerContext_1 = __importDefault(require("../ViewerContext"));
15
+ const EntityDataManager_1 = __importDefault(require("../internal/EntityDataManager"));
16
+ const ReadThroughEntityCache_1 = __importDefault(require("../internal/ReadThroughEntityCache"));
17
+ const AlwaysAllowPrivacyPolicyRule_1 = __importDefault(require("../rules/AlwaysAllowPrivacyPolicyRule"));
18
+ const StubCacheAdapter_1 = require("../utils/testing/StubCacheAdapter");
19
+ const StubDatabaseAdapter_1 = __importDefault(require("../utils/testing/StubDatabaseAdapter"));
20
+ const StubQueryContextProvider_1 = __importDefault(require("../utils/testing/StubQueryContextProvider"));
21
+ exports.testEntityConfiguration = new EntityConfiguration_1.default({
22
+ idField: 'id',
23
+ tableName: 'test_entity_should_not_write_to_db',
24
+ schema: {
25
+ id: new EntityFields_1.StringField({
26
+ columnName: 'id',
27
+ }),
28
+ },
29
+ databaseAdapterFlavor: 'postgres',
30
+ cacheAdapterFlavor: 'redis',
31
+ });
32
+ class TestEntityPrivacyPolicy extends EntityPrivacyPolicy_1.default {
33
+ constructor() {
34
+ super(...arguments);
35
+ this.readRules = [
36
+ new AlwaysAllowPrivacyPolicyRule_1.default(),
37
+ ];
38
+ this.createRules = [
39
+ new AlwaysAllowPrivacyPolicyRule_1.default(),
40
+ ];
41
+ this.updateRules = [
42
+ new AlwaysAllowPrivacyPolicyRule_1.default(),
43
+ ];
44
+ this.deleteRules = [
45
+ new AlwaysAllowPrivacyPolicyRule_1.default(),
46
+ ];
47
+ }
48
+ }
49
+ exports.TestEntityPrivacyPolicy = TestEntityPrivacyPolicy;
50
+ const ID_SENTINEL_THROW_LITERAL = 'throw_literal';
51
+ const ID_SENTINEL_THROW_ERROR = 'throw_error';
52
+ class TestEntity extends Entity_1.default {
53
+ constructor(viewerContext, rawFields) {
54
+ if (rawFields.id === ID_SENTINEL_THROW_LITERAL) {
55
+ // eslint-disable-next-line no-throw-literal,@typescript-eslint/no-throw-literal
56
+ throw 'hello';
57
+ }
58
+ else if (rawFields.id === ID_SENTINEL_THROW_ERROR) {
59
+ throw new Error('world');
60
+ }
61
+ super(viewerContext, rawFields);
62
+ }
63
+ static getCompanionDefinition() {
64
+ return exports.testEntityCompanion;
65
+ }
66
+ }
67
+ exports.default = TestEntity;
68
+ exports.testEntityCompanion = new EntityCompanionProvider_1.EntityCompanionDefinition({
69
+ entityClass: TestEntity,
70
+ entityConfiguration: exports.testEntityConfiguration,
71
+ privacyPolicyClass: TestEntityPrivacyPolicy,
72
+ });
73
+ describe(EntityLoader_1.default, () => {
74
+ it('handles thrown errors and literals from constructor', async () => {
75
+ const viewerContext = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)(ViewerContext_1.default));
76
+ const metricsAdapter = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)());
77
+ const queryContext = StubQueryContextProvider_1.default.getQueryContext();
78
+ const databaseAdapter = new StubDatabaseAdapter_1.default(exports.testEntityConfiguration, StubDatabaseAdapter_1.default.convertFieldObjectsToDataStore(exports.testEntityConfiguration, new Map([
79
+ [
80
+ exports.testEntityConfiguration.tableName,
81
+ [
82
+ {
83
+ id: ID_SENTINEL_THROW_LITERAL,
84
+ },
85
+ {
86
+ id: ID_SENTINEL_THROW_ERROR,
87
+ },
88
+ ],
89
+ ],
90
+ ])));
91
+ const privacyPolicy = new TestEntityPrivacyPolicy();
92
+ const cacheAdapterProvider = new StubCacheAdapter_1.NoCacheStubCacheAdapterProvider();
93
+ const cacheAdapter = cacheAdapterProvider.getCacheAdapter(exports.testEntityConfiguration);
94
+ const entityCache = new ReadThroughEntityCache_1.default(exports.testEntityConfiguration, cacheAdapter);
95
+ const dataManager = new EntityDataManager_1.default(databaseAdapter, entityCache, StubQueryContextProvider_1.default, metricsAdapter, TestEntity.name);
96
+ const entityLoader = new EntityLoader_1.default(viewerContext, queryContext, exports.testEntityConfiguration, TestEntity, privacyPolicy, dataManager, metricsAdapter);
97
+ let capturedThrownThing1;
98
+ try {
99
+ await entityLoader.loadByIDAsync(ID_SENTINEL_THROW_LITERAL);
100
+ }
101
+ catch (e) {
102
+ capturedThrownThing1 = e;
103
+ }
104
+ expect(capturedThrownThing1).not.toBeInstanceOf(Error);
105
+ expect(capturedThrownThing1).toEqual('hello');
106
+ const result = await entityLoader.loadByIDAsync(ID_SENTINEL_THROW_ERROR);
107
+ expect(result.ok).toBe(false);
108
+ expect(result.enforceError().message).toEqual('world');
109
+ });
110
+ });
111
+ //# sourceMappingURL=EntityLoader-constructor-test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntityLoader-constructor-test.js","sourceRoot":"","sources":["../../src/__tests__/EntityLoader-constructor-test.ts"],"names":[],"mappings":"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"}