@expo/entity 0.39.0 → 0.41.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 (175) hide show
  1. package/build/AuthorizationResultBasedEntityAssociationLoader.d.ts +99 -0
  2. package/build/AuthorizationResultBasedEntityAssociationLoader.js +122 -0
  3. package/build/AuthorizationResultBasedEntityAssociationLoader.js.map +1 -0
  4. package/build/AuthorizationResultBasedEntityLoader.d.ts +1 -1
  5. package/build/AuthorizationResultBasedEntityLoader.js.map +1 -1
  6. package/build/{EntityMutator.d.ts → AuthorizationResultBasedEntityMutator.d.ts} +5 -17
  7. package/build/{EntityMutator.js → AuthorizationResultBasedEntityMutator.js} +22 -48
  8. package/build/AuthorizationResultBasedEntityMutator.js.map +1 -0
  9. package/build/EnforcingEntityAssociationLoader.d.ts +79 -0
  10. package/build/EnforcingEntityAssociationLoader.js +62 -0
  11. package/build/EnforcingEntityAssociationLoader.js.map +1 -0
  12. package/build/EnforcingEntityCreator.d.ts +24 -0
  13. package/build/EnforcingEntityCreator.js +32 -0
  14. package/build/EnforcingEntityCreator.js.map +1 -0
  15. package/build/EnforcingEntityDeleter.d.ts +17 -0
  16. package/build/EnforcingEntityDeleter.js +22 -0
  17. package/build/EnforcingEntityDeleter.js.map +1 -0
  18. package/build/EnforcingEntityUpdater.d.ts +24 -0
  19. package/build/EnforcingEntityUpdater.js +32 -0
  20. package/build/EnforcingEntityUpdater.js.map +1 -0
  21. package/build/Entity.d.ts +26 -8
  22. package/build/Entity.js +38 -25
  23. package/build/Entity.js.map +1 -1
  24. package/build/EntityAssociationLoader.d.ts +12 -91
  25. package/build/EntityAssociationLoader.js +20 -126
  26. package/build/EntityAssociationLoader.js.map +1 -1
  27. package/build/EntityCreator.d.ts +27 -0
  28. package/build/EntityCreator.js +39 -0
  29. package/build/EntityCreator.js.map +1 -0
  30. package/build/EntityDeleter.d.ts +27 -0
  31. package/build/EntityDeleter.js +40 -0
  32. package/build/EntityDeleter.js.map +1 -0
  33. package/build/EntityLoader.d.ts +4 -14
  34. package/build/EntityLoader.js +7 -20
  35. package/build/EntityLoader.js.map +1 -1
  36. package/build/EntityLoaderFactory.d.ts +2 -2
  37. package/build/EntityLoaderFactory.js +4 -2
  38. package/build/EntityLoaderFactory.js.map +1 -1
  39. package/build/EntityMutatorFactory.d.ts +4 -4
  40. package/build/EntityMutatorFactory.js +4 -4
  41. package/build/EntityMutatorFactory.js.map +1 -1
  42. package/build/EntitySecondaryCacheLoader.d.ts +3 -3
  43. package/build/EntitySecondaryCacheLoader.js +1 -3
  44. package/build/EntitySecondaryCacheLoader.js.map +1 -1
  45. package/build/EntityUpdater.d.ts +27 -0
  46. package/build/EntityUpdater.js +40 -0
  47. package/build/EntityUpdater.js.map +1 -0
  48. package/build/ReadonlyEntity.d.ts +24 -5
  49. package/build/ReadonlyEntity.js +33 -7
  50. package/build/ReadonlyEntity.js.map +1 -1
  51. package/build/ViewerScopedEntityLoaderFactory.d.ts +2 -2
  52. package/build/ViewerScopedEntityLoaderFactory.js.map +1 -1
  53. package/build/ViewerScopedEntityMutatorFactory.d.ts +4 -4
  54. package/build/ViewerScopedEntityMutatorFactory.js.map +1 -1
  55. package/build/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.d.ts +1 -0
  56. package/build/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.js +242 -0
  57. package/build/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.js.map +1 -0
  58. package/build/__tests__/{EntityLoader-constructor-test.js → AuthorizationResultBasedEntityLoader-constructor-test.js} +10 -10
  59. package/build/__tests__/AuthorizationResultBasedEntityLoader-constructor-test.js.map +1 -0
  60. package/build/__tests__/AuthorizationResultBasedEntityLoader-test.d.ts +1 -0
  61. package/build/__tests__/AuthorizationResultBasedEntityLoader-test.js +401 -0
  62. package/build/__tests__/AuthorizationResultBasedEntityLoader-test.js.map +1 -0
  63. package/build/__tests__/EnforcingEntityAssociationLoader-test.d.ts +1 -0
  64. package/build/__tests__/EnforcingEntityAssociationLoader-test.js +115 -0
  65. package/build/__tests__/EnforcingEntityAssociationLoader-test.js.map +1 -0
  66. package/build/__tests__/Entity-test.js +63 -5
  67. package/build/__tests__/Entity-test.js.map +1 -1
  68. package/build/__tests__/EntityAssociationLoader-test.js +14 -184
  69. package/build/__tests__/EntityAssociationLoader-test.js.map +1 -1
  70. package/build/__tests__/EntityCommonUseCases-test.js +34 -20
  71. package/build/__tests__/EntityCommonUseCases-test.js.map +1 -1
  72. package/build/__tests__/EntityCompanion-test.js +17 -7
  73. package/build/__tests__/EntityCompanion-test.js.map +1 -1
  74. package/build/__tests__/EntityEdges-test.js +57 -71
  75. package/build/__tests__/EntityEdges-test.js.map +1 -1
  76. package/build/__tests__/EntityLoader-test.js +22 -386
  77. package/build/__tests__/EntityLoader-test.js.map +1 -1
  78. package/build/__tests__/EntityMutator-MutationCacheConsistency-test.js +6 -9
  79. package/build/__tests__/EntityMutator-MutationCacheConsistency-test.js.map +1 -1
  80. package/build/__tests__/EntityMutator-test.js +67 -70
  81. package/build/__tests__/EntityMutator-test.js.map +1 -1
  82. package/build/__tests__/EntityPrivacyPolicy-test.js +17 -7
  83. package/build/__tests__/EntityPrivacyPolicy-test.js.map +1 -1
  84. package/build/__tests__/EntitySecondaryCacheLoader-test.js +7 -7
  85. package/build/__tests__/EntitySecondaryCacheLoader-test.js.map +1 -1
  86. package/build/__tests__/EntitySelfReferentialEdges-test.js +47 -81
  87. package/build/__tests__/EntitySelfReferentialEdges-test.js.map +1 -1
  88. package/build/__tests__/ReadonlyEntity-test.js +40 -7
  89. package/build/__tests__/ReadonlyEntity-test.js.map +1 -1
  90. package/build/__tests__/cases/TwoEntitySameTableDisjointRows-test.js +6 -10
  91. package/build/__tests__/cases/TwoEntitySameTableDisjointRows-test.js.map +1 -1
  92. package/build/__tests__/cases/TwoEntitySameTableOverlappingRows-test.js +10 -22
  93. package/build/__tests__/cases/TwoEntitySameTableOverlappingRows-test.js.map +1 -1
  94. package/build/errors/EntityCacheAdapterError.js +17 -7
  95. package/build/errors/EntityCacheAdapterError.js.map +1 -1
  96. package/build/errors/EntityDatabaseAdapterError.js +17 -7
  97. package/build/errors/EntityDatabaseAdapterError.js.map +1 -1
  98. package/build/errors/EntityInvalidFieldValueError.js +17 -7
  99. package/build/errors/EntityInvalidFieldValueError.js.map +1 -1
  100. package/build/errors/EntityNotAuthorizedError.js +17 -7
  101. package/build/errors/EntityNotAuthorizedError.js.map +1 -1
  102. package/build/errors/EntityNotFoundError.js +17 -7
  103. package/build/errors/EntityNotFoundError.js.map +1 -1
  104. package/build/index.d.ts +19 -11
  105. package/build/index.js +24 -7
  106. package/build/index.js.map +1 -1
  107. package/build/internal/__tests__/EntityDataManager-test.js +42 -32
  108. package/build/internal/__tests__/EntityDataManager-test.js.map +1 -1
  109. package/build/internal/__tests__/ReadThroughEntityCache-test.js +17 -7
  110. package/build/internal/__tests__/ReadThroughEntityCache-test.js.map +1 -1
  111. package/build/rules/AlwaysAllowPrivacyPolicyRule.js +17 -7
  112. package/build/rules/AlwaysAllowPrivacyPolicyRule.js.map +1 -1
  113. package/build/rules/AlwaysDenyPrivacyPolicyRule.js +17 -7
  114. package/build/rules/AlwaysDenyPrivacyPolicyRule.js.map +1 -1
  115. package/build/rules/AlwaysSkipPrivacyPolicyRule.js +17 -7
  116. package/build/rules/AlwaysSkipPrivacyPolicyRule.js.map +1 -1
  117. package/build/utils/EntityPrivacyUtils.js +4 -8
  118. package/build/utils/EntityPrivacyUtils.js.map +1 -1
  119. package/build/utils/__tests__/EntityPrivacyUtils-test.js +38 -28
  120. package/build/utils/__tests__/EntityPrivacyUtils-test.js.map +1 -1
  121. package/build/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.js +5 -5
  122. package/build/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.js.map +1 -1
  123. package/build/utils/testing/StubDatabaseAdapter.js +17 -7
  124. package/build/utils/testing/StubDatabaseAdapter.js.map +1 -1
  125. package/build/utils/testing/StubQueryContextProvider.d.ts +1 -3
  126. package/build/utils/testing/StubQueryContextProvider.js +1 -3
  127. package/build/utils/testing/StubQueryContextProvider.js.map +1 -1
  128. package/build/utils/testing/createUnitTestEntityCompanionProvider.js +2 -1
  129. package/build/utils/testing/createUnitTestEntityCompanionProvider.js.map +1 -1
  130. package/package.json +19 -3
  131. package/src/AuthorizationResultBasedEntityAssociationLoader.ts +490 -0
  132. package/src/AuthorizationResultBasedEntityLoader.ts +1 -1
  133. package/src/{EntityMutator.ts → AuthorizationResultBasedEntityMutator.ts} +62 -58
  134. package/src/EnforcingEntityAssociationLoader.ts +390 -0
  135. package/src/EnforcingEntityCreator.ts +55 -0
  136. package/src/EnforcingEntityDeleter.ts +44 -0
  137. package/src/EnforcingEntityUpdater.ts +55 -0
  138. package/src/Entity.ts +140 -29
  139. package/src/EntityAssociationLoader.ts +38 -495
  140. package/src/EntityCreator.ts +73 -0
  141. package/src/EntityDeleter.ts +73 -0
  142. package/src/EntityLoader.ts +10 -49
  143. package/src/EntityLoaderFactory.ts +20 -3
  144. package/src/EntityMutatorFactory.ts +32 -7
  145. package/src/EntitySecondaryCacheLoader.ts +5 -7
  146. package/src/EntityUpdater.ts +73 -0
  147. package/src/ReadonlyEntity.ts +121 -7
  148. package/src/ViewerScopedEntityLoaderFactory.ts +9 -2
  149. package/src/ViewerScopedEntityMutatorFactory.ts +29 -4
  150. package/src/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.ts +323 -0
  151. package/src/__tests__/{EntityLoader-constructor-test.ts → AuthorizationResultBasedEntityLoader-constructor-test.ts} +16 -9
  152. package/src/__tests__/AuthorizationResultBasedEntityLoader-test.ts +730 -0
  153. package/src/__tests__/EnforcingEntityAssociationLoader-test.ts +253 -0
  154. package/src/__tests__/Entity-test.ts +77 -5
  155. package/src/__tests__/EntityAssociationLoader-test.ts +15 -260
  156. package/src/__tests__/EntityCommonUseCases-test.ts +24 -15
  157. package/src/__tests__/EntityEdges-test.ts +44 -64
  158. package/src/__tests__/EntityLoader-test.ts +29 -681
  159. package/src/__tests__/EntityMutator-MutationCacheConsistency-test.ts +8 -9
  160. package/src/__tests__/EntityMutator-test.ts +116 -103
  161. package/src/__tests__/EntitySecondaryCacheLoader-test.ts +7 -7
  162. package/src/__tests__/EntitySelfReferentialEdges-test.ts +65 -81
  163. package/src/__tests__/ReadonlyEntity-test.ts +47 -7
  164. package/src/__tests__/cases/TwoEntitySameTableDisjointRows-test.ts +15 -15
  165. package/src/__tests__/cases/TwoEntitySameTableOverlappingRows-test.ts +19 -22
  166. package/src/index.ts +19 -11
  167. package/src/internal/__tests__/EntityDataManager-test.ts +25 -25
  168. package/src/utils/EntityPrivacyUtils.ts +10 -13
  169. package/src/utils/__tests__/EntityPrivacyUtils-test.ts +21 -23
  170. package/src/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.ts +5 -5
  171. package/src/utils/testing/StubQueryContextProvider.ts +1 -3
  172. package/src/utils/testing/createUnitTestEntityCompanionProvider.ts +3 -1
  173. package/build/EntityMutator.js.map +0 -1
  174. package/build/__tests__/EntityLoader-constructor-test.js.map +0 -1
  175. /package/build/__tests__/{EntityLoader-constructor-test.d.ts → AuthorizationResultBasedEntityLoader-constructor-test.d.ts} +0 -0
