@expo/entity 0.46.0 → 0.47.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 (216) hide show
  1. package/build/src/AuthorizationResultBasedEntityMutator.d.ts +5 -3
  2. package/build/src/AuthorizationResultBasedEntityMutator.js +75 -37
  3. package/build/src/AuthorizationResultBasedEntityMutator.js.map +1 -1
  4. package/build/src/EntityDeleter.js +1 -1
  5. package/build/src/EntityDeleter.js.map +1 -1
  6. package/build/src/EntityFields.d.ts +7 -0
  7. package/build/src/EntityFields.js +11 -1
  8. package/build/src/EntityFields.js.map +1 -1
  9. package/build/src/EntityMutatorFactory.d.ts +3 -2
  10. package/build/src/EntityMutatorFactory.js +4 -4
  11. package/build/src/EntityMutatorFactory.js.map +1 -1
  12. package/build/src/EntityUpdater.js +1 -1
  13. package/build/src/EntityUpdater.js.map +1 -1
  14. package/build/src/ViewerScopedEntityMutatorFactory.d.ts +3 -2
  15. package/build/src/ViewerScopedEntityMutatorFactory.js +4 -4
  16. package/build/src/ViewerScopedEntityMutatorFactory.js.map +1 -1
  17. package/package.json +5 -3
  18. package/src/AuthorizationResultBasedEntityMutator.ts +63 -49
  19. package/src/EntityDeleter.ts +1 -1
  20. package/src/EntityFields.ts +13 -0
  21. package/src/EntityMutatorFactory.ts +5 -0
  22. package/src/EntityUpdater.ts +1 -1
  23. package/src/ViewerScopedEntityMutatorFactory.ts +5 -2
  24. package/src/__tests__/EntityFields-test.ts +7 -0
  25. package/src/__tests__/EntityMutator-test.ts +217 -16
  26. package/LICENSE +0 -21
  27. package/build/src/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.d.ts +0 -1
  28. package/build/src/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.js +0 -240
  29. package/build/src/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.js.map +0 -1
  30. package/build/src/__tests__/AuthorizationResultBasedEntityLoader-constructor-test.d.ts +0 -26
  31. package/build/src/__tests__/AuthorizationResultBasedEntityLoader-constructor-test.js +0 -109
  32. package/build/src/__tests__/AuthorizationResultBasedEntityLoader-constructor-test.js.map +0 -1
  33. package/build/src/__tests__/AuthorizationResultBasedEntityLoader-test.d.ts +0 -1
  34. package/build/src/__tests__/AuthorizationResultBasedEntityLoader-test.js +0 -590
  35. package/build/src/__tests__/AuthorizationResultBasedEntityLoader-test.js.map +0 -1
  36. package/build/src/__tests__/ComposedCacheAdapter-test.d.ts +0 -1
  37. package/build/src/__tests__/ComposedCacheAdapter-test.js +0 -259
  38. package/build/src/__tests__/ComposedCacheAdapter-test.js.map +0 -1
  39. package/build/src/__tests__/ComposedSecondaryEntityCache-test.d.ts +0 -1
  40. package/build/src/__tests__/ComposedSecondaryEntityCache-test.js +0 -67
  41. package/build/src/__tests__/ComposedSecondaryEntityCache-test.js.map +0 -1
  42. package/build/src/__tests__/EnforcingEntityAssociationLoader-test.d.ts +0 -1
  43. package/build/src/__tests__/EnforcingEntityAssociationLoader-test.js +0 -113
  44. package/build/src/__tests__/EnforcingEntityAssociationLoader-test.js.map +0 -1
  45. package/build/src/__tests__/EnforcingEntityLoader-test.d.ts +0 -1
  46. package/build/src/__tests__/EnforcingEntityLoader-test.js +0 -316
  47. package/build/src/__tests__/EnforcingEntityLoader-test.js.map +0 -1
  48. package/build/src/__tests__/Entity-test.d.ts +0 -1
  49. package/build/src/__tests__/Entity-test.js +0 -92
  50. package/build/src/__tests__/Entity-test.js.map +0 -1
  51. package/build/src/__tests__/EntityAssociationLoader-test.d.ts +0 -1
  52. package/build/src/__tests__/EntityAssociationLoader-test.js +0 -28
  53. package/build/src/__tests__/EntityAssociationLoader-test.js.map +0 -1
  54. package/build/src/__tests__/EntityCommonUseCases-test.d.ts +0 -1
  55. package/build/src/__tests__/EntityCommonUseCases-test.js +0 -111
  56. package/build/src/__tests__/EntityCommonUseCases-test.js.map +0 -1
  57. package/build/src/__tests__/EntityCompanion-test.d.ts +0 -1
  58. package/build/src/__tests__/EntityCompanion-test.js +0 -42
  59. package/build/src/__tests__/EntityCompanion-test.js.map +0 -1
  60. package/build/src/__tests__/EntityCompanionProvider-test.d.ts +0 -1
  61. package/build/src/__tests__/EntityCompanionProvider-test.js +0 -53
  62. package/build/src/__tests__/EntityCompanionProvider-test.js.map +0 -1
  63. package/build/src/__tests__/EntityConfiguration-test.d.ts +0 -1
  64. package/build/src/__tests__/EntityConfiguration-test.js +0 -164
  65. package/build/src/__tests__/EntityConfiguration-test.js.map +0 -1
  66. package/build/src/__tests__/EntityDatabaseAdapter-test.d.ts +0 -1
  67. package/build/src/__tests__/EntityDatabaseAdapter-test.js +0 -189
  68. package/build/src/__tests__/EntityDatabaseAdapter-test.js.map +0 -1
  69. package/build/src/__tests__/EntityEdges-test.d.ts +0 -1
  70. package/build/src/__tests__/EntityEdges-test.js +0 -680
  71. package/build/src/__tests__/EntityEdges-test.js.map +0 -1
  72. package/build/src/__tests__/EntityFields-test.d.ts +0 -1
  73. package/build/src/__tests__/EntityFields-test.js +0 -61
  74. package/build/src/__tests__/EntityFields-test.js.map +0 -1
  75. package/build/src/__tests__/EntityLoader-test.d.ts +0 -1
  76. package/build/src/__tests__/EntityLoader-test.js +0 -34
  77. package/build/src/__tests__/EntityLoader-test.js.map +0 -1
  78. package/build/src/__tests__/EntityMutator-MutationCacheConsistency-test.d.ts +0 -1
  79. package/build/src/__tests__/EntityMutator-MutationCacheConsistency-test.js +0 -71
  80. package/build/src/__tests__/EntityMutator-MutationCacheConsistency-test.js.map +0 -1
  81. package/build/src/__tests__/EntityMutator-SingleCompositeFieldCacheConsistency-test.d.ts +0 -1
  82. package/build/src/__tests__/EntityMutator-SingleCompositeFieldCacheConsistency-test.js +0 -54
  83. package/build/src/__tests__/EntityMutator-SingleCompositeFieldCacheConsistency-test.js.map +0 -1
  84. package/build/src/__tests__/EntityMutator-test.d.ts +0 -1
  85. package/build/src/__tests__/EntityMutator-test.js +0 -721
  86. package/build/src/__tests__/EntityMutator-test.js.map +0 -1
  87. package/build/src/__tests__/EntityPrivacyPolicy-test.d.ts +0 -1
  88. package/build/src/__tests__/EntityPrivacyPolicy-test.js +0 -429
  89. package/build/src/__tests__/EntityPrivacyPolicy-test.js.map +0 -1
  90. package/build/src/__tests__/EntityQueryContext-test.d.ts +0 -1
  91. package/build/src/__tests__/EntityQueryContext-test.js +0 -181
  92. package/build/src/__tests__/EntityQueryContext-test.js.map +0 -1
  93. package/build/src/__tests__/EntitySecondaryCacheLoader-test.d.ts +0 -1
  94. package/build/src/__tests__/EntitySecondaryCacheLoader-test.js +0 -58
  95. package/build/src/__tests__/EntitySecondaryCacheLoader-test.js.map +0 -1
  96. package/build/src/__tests__/EntitySelfReferentialEdges-test.d.ts +0 -1
  97. package/build/src/__tests__/EntitySelfReferentialEdges-test.js +0 -196
  98. package/build/src/__tests__/EntitySelfReferentialEdges-test.js.map +0 -1
  99. package/build/src/__tests__/GenericEntityCacheAdapter-test.d.ts +0 -1
  100. package/build/src/__tests__/GenericEntityCacheAdapter-test.js +0 -95
  101. package/build/src/__tests__/GenericEntityCacheAdapter-test.js.map +0 -1
  102. package/build/src/__tests__/ReadonlyEntity-test.d.ts +0 -1
  103. package/build/src/__tests__/ReadonlyEntity-test.js +0 -209
  104. package/build/src/__tests__/ReadonlyEntity-test.js.map +0 -1
  105. package/build/src/__tests__/ViewerContext-test.d.ts +0 -1
  106. package/build/src/__tests__/ViewerContext-test.js +0 -28
  107. package/build/src/__tests__/ViewerContext-test.js.map +0 -1
  108. package/build/src/__tests__/ViewerScopedEntityCompanion-test.d.ts +0 -1
  109. package/build/src/__tests__/ViewerScopedEntityCompanion-test.js +0 -18
  110. package/build/src/__tests__/ViewerScopedEntityCompanion-test.js.map +0 -1
  111. package/build/src/__tests__/ViewerScopedEntityCompanionProvider-test.d.ts +0 -1
  112. package/build/src/__tests__/ViewerScopedEntityCompanionProvider-test.js +0 -18
  113. package/build/src/__tests__/ViewerScopedEntityCompanionProvider-test.js.map +0 -1
  114. package/build/src/__tests__/ViewerScopedEntityLoaderFactory-test.d.ts +0 -1
  115. package/build/src/__tests__/ViewerScopedEntityLoaderFactory-test.js +0 -21
  116. package/build/src/__tests__/ViewerScopedEntityLoaderFactory-test.js.map +0 -1
  117. package/build/src/__tests__/ViewerScopedEntityMutatorFactory-test.d.ts +0 -1
  118. package/build/src/__tests__/ViewerScopedEntityMutatorFactory-test.js +0 -20
  119. package/build/src/__tests__/ViewerScopedEntityMutatorFactory-test.js.map +0 -1
  120. package/build/src/__tests__/cases/TwoEntitySameTableDisjointRows-test.d.ts +0 -1
  121. package/build/src/__tests__/cases/TwoEntitySameTableDisjointRows-test.js +0 -121
  122. package/build/src/__tests__/cases/TwoEntitySameTableDisjointRows-test.js.map +0 -1
  123. package/build/src/__tests__/cases/TwoEntitySameTableOverlappingRows-test.d.ts +0 -1
  124. package/build/src/__tests__/cases/TwoEntitySameTableOverlappingRows-test.js +0 -119
  125. package/build/src/__tests__/cases/TwoEntitySameTableOverlappingRows-test.js.map +0 -1
  126. package/build/src/__tests__/entityUtils-test.d.ts +0 -1
  127. package/build/src/__tests__/entityUtils-test.js +0 -88
  128. package/build/src/__tests__/entityUtils-test.js.map +0 -1
  129. package/build/src/errors/__tests__/EntityDatabaseAdapterError-test.d.ts +0 -1
  130. package/build/src/errors/__tests__/EntityDatabaseAdapterError-test.js +0 -21
  131. package/build/src/errors/__tests__/EntityDatabaseAdapterError-test.js.map +0 -1
  132. package/build/src/internal/__tests__/CompositeFieldHolder-test.d.ts +0 -1
  133. package/build/src/internal/__tests__/CompositeFieldHolder-test.js +0 -25
  134. package/build/src/internal/__tests__/CompositeFieldHolder-test.js.map +0 -1
  135. package/build/src/internal/__tests__/CompositeFieldValueMap-test.d.ts +0 -1
  136. package/build/src/internal/__tests__/CompositeFieldValueMap-test.js +0 -40
  137. package/build/src/internal/__tests__/CompositeFieldValueMap-test.js.map +0 -1
  138. package/build/src/internal/__tests__/EntityDataManager-test.d.ts +0 -1
  139. package/build/src/internal/__tests__/EntityDataManager-test.js +0 -666
  140. package/build/src/internal/__tests__/EntityDataManager-test.js.map +0 -1
  141. package/build/src/internal/__tests__/EntityFieldTransformationUtils-test.d.ts +0 -1
  142. package/build/src/internal/__tests__/EntityFieldTransformationUtils-test.js +0 -135
  143. package/build/src/internal/__tests__/EntityFieldTransformationUtils-test.js.map +0 -1
  144. package/build/src/internal/__tests__/ReadThroughEntityCache-test.d.ts +0 -1
  145. package/build/src/internal/__tests__/ReadThroughEntityCache-test.js +0 -217
  146. package/build/src/internal/__tests__/ReadThroughEntityCache-test.js.map +0 -1
  147. package/build/src/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.d.ts +0 -1
  148. package/build/src/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.js +0 -18
  149. package/build/src/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.js.map +0 -1
  150. package/build/src/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.d.ts +0 -1
  151. package/build/src/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.js +0 -18
  152. package/build/src/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.js.map +0 -1
  153. package/build/src/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.d.ts +0 -1
  154. package/build/src/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.js +0 -18
  155. package/build/src/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.js.map +0 -1
  156. package/build/src/utils/__testfixtures__/PrivacyPolicyRuleTestUtils.d.ts +0 -28
  157. package/build/src/utils/__testfixtures__/PrivacyPolicyRuleTestUtils.js +0 -53
  158. package/build/src/utils/__testfixtures__/PrivacyPolicyRuleTestUtils.js.map +0 -1
  159. package/build/src/utils/__testfixtures__/SimpleTestEntity.d.ts +0 -20
  160. package/build/src/utils/__testfixtures__/SimpleTestEntity.js +0 -46
  161. package/build/src/utils/__testfixtures__/SimpleTestEntity.js.map +0 -1
  162. package/build/src/utils/__testfixtures__/StubCacheAdapter.d.ts +0 -29
  163. package/build/src/utils/__testfixtures__/StubCacheAdapter.js +0 -103
  164. package/build/src/utils/__testfixtures__/StubCacheAdapter.js.map +0 -1
  165. package/build/src/utils/__testfixtures__/StubDatabaseAdapter.d.ts +0 -26
  166. package/build/src/utils/__testfixtures__/StubDatabaseAdapter.js +0 -173
  167. package/build/src/utils/__testfixtures__/StubDatabaseAdapter.js.map +0 -1
  168. package/build/src/utils/__testfixtures__/StubDatabaseAdapterProvider.d.ts +0 -7
  169. package/build/src/utils/__testfixtures__/StubDatabaseAdapterProvider.js +0 -12
  170. package/build/src/utils/__testfixtures__/StubDatabaseAdapterProvider.js.map +0 -1
  171. package/build/src/utils/__testfixtures__/StubQueryContextProvider.d.ts +0 -7
  172. package/build/src/utils/__testfixtures__/StubQueryContextProvider.js +0 -17
  173. package/build/src/utils/__testfixtures__/StubQueryContextProvider.js.map +0 -1
  174. package/build/src/utils/__testfixtures__/TSMockitoExtensions.d.ts +0 -9
  175. package/build/src/utils/__testfixtures__/TSMockitoExtensions.js +0 -65
  176. package/build/src/utils/__testfixtures__/TSMockitoExtensions.js.map +0 -1
  177. package/build/src/utils/__testfixtures__/TestEntity.d.ts +0 -30
  178. package/build/src/utils/__testfixtures__/TestEntity.js +0 -96
  179. package/build/src/utils/__testfixtures__/TestEntity.js.map +0 -1
  180. package/build/src/utils/__testfixtures__/TestEntity2.d.ts +0 -20
  181. package/build/src/utils/__testfixtures__/TestEntity2.js +0 -49
  182. package/build/src/utils/__testfixtures__/TestEntity2.js.map +0 -1
  183. package/build/src/utils/__testfixtures__/TestEntityWithMutationTriggers.d.ts +0 -36
  184. package/build/src/utils/__testfixtures__/TestEntityWithMutationTriggers.js +0 -80
  185. package/build/src/utils/__testfixtures__/TestEntityWithMutationTriggers.js.map +0 -1
  186. package/build/src/utils/__testfixtures__/TestViewerContext.d.ts +0 -3
  187. package/build/src/utils/__testfixtures__/TestViewerContext.js +0 -8
  188. package/build/src/utils/__testfixtures__/TestViewerContext.js.map +0 -1
  189. package/build/src/utils/__testfixtures__/createUnitTestEntityCompanionProvider.d.ts +0 -7
  190. package/build/src/utils/__testfixtures__/createUnitTestEntityCompanionProvider.js +0 -33
  191. package/build/src/utils/__testfixtures__/createUnitTestEntityCompanionProvider.js.map +0 -1
  192. package/build/src/utils/__testfixtures__/describeFieldTestCase.d.ts +0 -2
  193. package/build/src/utils/__testfixtures__/describeFieldTestCase.js +0 -19
  194. package/build/src/utils/__testfixtures__/describeFieldTestCase.js.map +0 -1
  195. package/build/src/utils/__tests__/EntityCreationUtils-test.d.ts +0 -1
  196. package/build/src/utils/__tests__/EntityCreationUtils-test.js +0 -144
  197. package/build/src/utils/__tests__/EntityCreationUtils-test.js.map +0 -1
  198. package/build/src/utils/__tests__/EntityPrivacyUtils-test.d.ts +0 -1
  199. package/build/src/utils/__tests__/EntityPrivacyUtils-test.js +0 -460
  200. package/build/src/utils/__tests__/EntityPrivacyUtils-test.js.map +0 -1
  201. package/build/src/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.d.ts +0 -1
  202. package/build/src/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.js +0 -180
  203. package/build/src/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.js.map +0 -1
  204. package/build/src/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.d.ts +0 -1
  205. package/build/src/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.js +0 -27
  206. package/build/src/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.js.map +0 -1
  207. package/build/src/utils/collections/__tests__/SerializableKeyMap-test.d.ts +0 -5
  208. package/build/src/utils/collections/__tests__/SerializableKeyMap-test.js +0 -99
  209. package/build/src/utils/collections/__tests__/SerializableKeyMap-test.js.map +0 -1
  210. package/build/src/utils/collections/__tests__/maps-test.d.ts +0 -1
  211. package/build/src/utils/collections/__tests__/maps-test.js +0 -121
  212. package/build/src/utils/collections/__tests__/maps-test.js.map +0 -1
  213. package/build/src/utils/collections/__tests__/sets-test.d.ts +0 -1
  214. package/build/src/utils/collections/__tests__/sets-test.js +0 -19
  215. package/build/src/utils/collections/__tests__/sets-test.js.map +0 -1
  216. package/build/tsconfig.tsbuildinfo +0 -1