@@ -118,15 +118,21 @@ it('runs through a common workflow', async () => {
118
118
  const vc2 = new TestUserViewerContext(entityCompanionProvider, uuidv4());
119
119
 
120
120
  const blahOwner1 = await enforceAsyncResult(
121
- BlahEntity.creator(vc1).setField('ownerID', vc1.getUserID()).createAsync(),
121
+ BlahEntity.creatorWithAuthorizationResults(vc1)
122
+ .setField('ownerID', vc1.getUserID())
123
+ .createAsync(),
122
124
  );
123
125
 
124
126
  await enforceAsyncResult(
125
- BlahEntity.creator(vc1).setField('ownerID', vc1.getUserID()).createAsync(),
127
+ BlahEntity.creatorWithAuthorizationResults(vc1)
128
+ .setField('ownerID', vc1.getUserID())
129
+ .createAsync(),
126
130
  );
127
131
 
128
132
  const blahOwner2 = await enforceAsyncResult(
129
- BlahEntity.creator(vc2).setField('ownerID', vc2.getUserID()).createAsync(),
133
+ BlahEntity.creatorWithAuthorizationResults(vc2)
134
+ .setField('ownerID', vc2.getUserID())
135
+ .createAsync(),
130
136
  );
131
137
 
132
138
  // sanity check created objects
@@ -136,40 +142,43 @@ it('runs through a common workflow', async () => {
136
142
  // check that two people can't read each others data
137
143
  await expect(
138
144
  enforceAsyncResult(
139
- BlahEntity.loader(vc1).withAuthorizationResults().loadByIDAsync(blahOwner2.getID()),
145
+ BlahEntity.loaderWithAuthorizationResults(vc1).loadByIDAsync(blahOwner2.getID()),
140
146
  ),
141
147
  ).rejects.toBeInstanceOf(EntityNotAuthorizedError);
142
148
  await expect(
143
149
  enforceAsyncResult(
144
- BlahEntity.loader(vc2).withAuthorizationResults().loadByIDAsync(blahOwner1.getID()),
150
+ BlahEntity.loaderWithAuthorizationResults(vc2).loadByIDAsync(blahOwner1.getID()),
145
151
  ),
146
152
  ).rejects.toBeInstanceOf(EntityNotAuthorizedError);
147
153
 
148
154
  // check that all of owner 1's objects can be loaded
149
155
  const results = await enforceResultsAsync(
150
- BlahEntity.loader(vc1)
151
- .withAuthorizationResults()
152
- .loadManyByFieldEqualingAsync('ownerID', vc1.getUserID()),
156
+ BlahEntity.loaderWithAuthorizationResults(vc1).loadManyByFieldEqualingAsync(
157
+ 'ownerID',
158
+ vc1.getUserID(),
159
+ ),
153
160
  );
154
161
  expect(results).toHaveLength(2);
155
162
 
156
163
  // check that two people can't create objects owned by others
157
164
  await expect(
158
165
  enforceAsyncResult(
159
- BlahEntity.creator(vc2).setField('ownerID', blahOwner1.getID()).createAsync(),
166
+ BlahEntity.creatorWithAuthorizationResults(vc2)
167
+ .setField('ownerID', blahOwner1.getID())
168
+ .createAsync(),
160
169
  ),
161
170
  ).rejects.toBeInstanceOf(EntityNotAuthorizedError);
162
171
 
163
172
  // check that empty load many returns nothing
164
- const results2 = await BlahEntity.loader(vc1)
165
- .withAuthorizationResults()
166
- .loadManyByFieldEqualingManyAsync('ownerID', []);
173
+ const results2 = await BlahEntity.loaderWithAuthorizationResults(
174
+ vc1,
175
+ ).loadManyByFieldEqualingManyAsync('ownerID', []);
167
176
  for (const value in results2.values) {
168
177
  expect(value).toHaveLength(0);
169
178
  }
170
179
 
171
180
  // check that the user can't delete their own data (as specified by privacy rules)
172
- await expect(enforceAsyncResult(BlahEntity.deleteAsync(blahOwner2))).rejects.toBeInstanceOf(
173
- EntityNotAuthorizedError,
174
- );
181
+ await expect(
182
+ enforceAsyncResult(BlahEntity.deleterWithAuthorizationResults(blahOwner2).deleteAsync()),
183
+ ).rejects.toBeInstanceOf(EntityNotAuthorizedError);
175
184
  });
@@ -527,40 +527,36 @@ describe('EntityMutator.processEntityDeletionForInboundEdgesAsync', () => {
527
527
  const companionProvider = createUnitTestEntityCompanionProvider();
528
528
  const viewerContext = new TestViewerContext(companionProvider);
529
529
 
530
- const parent = await ParentEntity.creator(viewerContext).enforceCreateAsync();
530
+ const parent = await ParentEntity.creator(viewerContext).createAsync();
531
531
  const child = await ChildEntity.creator(viewerContext)
532
532
  .setField('parent_id', parent.getID())
533
- .enforceCreateAsync();
533
+ .createAsync();
534
534
  const grandchild = await GrandChildEntity.creator(viewerContext)
535
535
  .setField('parent_id', child.getID())
536
- .enforceCreateAsync();
536
+ .createAsync();
537
537
 
538
538
  await expect(
539
- ParentEntity.loader(viewerContext).enforcing().loadByIDNullableAsync(parent.getID()),
539
+ ParentEntity.loader(viewerContext).loadByIDNullableAsync(parent.getID()),
540
540
  ).resolves.not.toBeNull();
541
541
  await expect(
542
- ChildEntity.loader(viewerContext).enforcing().loadByIDNullableAsync(child.getID()),
542
+ ChildEntity.loader(viewerContext).loadByIDNullableAsync(child.getID()),
543
543
  ).resolves.not.toBeNull();
544
544
  await expect(
545
- GrandChildEntity.loader(viewerContext)
546
- .enforcing()
547
- .loadByIDNullableAsync(grandchild.getID()),
545
+ GrandChildEntity.loader(viewerContext).loadByIDNullableAsync(grandchild.getID()),
548
546
  ).resolves.not.toBeNull();
549
547
 
550
548
  privacyPolicyEvaluationRecords.shouldRecord = true;
551
- await ParentEntity.enforceDeleteAsync(parent);
549
+ await ParentEntity.deleter(parent).deleteAsync();
552
550
  privacyPolicyEvaluationRecords.shouldRecord = false;
553
551
 
554
552
  await expect(
555
- ParentEntity.loader(viewerContext).enforcing().loadByIDNullableAsync(parent.getID()),
553
+ ParentEntity.loader(viewerContext).loadByIDNullableAsync(parent.getID()),
556
554
  ).resolves.toBeNull();
557
555
  await expect(
558
- ChildEntity.loader(viewerContext).enforcing().loadByIDNullableAsync(child.getID()),
556
+ ChildEntity.loader(viewerContext).loadByIDNullableAsync(child.getID()),
559
557
  ).resolves.toBeNull();
560
558
  await expect(
561
- GrandChildEntity.loader(viewerContext)
562
- .enforcing()
563
- .loadByIDNullableAsync(grandchild.getID()),
559
+ GrandChildEntity.loader(viewerContext).loadByIDNullableAsync(grandchild.getID()),
564
560
  ).resolves.toBeNull();
565
561
 
566
562
  // two calls for each trigger, one beforeDelete, one afterDelete
@@ -649,42 +645,38 @@ describe('EntityMutator.processEntityDeletionForInboundEdgesAsync', () => {
649
645
  const companionProvider = createUnitTestEntityCompanionProvider();
650
646
  const viewerContext = new TestViewerContext(companionProvider);
651
647
 
652
- const parent = await ParentEntity.creator(viewerContext).enforceCreateAsync();
648
+ const parent = await ParentEntity.creator(viewerContext).createAsync();
653
649
  const child = await ChildEntity.creator(viewerContext)
654
650
  .setField('parent_id', parent.getID())
655
- .enforceCreateAsync();
651
+ .createAsync();
656
652
  const grandchild = await GrandChildEntity.creator(viewerContext)
657
653
  .setField('parent_id', child.getID())
658
- .enforceCreateAsync();
654
+ .createAsync();
659
655
 
660
656
  await expect(
661
- ParentEntity.loader(viewerContext).enforcing().loadByIDNullableAsync(parent.getID()),
657
+ ParentEntity.loader(viewerContext).loadByIDNullableAsync(parent.getID()),
662
658
  ).resolves.not.toBeNull();
663
659
  await expect(
664
- ChildEntity.loader(viewerContext).enforcing().loadByIDNullableAsync(child.getID()),
660
+ ChildEntity.loader(viewerContext).loadByIDNullableAsync(child.getID()),
665
661
  ).resolves.not.toBeNull();
666
662
  await expect(
667
- GrandChildEntity.loader(viewerContext)
668
- .enforcing()
669
- .loadByIDNullableAsync(grandchild.getID()),
663
+ GrandChildEntity.loader(viewerContext).loadByIDNullableAsync(grandchild.getID()),
670
664
  ).resolves.not.toBeNull();
671
665
 
672
666
  privacyPolicyEvaluationRecords.shouldRecord = true;
673
- await ParentEntity.enforceDeleteAsync(parent);
667
+ await ParentEntity.deleter(parent).deleteAsync();
674
668
  privacyPolicyEvaluationRecords.shouldRecord = false;
675
669
 
676
670
  await expect(
677
- ParentEntity.loader(viewerContext).enforcing().loadByIDNullableAsync(parent.getID()),
671
+ ParentEntity.loader(viewerContext).loadByIDNullableAsync(parent.getID()),
678
672
  ).resolves.toBeNull();
679
673
 
680
- const loadedChild = await ChildEntity.loader(viewerContext)
681
- .enforcing()
682
- .loadByIDAsync(child.getID());
674
+ const loadedChild = await ChildEntity.loader(viewerContext).loadByIDAsync(child.getID());
683
675
  expect(loadedChild.getField('parent_id')).toBeNull();
684
676
 
685
- const loadedGrandchild = await GrandChildEntity.loader(viewerContext)
686
- .enforcing()
687
- .loadByIDAsync(grandchild.getID());
677
+ const loadedGrandchild = await GrandChildEntity.loader(viewerContext).loadByIDAsync(
678
+ grandchild.getID(),
679
+ );
688
680
  expect(loadedGrandchild.getField('parent_id')).toEqual(loadedChild.getID());
689
681
 
690
682
  // two calls for only parent trigger, one beforeDelete, one afterDelete
@@ -762,26 +754,22 @@ describe('EntityMutator.processEntityDeletionForInboundEdgesAsync', () => {
762
754
  const companionProvider = createUnitTestEntityCompanionProvider();
763
755
  const viewerContext = new TestViewerContext(companionProvider);
764
756
 
765
- const parent = await ParentEntity.creator(viewerContext).enforceCreateAsync();
757
+ const parent = await ParentEntity.creator(viewerContext).createAsync();
766
758
  const child = await ChildEntity.creator(viewerContext)
767
759
  .setField('parent_id', parent.getID())
768
- .enforceCreateAsync();
760
+ .createAsync();
769
761
  const grandchild = await GrandChildEntity.creator(viewerContext)
770
762
  .setField('parent_id', child.getID())
771
- .enforceCreateAsync();
763
+ .createAsync();
772
764
 
773
765
  await expect(
774
- ParentEntity.loader(viewerContext).enforcing().loadByIDNullableAsync(parent.getID()),
766
+ ParentEntity.loader(viewerContext).loadByIDNullableAsync(parent.getID()),
775
767
  ).resolves.not.toBeNull();
776
768
  await expect(
777
- ChildEntity.loader(viewerContext)
778
- .enforcing()
779
- .loadByFieldEqualingAsync('parent_id', parent.getID()),
769
+ ChildEntity.loader(viewerContext).loadByFieldEqualingAsync('parent_id', parent.getID()),
780
770
  ).resolves.not.toBeNull();
781
771
  await expect(
782
- GrandChildEntity.loader(viewerContext)
783
- .enforcing()
784
- .loadByFieldEqualingAsync('parent_id', child.getID()),
772
+ GrandChildEntity.loader(viewerContext).loadByFieldEqualingAsync('parent_id', child.getID()),
785
773
  ).resolves.not.toBeNull();
786
774
 
787
775
  const childCacheAdapter = viewerContext.getViewerScopedEntityCompanionForClass(ChildEntity)[
@@ -803,7 +791,7 @@ describe('EntityMutator.processEntityDeletionForInboundEdgesAsync', () => {
803
791
  expect(grandChildCachedBefore.get(child.getID())?.status).toEqual(CacheStatus.HIT);
804
792
 
805
793
  privacyPolicyEvaluationRecords.shouldRecord = true;
806
- await ParentEntity.enforceDeleteAsync(parent);
794
+ await ParentEntity.deleter(parent).deleteAsync();
807
795
  privacyPolicyEvaluationRecords.shouldRecord = false;
808
796
 
809
797
  const childCachedAfter = await childCacheAdapter.loadManyAsync('parent_id', [parent.getID()]);
@@ -815,17 +803,15 @@ describe('EntityMutator.processEntityDeletionForInboundEdgesAsync', () => {
815
803
  expect(grandChildCachedAfter.get(child.getID())?.status).toEqual(CacheStatus.HIT);
816
804
 
817
805
  await expect(
818
- ParentEntity.loader(viewerContext).enforcing().loadByIDNullableAsync(parent.getID()),
806
+ ParentEntity.loader(viewerContext).loadByIDNullableAsync(parent.getID()),
819
807
  ).resolves.toBeNull();
820
808
 
821
- const loadedChild = await ChildEntity.loader(viewerContext)
822
- .enforcing()
823
- .loadByIDAsync(child.getID());
809
+ const loadedChild = await ChildEntity.loader(viewerContext).loadByIDAsync(child.getID());
824
810
  expect(loadedChild).not.toBeNull();
825
811
 
826
- const loadedGrandchild = await GrandChildEntity.loader(viewerContext)
827
- .enforcing()
828
- .loadByIDAsync(grandchild.getID());
812
+ const loadedGrandchild = await GrandChildEntity.loader(viewerContext).loadByIDAsync(
813
+ grandchild.getID(),
814
+ );
829
815
  expect(loadedGrandchild.getField('parent_id')).toEqual(loadedChild.getID());
830
816
 
831
817
  // two calls for only parent trigger, one beforeDelete, one afterDelete
@@ -901,26 +887,22 @@ describe('EntityMutator.processEntityDeletionForInboundEdgesAsync', () => {
901
887
  const companionProvider = createUnitTestEntityCompanionProvider();
902
888
  const viewerContext = new TestViewerContext(companionProvider);
903
889
 
904
- const parent = await ParentEntity.creator(viewerContext).enforceCreateAsync();
890
+ const parent = await ParentEntity.creator(viewerContext).createAsync();
905
891
  const child = await ChildEntity.creator(viewerContext)
906
892
  .setField('parent_id', parent.getID())
907
- .enforceCreateAsync();
893
+ .createAsync();
908
894
  const grandchild = await GrandChildEntity.creator(viewerContext)
909
895
  .setField('parent_id', child.getID())
910
- .enforceCreateAsync();
896
+ .createAsync();
911
897
 
912
898
  await expect(
913
- ParentEntity.loader(viewerContext).enforcing().loadByIDNullableAsync(parent.getID()),
899
+ ParentEntity.loader(viewerContext).loadByIDNullableAsync(parent.getID()),
914
900
  ).resolves.not.toBeNull();
915
901
  await expect(
916
- ChildEntity.loader(viewerContext)
917
- .enforcing()
918
- .loadByFieldEqualingAsync('parent_id', parent.getID()),
902
+ ChildEntity.loader(viewerContext).loadByFieldEqualingAsync('parent_id', parent.getID()),
919
903
  ).resolves.not.toBeNull();
920
904
  await expect(
921
- GrandChildEntity.loader(viewerContext)
922
- .enforcing()
923
- .loadByFieldEqualingAsync('parent_id', child.getID()),
905
+ GrandChildEntity.loader(viewerContext).loadByFieldEqualingAsync('parent_id', child.getID()),
924
906
  ).resolves.not.toBeNull();
925
907
 
926
908
  const childCacheAdapter = viewerContext.getViewerScopedEntityCompanionForClass(ChildEntity)[
@@ -942,7 +924,7 @@ describe('EntityMutator.processEntityDeletionForInboundEdgesAsync', () => {
942
924
  expect(grandChildCachedBefore.get(child.getID())?.status).toEqual(CacheStatus.HIT);
943
925
 
944
926
  privacyPolicyEvaluationRecords.shouldRecord = true;
945
- await ParentEntity.enforceDeleteAsync(parent);
927
+ await ParentEntity.deleter(parent).deleteAsync();
946
928
  privacyPolicyEvaluationRecords.shouldRecord = false;
947
929
 
948
930
  const childCachedAfter = await childCacheAdapter.loadManyAsync('parent_id', [parent.getID()]);
@@ -954,15 +936,13 @@ describe('EntityMutator.processEntityDeletionForInboundEdgesAsync', () => {
954
936
  expect(grandChildCachedAfter.get(child.getID())?.status).toEqual(CacheStatus.MISS);
955
937
 
956
938
  await expect(
957
- ParentEntity.loader(viewerContext).enforcing().loadByIDNullableAsync(parent.getID()),
939
+ ParentEntity.loader(viewerContext).loadByIDNullableAsync(parent.getID()),
958
940
  ).resolves.toBeNull();
959
941
  await expect(
960
- ChildEntity.loader(viewerContext).enforcing().loadByIDNullableAsync(child.getID()),
942
+ ChildEntity.loader(viewerContext).loadByIDNullableAsync(child.getID()),
961
943
  ).resolves.not.toBeNull();
962
944
  await expect(
963
- GrandChildEntity.loader(viewerContext)
964
- .enforcing()
965
- .loadByIDNullableAsync(grandchild.getID()),
945
+ GrandChildEntity.loader(viewerContext).loadByIDNullableAsync(grandchild.getID()),
966
946
  ).resolves.not.toBeNull();
967
947
 
968
948
  // two calls for each trigger, one beforeDelete, one afterDelete