@@ -20,6 +20,7 @@ import { EntityDatabaseAdapter } from '../EntityDatabaseAdapter';
20
20
  import { EntityLoaderFactory } from '../EntityLoaderFactory';
21
21
  import { EntityLoaderUtils } from '../EntityLoaderUtils';
22
22
  import {
23
+ EntityCascadingDeletionInfo,
23
24
  EntityMutationType,
24
25
  EntityTriggerMutationInfo,
25
26
  EntityValidatorMutationInfo,
@@ -596,7 +597,7 @@ describe(EntityMutatorFactory, () => {
596
597
 
597
598
  const updatedEntity = await enforceAsyncResult(
598
599
  entityMutatorFactory
599
- .forUpdate(existingEntity, queryContext)
600
+ .forUpdate(existingEntity, queryContext, /* cascadingDeleteCause */ null)
600
601
  .setField('stringField', 'huh2')
601
602
  .updateAsync(),
602
603
  );
@@ -649,7 +650,7 @@ describe(EntityMutatorFactory, () => {
649
650
 
650
651
  await enforceAsyncResult(
651
652
  entityMutatorFactory
652
- .forUpdate(existingEntity, queryContext)
653
+ .forUpdate(existingEntity, queryContext, /* cascadingDeleteCause */ null)
653
654
  .setField('stringField', 'huh2')
654
655
  .updateAsync(),
655
656
  );
@@ -723,7 +724,7 @@ describe(EntityMutatorFactory, () => {
723
724
 
724
725
  await enforceAsyncResult(
725
726
  entityMutatorFactory
726
- .forUpdate(existingEntity, queryContext)
727
+ .forUpdate(existingEntity, queryContext, /* cascadingDeleteCause */ null)
727
728
  .setField('stringField', 'huh2')
728
729
  .updateAsync(),
729
730
  );
@@ -795,7 +796,7 @@ describe(EntityMutatorFactory, () => {
795
796
 
796
797
  await enforceAsyncResult(
797
798
  entityMutatorFactory
798
- .forUpdate(existingEntity, queryContext)
799
+ .forUpdate(existingEntity, queryContext, /* cascadingDeleteCause */ null)
799
800
  .setField('stringField', 'huh2')
800
801
  .updateAsync(),
801
802
  );
@@ -807,6 +808,116 @@ describe(EntityMutatorFactory, () => {
807
808
  });
808
809
  });
809
810
 
811
+ it('passes manaully-specified cascading delete cause to privacy policy and validators and triggers', async () => {
812
+ const viewerContext = mock<ViewerContext>();
813
+ const privacyPolicyEvaluationContext =
814
+ instance(
815
+ mock<
816
+ EntityPrivacyPolicyEvaluationContext<
817
+ TestFields,
818
+ 'customIdField',
819
+ ViewerContext,
820
+ TestEntity,
821
+ keyof TestFields
822
+ >
823
+ >(),
824
+ );
825
+ const queryContext = new StubQueryContextProvider().getQueryContext();
826
+
827
+ const id1 = uuidv4();
828
+ const id2 = uuidv4();
829
+ const {
830
+ privacyPolicy,
831
+ mutationTriggers,
832
+ mutationValidators,
833
+ entityMutatorFactory,
834
+ entityLoaderFactory,
835
+ } = createEntityMutatorFactory([
836
+ {
837
+ customIdField: id1,
838
+ stringField: 'huh',
839
+ testIndexedField: '3',
840
+ intField: 3,
841
+ dateField: new Date(),
842
+ nullableField: null,
843
+ },
844
+ {
845
+ customIdField: id2,
846
+ stringField: 'huh',
847
+ testIndexedField: '4',
848
+ intField: 3,
849
+ dateField: new Date(),
850
+ nullableField: null,
851
+ },
852
+ ]);
853
+
854
+ const spiedPrivacyPolicy = spy(privacyPolicy);
855
+ const triggerSpies = setUpMutationTriggerSpies(mutationTriggers);
856
+ const validatorSpies = setUpMutationValidatorSpies(mutationValidators);
857
+
858
+ const existingEntity = await enforceAsyncResult(
859
+ entityLoaderFactory
860
+ .forLoad(viewerContext, queryContext, privacyPolicyEvaluationContext)
861
+ .loadByIDAsync(id2),
862
+ );
863
+
864
+ const cascadingDeleteCause: EntityCascadingDeletionInfo = {
865
+ entity: 'blah' as any,
866
+ cascadingDeleteCause: null,
867
+ };
868
+
869
+ await enforceAsyncResult(
870
+ entityMutatorFactory
871
+ .forUpdate(existingEntity, queryContext, cascadingDeleteCause)
872
+ .setField('stringField', 'huh2')
873
+ .updateAsync(),
874
+ );
875
+
876
+ verify(
877
+ spiedPrivacyPolicy.authorizeUpdateAsync(
878
+ viewerContext,
879
+ anyOfClass(EntityTransactionalQueryContext),
880
+ deepEqual({ previousValue: existingEntity, cascadingDeleteCause }),
881
+ anyOfClass(TestEntity),
882
+ anything(),
883
+ ),
884
+ ).once();
885
+
886
+ verify(
887
+ spiedPrivacyPolicy.authorizeReadAsync(
888
+ viewerContext,
889
+ anyOfClass(EntityTransactionalQueryContext),
890
+ deepEqual({ previousValue: existingEntity, cascadingDeleteCause }),
891
+ anyOfClass(TestEntity),
892
+ anything(),
893
+ ),
894
+ ).once();
895
+
896
+ verifyValidatorCounts(viewerContext, validatorSpies, 1, {
897
+ type: EntityMutationType.UPDATE,
898
+ previousValue: existingEntity,
899
+ cascadingDeleteCause,
900
+ });
901
+
902
+ verifyTriggerCounts(
903
+ viewerContext,
904
+ triggerSpies,
905
+ {
906
+ beforeCreate: false,
907
+ afterCreate: false,
908
+ beforeUpdate: true,
909
+ afterUpdate: true,
910
+ beforeDelete: false,
911
+ afterDelete: false,
912
+ },
913
+ {
914
+ type: EntityMutationType.UPDATE,
915
+ previousValue: existingEntity,
916
+ cascadingDeleteCause,
917
+ },
918
+ );
919
+ });
920
+
810
921
  it('throws when id field is updated', async () => {
811
922
  const viewerContext = mock<ViewerContext>();
812
923
  const privacyPolicyEvaluationContext =
@@ -844,7 +955,7 @@ describe(EntityMutatorFactory, () => {
844
955
  await expect(
845
956
  enforceAsyncResult(
846
957
  entityMutatorFactory
847
- .forUpdate(existingEntity, queryContext)
958
+ .forUpdate(existingEntity, queryContext, /* cascadingDeleteCause */ null)
848
959
  .setField('customIdField', uuidv4())
849
960
  .updateAsync(),
850
961
  ),
@@ -896,7 +1007,9 @@ describe(EntityMutatorFactory, () => {
896
1007
  expect(existingEntity).toBeTruthy();
897
1008
 
898
1009
  await enforceAsyncResult(
899
- entityMutatorFactory.forDelete(existingEntity, queryContext).deleteAsync(),
1010
+ entityMutatorFactory
1011
+ .forDelete(existingEntity, queryContext, /* cascadingDeleteCause */ null)
1012
+ .deleteAsync(),
900
1013
  );
901
1014
 
902
1015
  await expect(
@@ -946,7 +1059,9 @@ describe(EntityMutatorFactory, () => {
946
1059
  );
947
1060
 
948
1061
  await enforceAsyncResult(
949
- entityMutatorFactory.forDelete(existingEntity, queryContext).deleteAsync(),
1062
+ entityMutatorFactory
1063
+ .forDelete(existingEntity, queryContext, /* cascadingDeleteCause */ null)
1064
+ .deleteAsync(),
950
1065
  );
951
1066
 
952
1067
  verify(
@@ -998,7 +1113,9 @@ describe(EntityMutatorFactory, () => {
998
1113
  );
999
1114
 
1000
1115
  await enforceAsyncResult(
1001
- entityMutatorFactory.forDelete(existingEntity, queryContext).deleteAsync(),
1116
+ entityMutatorFactory
1117
+ .forDelete(existingEntity, queryContext, /* cascadingDeleteCause */ null)
1118
+ .deleteAsync(),
1002
1119
  );
1003
1120
 
1004
1121
  verifyTriggerCounts(
@@ -1054,13 +1171,89 @@ describe(EntityMutatorFactory, () => {
1054
1171
  );
1055
1172
 
1056
1173
  await enforceAsyncResult(
1057
- entityMutatorFactory.forDelete(existingEntity, queryContext).deleteAsync(),
1174
+ entityMutatorFactory
1175
+ .forDelete(existingEntity, queryContext, /* cascadingDeleteCause */ null)
1176
+ .deleteAsync(),
1058
1177
  );
1059
1178
 
1060
1179
  verifyValidatorCounts(viewerContext, validatorSpies, 0, {
1061
1180
  type: EntityMutationType.DELETE as any,
1062
1181
  });
1063
1182
  });
1183
+
1184
+ it('passes manaully-specified cascading delete cause to privacy policy and triggers', async () => {
1185
+ const viewerContext = mock<ViewerContext>();
1186
+ const privacyPolicyEvaluationContext =
1187
+ instance(
1188
+ mock<
1189
+ EntityPrivacyPolicyEvaluationContext<
1190
+ TestFields,
1191
+ 'customIdField',
1192
+ ViewerContext,
1193
+ TestEntity,
1194
+ keyof TestFields
1195
+ >
1196
+ >(),
1197
+ );
1198
+ const queryContext = new StubQueryContextProvider().getQueryContext();
1199
+
1200
+ const id1 = uuidv4();
1201
+ const { mutationTriggers, privacyPolicy, entityMutatorFactory, entityLoaderFactory } =
1202
+ createEntityMutatorFactory([
1203
+ {
1204
+ customIdField: id1,
1205
+ stringField: 'huh',
1206
+ testIndexedField: '3',
1207
+ intField: 3,
1208
+ dateField: new Date(),
1209
+ nullableField: null,
1210
+ },
1211
+ ]);
1212
+
1213
+ const spiedPrivacyPolicy = spy(privacyPolicy);
1214
+ const triggerSpies = setUpMutationTriggerSpies(mutationTriggers);
1215
+
1216
+ const existingEntity = await enforceAsyncResult(
1217
+ entityLoaderFactory
1218
+ .forLoad(viewerContext, queryContext, privacyPolicyEvaluationContext)
1219
+ .loadByIDAsync(id1),
1220
+ );
1221
+
1222
+ const cascadingDeleteCause: EntityCascadingDeletionInfo = {
1223
+ entity: 'blah' as any,
1224
+ cascadingDeleteCause: null,
1225
+ };
1226
+
1227
+ await enforceAsyncResult(
1228
+ entityMutatorFactory
1229
+ .forDelete(existingEntity, queryContext, cascadingDeleteCause)
1230
+ .deleteAsync(),
1231
+ );
1232
+
1233
+ verify(
1234
+ spiedPrivacyPolicy.authorizeDeleteAsync(
1235
+ viewerContext,
1236
+ anyOfClass(EntityTransactionalQueryContext),
1237
+ deepEqual({ previousValue: null, cascadingDeleteCause }),
1238
+ anyOfClass(TestEntity),
1239
+ anything(),
1240
+ ),
1241
+ ).once();
1242
+
1243
+ verifyTriggerCounts(
1244
+ viewerContext,
1245
+ triggerSpies,
1246
+ {
1247
+ beforeCreate: false,
1248
+ afterCreate: false,
1249
+ beforeUpdate: false,
1250
+ afterUpdate: false,
1251
+ beforeDelete: true,
1252
+ afterDelete: true,
1253
+ },
1254
+ { type: EntityMutationType.DELETE, cascadingDeleteCause },
1255
+ );
1256
+ });
1064
1257
  });
1065
1258
 
1066
1259
  it('invalidates cache for fields upon create', async () => {
@@ -1163,7 +1356,7 @@ describe(EntityMutatorFactory, () => {
1163
1356
 
1164
1357
  await expect(
1165
1358
  entityMutatorFactory
1166
- .forUpdate(createdEntity, queryContext)
1359
+ .forUpdate(createdEntity, queryContext, /* cascadingDeleteCause */ null)
1167
1360
  .setField('stringField', 10 as any)
1168
1361
  .updateAsync(),
1169
1362
  ).rejects.toThrow('Entity field not valid: TestEntity (stringField = 10)');
@@ -1284,14 +1477,14 @@ describe(EntityMutatorFactory, () => {
1284
1477
  expect(entityCreateResult.value).toBe(undefined);
1285
1478
 
1286
1479
  const entityUpdateResult = await entityMutatorFactory
1287
- .forUpdate(fakeEntity, queryContext)
1480
+ .forUpdate(fakeEntity, queryContext, /* cascadingDeleteCause */ null)
1288
1481
  .updateAsync();
1289
1482
  expect(entityUpdateResult.ok).toBe(false);
1290
1483
  expect(entityUpdateResult.reason).toEqual(rejectionError);
1291
1484
  expect(entityUpdateResult.value).toBe(undefined);
1292
1485
 
1293
1486
  const entityDeleteResult = await entityMutatorFactory
1294
- .forDelete(fakeEntity, queryContext)
1487
+ .forDelete(fakeEntity, queryContext, /* cascadingDeleteCause */ null)
1295
1488
  .deleteAsync();
1296
1489
  expect(entityDeleteResult.ok).toBe(false);
1297
1490
  expect(entityDeleteResult.reason).toEqual(rejectionError);
@@ -1406,10 +1599,14 @@ describe(EntityMutatorFactory, () => {
1406
1599
  entityMutatorFactory.forCreate(viewerContext, queryContext).createAsync(),
1407
1600
  ).rejects.toEqual(rejectionError);
1408
1601
  await expect(
1409
- entityMutatorFactory.forUpdate(fakeEntity, queryContext).updateAsync(),
1602
+ entityMutatorFactory
1603
+ .forUpdate(fakeEntity, queryContext, /* cascadingDeleteCause */ null)
1604
+ .updateAsync(),
1410
1605
  ).rejects.toEqual(rejectionError);
1411
1606
  await expect(
1412
- entityMutatorFactory.forDelete(fakeEntity, queryContext).deleteAsync(),
1607
+ entityMutatorFactory
1608
+ .forDelete(fakeEntity, queryContext, /* cascadingDeleteCause */ null)
1609
+ .deleteAsync(),
1413
1610
  ).rejects.toEqual(rejectionError);
1414
1611
  });
1415
1612
 
@@ -1428,12 +1625,16 @@ describe(EntityMutatorFactory, () => {
1428
1625
 
1429
1626
  await enforceAsyncResult(
1430
1627
  entityMutatorFactory
1431
- .forUpdate(newEntity, queryContext)
1628
+ .forUpdate(newEntity, queryContext, /* cascadingDeleteCause */ null)
1432
1629
  .setField('stringField', 'wat')
1433
1630
  .updateAsync(),
1434
1631
  );
1435
1632
 
1436
- await enforceAsyncResult(entityMutatorFactory.forDelete(newEntity, queryContext).deleteAsync());
1633
+ await enforceAsyncResult(
1634
+ entityMutatorFactory
1635
+ .forDelete(newEntity, queryContext, /* cascadingDeleteCause */ null)
1636
+ .deleteAsync(),
1637
+ );
1437
1638
 
1438
1639
  verify(
1439
1640
  spiedMetricsAdapter.logMutatorMutationEvent(
package/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- The MIT License (MIT)
2
-
3
- Copyright (c) 2020-present 650 Industries, Inc. (aka Expo)
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
@@ -1,240 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const results_1 = require("@expo/results");
4
- const globals_1 = require("@jest/globals");
5
- const uuid_1 = require("uuid");
6
- const AuthorizationResultBasedEntityAssociationLoader_1 = require("../AuthorizationResultBasedEntityAssociationLoader");
7
- const entityUtils_1 = require("../entityUtils");
8
- const TestEntity_1 = require("../utils/__testfixtures__/TestEntity");
9
- const TestEntity2_1 = require("../utils/__testfixtures__/TestEntity2");
10
- const TestViewerContext_1 = require("../utils/__testfixtures__/TestViewerContext");
11
- const createUnitTestEntityCompanionProvider_1 = require("../utils/__testfixtures__/createUnitTestEntityCompanionProvider");
12
- (0, globals_1.describe)(AuthorizationResultBasedEntityAssociationLoader_1.AuthorizationResultBasedEntityAssociationLoader, () => {
13
- (0, globals_1.describe)('loadAssociatedEntityAsync', () => {
14
- (0, globals_1.it)('loads associated entities by ID and correctly handles a null value', async () => {
15
- const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
16
- const viewerContext = new TestViewerContext_1.TestViewerContext(companionProvider);
17
- const testOtherEntity = await (0, results_1.enforceAsyncResult)(TestEntity_1.TestEntity.creatorWithAuthorizationResults(viewerContext).createAsync());
18
- const testEntity = await (0, results_1.enforceAsyncResult)(TestEntity_1.TestEntity.creatorWithAuthorizationResults(viewerContext)
19
- .setField('stringField', testOtherEntity.getID())
20
- .createAsync());
21
- const loadedOther = await (0, results_1.enforceAsyncResult)(testEntity
22
- .associationLoaderWithAuthorizationResults()
23
- .loadAssociatedEntityAsync('stringField', TestEntity_1.TestEntity));
24
- (0, globals_1.expect)(loadedOther.getID()).toEqual(testOtherEntity.getID());
25
- const loadedOther2 = await (0, results_1.enforceAsyncResult)(testEntity
26
- .associationLoaderWithAuthorizationResults()
27
- .loadAssociatedEntityAsync('nullableField', TestEntity_1.TestEntity));
28
- (0, globals_1.expect)(loadedOther2).toBeNull();
29
- });
30
- });
31
- (0, globals_1.describe)('loadManyAssociatedEntitiesAsync', () => {
32
- (0, globals_1.it)('loads many associated entities referencing this entity', async () => {
33
- const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
34
- const viewerContext = new TestViewerContext_1.TestViewerContext(companionProvider);
35
- const testEntity = await (0, results_1.enforceAsyncResult)(TestEntity_1.TestEntity.creatorWithAuthorizationResults(viewerContext).createAsync());
36
- const testOtherEntity1 = await (0, results_1.enforceAsyncResult)(TestEntity_1.TestEntity.creatorWithAuthorizationResults(viewerContext)
37
- .setField('stringField', testEntity.getID())
38
- .createAsync());
39
- const testOtherEntity2 = await (0, results_1.enforceAsyncResult)(TestEntity_1.TestEntity.creatorWithAuthorizationResults(viewerContext)
40
- .setField('stringField', testEntity.getID())
41
- .createAsync());
42
- const loaded = await (0, entityUtils_1.enforceResultsAsync)(testEntity
43
- .associationLoaderWithAuthorizationResults()
44
- .loadManyAssociatedEntitiesAsync(TestEntity_1.TestEntity, 'stringField'));
45
- (0, globals_1.expect)(loaded).toHaveLength(2);
46
- (0, globals_1.expect)(loaded.find((e) => e.getID() === testOtherEntity1.getID())).not.toBeUndefined();
47
- (0, globals_1.expect)(loaded.find((e) => e.getID() === testOtherEntity2.getID())).not.toBeUndefined();
48
- });
49
- });
50
- (0, globals_1.describe)('loadAssociatedEntityByFieldEqualingAsync', () => {
51
- (0, globals_1.it)('loads associated entity by field equaling', async () => {
52
- const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
53
- const viewerContext = new TestViewerContext_1.TestViewerContext(companionProvider);
54
- const testOtherEntity = await (0, results_1.enforceAsyncResult)(TestEntity_1.TestEntity.creatorWithAuthorizationResults(viewerContext).createAsync());
55
- const testEntity = await (0, results_1.enforceAsyncResult)(TestEntity_1.TestEntity.creatorWithAuthorizationResults(viewerContext)
56
- .setField('stringField', testOtherEntity.getID())
57
- .createAsync());
58
- const loadedOtherResult = await testEntity
59
- .associationLoaderWithAuthorizationResults()
60
- .loadAssociatedEntityByFieldEqualingAsync('stringField', TestEntity_1.TestEntity, 'customIdField');
61
- (0, globals_1.expect)(loadedOtherResult?.enforceValue().getID()).toEqual(testOtherEntity.getID());
62
- });
63
- (0, globals_1.it)('returns null when loading associated entities by field equaling a non existent association', async () => {
64
- const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
65
- const viewerContext = new TestViewerContext_1.TestViewerContext(companionProvider);
66
- const testEntity = await (0, results_1.enforceAsyncResult)(TestEntity_1.TestEntity.creatorWithAuthorizationResults(viewerContext)
67
- .setField('stringField', (0, uuid_1.v4)())
68
- .createAsync());
69
- const loadedOtherResult = await testEntity
70
- .associationLoaderWithAuthorizationResults()
71
- .loadAssociatedEntityByFieldEqualingAsync('stringField', TestEntity_1.TestEntity, 'customIdField');
72
- (0, globals_1.expect)(loadedOtherResult).toBeNull();
73
- });
74
- (0, globals_1.it)('returns null when load-by field is null', async () => {
75
- const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
76
- const viewerContext = new TestViewerContext_1.TestViewerContext(companionProvider);
77
- const testEntity = await (0, results_1.enforceAsyncResult)(TestEntity_1.TestEntity.creatorWithAuthorizationResults(viewerContext)
78
- .setField('stringField', 'blah')
79
- .createAsync());
80
- const loadedOtherResult = await testEntity
81
- .associationLoaderWithAuthorizationResults()
82
- .loadAssociatedEntityByFieldEqualingAsync('nullableField', TestEntity_1.TestEntity, 'customIdField');
83
- (0, globals_1.expect)(loadedOtherResult).toBeNull();
84
- });
85
- });
86
- (0, globals_1.describe)('loadManyAssociatedEntitiesByFieldEqualingAsync', () => {
87
- (0, globals_1.it)('loads many associated entities by field equaling', async () => {
88
- const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
89
- const viewerContext = new TestViewerContext_1.TestViewerContext(companionProvider);
90
- const testEntity = await (0, results_1.enforceAsyncResult)(TestEntity_1.TestEntity.creatorWithAuthorizationResults(viewerContext).createAsync());
91
- const testOtherEntity1 = await (0, results_1.enforceAsyncResult)(TestEntity_1.TestEntity.creatorWithAuthorizationResults(viewerContext)
92
- .setField('stringField', testEntity.getID())
93
- .createAsync());
94
- const testOtherEntity2 = await (0, results_1.enforceAsyncResult)(TestEntity_1.TestEntity.creatorWithAuthorizationResults(viewerContext)
95
- .setField('stringField', testEntity.getID())
96
- .createAsync());
97
- const loaded = await (0, entityUtils_1.enforceResultsAsync)(testEntity
98
- .associationLoaderWithAuthorizationResults()
99
- .loadManyAssociatedEntitiesByFieldEqualingAsync('customIdField', TestEntity_1.TestEntity, 'stringField'));
100
- (0, globals_1.expect)(loaded).toHaveLength(2);
101
- (0, globals_1.expect)(loaded.find((e) => e.getID() === testOtherEntity1.getID())).not.toBeUndefined();
102
- (0, globals_1.expect)(loaded.find((e) => e.getID() === testOtherEntity2.getID())).not.toBeUndefined();
103
- });
104
- (0, globals_1.it)('returns empty results when field being queried by is null', async () => {
105
- const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
106
- const viewerContext = new TestViewerContext_1.TestViewerContext(companionProvider);
107
- const testEntity = await (0, results_1.enforceAsyncResult)(TestEntity_1.TestEntity.creatorWithAuthorizationResults(viewerContext).createAsync());
108
- const loaded = await (0, entityUtils_1.enforceResultsAsync)(testEntity
109
- .associationLoaderWithAuthorizationResults()
110
- .loadManyAssociatedEntitiesByFieldEqualingAsync('nullableField', TestEntity_1.TestEntity, 'stringField'));
111
- (0, globals_1.expect)(loaded).toHaveLength(0);
112
- });
113
- });
114
- (0, globals_1.describe)('loadAssociatedEntityThroughAsync', () => {
115
- (0, globals_1.it)('chain loads associated entities', async () => {
116
- const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
117
- const viewerContext = new TestViewerContext_1.TestViewerContext(companionProvider);
118
- const testEntity4 = await (0, results_1.enforceAsyncResult)(TestEntity_1.TestEntity.creatorWithAuthorizationResults(viewerContext).createAsync());
119
- const testEntity3 = await (0, results_1.enforceAsyncResult)(TestEntity2_1.TestEntity2.creatorWithAuthorizationResults(viewerContext)
120
- .setField('foreignKey', testEntity4.getID())
121
- .createAsync());
122
- const testEntity2 = await (0, results_1.enforceAsyncResult)(TestEntity_1.TestEntity.creatorWithAuthorizationResults(viewerContext)
123
- .setField('testIndexedField', testEntity3.getID())
124
- .createAsync());
125
- const testEntity = await (0, results_1.enforceAsyncResult)(TestEntity2_1.TestEntity2.creatorWithAuthorizationResults(viewerContext)
126
- .setField('foreignKey', testEntity2.getID())
127
- .createAsync());
128
- const loaded2Result = await testEntity
129
- .associationLoaderWithAuthorizationResults()
130
- .loadAssociatedEntityThroughAsync([
131
- {
132
- associatedEntityClass: TestEntity_1.TestEntity,
133
- fieldIdentifyingAssociatedEntity: 'foreignKey',
134
- },
135
- ]);
136
- (0, globals_1.expect)(loaded2Result?.enforceValue().getID()).toEqual(testEntity2.getID());
137
- const loaded3Result = await testEntity
138
- .associationLoaderWithAuthorizationResults()
139
- .loadAssociatedEntityThroughAsync([
140
- {
141
- associatedEntityClass: TestEntity_1.TestEntity,
142
- fieldIdentifyingAssociatedEntity: 'foreignKey',
143
- },
144
- {
145
- associatedEntityClass: TestEntity2_1.TestEntity2,
146
- fieldIdentifyingAssociatedEntity: 'testIndexedField',
147
- },
148
- ]);
149
- (0, globals_1.expect)(loaded3Result?.enforceValue().getID()).toEqual(testEntity3.getID());
150
- const loaded4Result = await testEntity
151
- .associationLoaderWithAuthorizationResults()
152
- .loadAssociatedEntityThroughAsync([
153
- {
154
- associatedEntityClass: TestEntity_1.TestEntity,
155
- fieldIdentifyingAssociatedEntity: 'foreignKey',
156
- },
157
- {
158
- associatedEntityClass: TestEntity2_1.TestEntity2,
159
- fieldIdentifyingAssociatedEntity: 'testIndexedField',
160
- },
161
- {
162
- associatedEntityClass: TestEntity_1.TestEntity,
163
- fieldIdentifyingAssociatedEntity: 'foreignKey',
164
- },
165
- ]);
166
- (0, globals_1.expect)(loaded4Result?.enforceValue().getID()).toEqual(testEntity4.getID());
167
- });
168
- (0, globals_1.it)('fails when chain loading associated entity fails', async () => {
169
- const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
170
- const viewerContext = new TestViewerContext_1.TestViewerContext(companionProvider);
171
- const testEntity = await (0, results_1.enforceAsyncResult)(TestEntity2_1.TestEntity2.creatorWithAuthorizationResults(viewerContext)
172
- .setField('foreignKey', (0, uuid_1.v4)())
173
- .createAsync());
174
- const loadResult = await testEntity
175
- .associationLoaderWithAuthorizationResults()
176
- .loadAssociatedEntityThroughAsync([
177
- {
178
- associatedEntityClass: TestEntity_1.TestEntity,
179
- fieldIdentifyingAssociatedEntity: 'foreignKey',
180
- },
181
- ]);
182
- (0, globals_1.expect)(loadResult?.ok).toBe(false);
183
- });
184
- (0, globals_1.it)('supports chain loading by field equality', async () => {
185
- const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
186
- const viewerContext = new TestViewerContext_1.TestViewerContext(companionProvider);
187
- const fieldValue = (0, uuid_1.v4)();
188
- const testEntity2 = await (0, results_1.enforceAsyncResult)(TestEntity_1.TestEntity.creatorWithAuthorizationResults(viewerContext)
189
- .setField('stringField', fieldValue)
190
- .createAsync());
191
- const testEntity = await (0, results_1.enforceAsyncResult)(TestEntity2_1.TestEntity2.creatorWithAuthorizationResults(viewerContext)
192
- .setField('foreignKey', fieldValue)
193
- .createAsync());
194
- const loaded2Result = await testEntity
195
- .associationLoaderWithAuthorizationResults()
196
- .loadAssociatedEntityThroughAsync([
197
- {
198
- associatedEntityClass: TestEntity_1.TestEntity,
199
- fieldIdentifyingAssociatedEntity: 'foreignKey',
200
- associatedEntityLookupByField: 'stringField',
201
- },
202
- ]);
203
- (0, globals_1.expect)(loaded2Result?.enforceValue().getID()).toEqual(testEntity2.getID());
204
- });
205
- (0, globals_1.it)('returns null when chain loading by field equality returns null', async () => {
206
- const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
207
- const viewerContext = new TestViewerContext_1.TestViewerContext(companionProvider);
208
- const testEntity = await (0, results_1.enforceAsyncResult)(TestEntity2_1.TestEntity2.creatorWithAuthorizationResults(viewerContext)
209
- .setField('foreignKey', (0, uuid_1.v4)())
210
- .createAsync());
211
- const loaded2Result = await testEntity
212
- .associationLoaderWithAuthorizationResults()
213
- .loadAssociatedEntityThroughAsync([
214
- {
215
- associatedEntityClass: TestEntity_1.TestEntity,
216
- fieldIdentifyingAssociatedEntity: 'foreignKey',
217
- associatedEntityLookupByField: 'stringField',
218
- },
219
- ]);
220
- (0, globals_1.expect)(loaded2Result).toBeNull();
221
- });
222
- (0, globals_1.it)('returns null when chain loading by field is null', async () => {
223
- const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
224
- const viewerContext = new TestViewerContext_1.TestViewerContext(companionProvider);
225
- const testEntity = await (0, results_1.enforceAsyncResult)(TestEntity_1.TestEntity.creatorWithAuthorizationResults(viewerContext)
226
- .setField('nullableField', null)
227
- .createAsync());
228
- const loadedResult = await testEntity
229
- .associationLoaderWithAuthorizationResults()
230
- .loadAssociatedEntityThroughAsync([
231
- {
232
- associatedEntityClass: TestEntity_1.TestEntity,
233
- fieldIdentifyingAssociatedEntity: 'nullableField',
234
- },
235
- ]);
236
- (0, globals_1.expect)(loadedResult).toBeNull();
237
- });
238
- });
239
- });
240
- //# sourceMappingURL=AuthorizationResultBasedEntityAssociationLoader-test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AuthorizationResultBasedEntityAssociationLoader-test.js","sourceRoot":"","sources":["../../../src/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.ts"],"names":[],"mappings":"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"}
@@ -1,26 +0,0 @@
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 type TestFields = {
8
- id: string;
9
- };
10
- export type TestFieldSelection = keyof TestFields;
11
- export declare const testEntityConfiguration: EntityConfiguration<TestFields, "id">;
12
- export declare class TestEntityPrivacyPolicy extends EntityPrivacyPolicy<TestFields, 'id', ViewerContext, TestEntity, TestFieldSelection> {
13
- protected readonly readRules: AlwaysAllowPrivacyPolicyRule<TestFields, "id", ViewerContext, TestEntity, "id">[];
14
- protected readonly createRules: AlwaysAllowPrivacyPolicyRule<TestFields, "id", ViewerContext, TestEntity, "id">[];
15
- protected readonly updateRules: AlwaysAllowPrivacyPolicyRule<TestFields, "id", ViewerContext, TestEntity, "id">[];
16
- protected readonly deleteRules: AlwaysAllowPrivacyPolicyRule<TestFields, "id", ViewerContext, TestEntity, "id">[];
17
- }
18
- export declare class TestEntity extends Entity<TestFields, 'id', ViewerContext, TestFieldSelection> {
19
- constructor(constructorParams: {
20
- viewerContext: ViewerContext;
21
- id: string;
22
- databaseFields: Readonly<TestFields>;
23
- selectedFields: Readonly<TestFields>;
24
- });
25
- static defineCompanionDefinition(): EntityCompanionDefinition<TestFields, 'id', ViewerContext, TestEntity, TestEntityPrivacyPolicy, TestFieldSelection>;
26
- }