@expo/entity 0.34.0 → 0.36.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 (333) hide show
  1. package/build/AuthorizationResultBasedEntityLoader.d.ts +128 -0
  2. package/build/AuthorizationResultBasedEntityLoader.js +196 -0
  3. package/build/AuthorizationResultBasedEntityLoader.js.map +1 -0
  4. package/build/ComposedEntityCacheAdapter.js +1 -0
  5. package/build/ComposedEntityCacheAdapter.js.map +1 -1
  6. package/build/ComposedSecondaryEntityCache.js +1 -0
  7. package/build/ComposedSecondaryEntityCache.js.map +1 -1
  8. package/build/EnforcingEntityLoader.d.ts +5 -4
  9. package/build/EnforcingEntityLoader.js +4 -2
  10. package/build/EnforcingEntityLoader.js.map +1 -1
  11. package/build/Entity.d.ts +4 -31
  12. package/build/Entity.js +19 -46
  13. package/build/Entity.js.map +1 -1
  14. package/build/EntityAssociationLoader.d.ts +9 -9
  15. package/build/EntityAssociationLoader.js +37 -12
  16. package/build/EntityAssociationLoader.js.map +1 -1
  17. package/build/EntityCompanion.js +9 -1
  18. package/build/EntityCompanion.js.map +1 -1
  19. package/build/EntityCompanionProvider.d.ts +3 -1
  20. package/build/EntityCompanionProvider.js +10 -4
  21. package/build/EntityCompanionProvider.js.map +1 -1
  22. package/build/EntityConfiguration.d.ts +2 -1
  23. package/build/EntityConfiguration.js +19 -1
  24. package/build/EntityConfiguration.js.map +1 -1
  25. package/build/EntityDatabaseAdapter.d.ts +2 -2
  26. package/build/EntityDatabaseAdapter.js +5 -3
  27. package/build/EntityDatabaseAdapter.js.map +1 -1
  28. package/build/EntityFieldDefinition.d.ts +21 -10
  29. package/build/EntityFieldDefinition.js +8 -9
  30. package/build/EntityFieldDefinition.js.map +1 -1
  31. package/build/EntityFields.d.ts +10 -0
  32. package/build/EntityFields.js +15 -1
  33. package/build/EntityFields.js.map +1 -1
  34. package/build/EntityLoader.d.ts +12 -125
  35. package/build/EntityLoader.js +24 -239
  36. package/build/EntityLoader.js.map +1 -1
  37. package/build/EntityLoaderFactory.d.ts +1 -1
  38. package/build/EntityLoaderFactory.js +3 -0
  39. package/build/EntityLoaderFactory.js.map +1 -1
  40. package/build/EntityLoaderUtils.d.ts +58 -0
  41. package/build/EntityLoaderUtils.js +109 -0
  42. package/build/EntityLoaderUtils.js.map +1 -0
  43. package/build/EntityMutator.d.ts +1 -0
  44. package/build/EntityMutator.js +71 -56
  45. package/build/EntityMutator.js.map +1 -1
  46. package/build/EntityMutatorFactory.js +9 -0
  47. package/build/EntityMutatorFactory.js.map +1 -1
  48. package/build/EntityPrivacyPolicy.d.ts +11 -5
  49. package/build/EntityPrivacyPolicy.js +5 -7
  50. package/build/EntityPrivacyPolicy.js.map +1 -1
  51. package/build/EntityQueryContext.d.ts +2 -1
  52. package/build/EntityQueryContext.js +11 -6
  53. package/build/EntityQueryContext.js.map +1 -1
  54. package/build/EntityQueryContextProvider.d.ts +1 -1
  55. package/build/EntityQueryContextProvider.js +1 -1
  56. package/build/EntityQueryContextProvider.js.map +1 -1
  57. package/build/EntitySecondaryCacheLoader.js +5 -1
  58. package/build/EntitySecondaryCacheLoader.js.map +1 -1
  59. package/build/GenericEntityCacheAdapter.js +1 -0
  60. package/build/GenericEntityCacheAdapter.js.map +1 -1
  61. package/build/GenericSecondaryEntityCache.js +2 -0
  62. package/build/GenericSecondaryEntityCache.js.map +1 -1
  63. package/build/IEntityCacheAdapterProvider.d.ts +1 -1
  64. package/build/IEntityDatabaseAdapterProvider.d.ts +1 -1
  65. package/build/ReadonlyEntity.d.ts +1 -1
  66. package/build/ReadonlyEntity.js +9 -2
  67. package/build/ReadonlyEntity.js.map +1 -1
  68. package/build/ViewerContext.d.ts +2 -2
  69. package/build/ViewerContext.js +5 -3
  70. package/build/ViewerContext.js.map +1 -1
  71. package/build/ViewerScopedEntityCompanion.js +2 -0
  72. package/build/ViewerScopedEntityCompanion.js.map +1 -1
  73. package/build/ViewerScopedEntityCompanionProvider.d.ts +0 -1
  74. package/build/ViewerScopedEntityCompanionProvider.js +2 -1
  75. package/build/ViewerScopedEntityCompanionProvider.js.map +1 -1
  76. package/build/ViewerScopedEntityLoaderFactory.d.ts +1 -1
  77. package/build/ViewerScopedEntityLoaderFactory.js +2 -0
  78. package/build/ViewerScopedEntityLoaderFactory.js.map +1 -1
  79. package/build/ViewerScopedEntityMutatorFactory.js +2 -0
  80. package/build/ViewerScopedEntityMutatorFactory.js.map +1 -1
  81. package/build/__tests__/ComposedCacheAdapter-test.js +2 -0
  82. package/build/__tests__/ComposedCacheAdapter-test.js.map +1 -1
  83. package/build/__tests__/ComposedSecondaryEntityCache-test.js +1 -0
  84. package/build/__tests__/ComposedSecondaryEntityCache-test.js.map +1 -1
  85. package/build/__tests__/EnforcingEntityLoader-test.js +101 -113
  86. package/build/__tests__/EnforcingEntityLoader-test.js.map +1 -1
  87. package/build/__tests__/Entity-test.js +5 -137
  88. package/build/__tests__/Entity-test.js.map +1 -1
  89. package/build/__tests__/EntityAssociationLoader-test.js +37 -65
  90. package/build/__tests__/EntityAssociationLoader-test.js.map +1 -1
  91. package/build/__tests__/EntityCommonUseCases-test.js +31 -37
  92. package/build/__tests__/EntityCommonUseCases-test.js.map +1 -1
  93. package/build/__tests__/EntityCompanion-test.js +26 -3
  94. package/build/__tests__/EntityCompanion-test.js.map +1 -1
  95. package/build/__tests__/EntityConfiguration-test.js +103 -0
  96. package/build/__tests__/EntityConfiguration-test.js.map +1 -0
  97. package/build/__tests__/EntityDatabaseAdapter-test.js +6 -0
  98. package/build/__tests__/EntityDatabaseAdapter-test.js.map +1 -1
  99. package/build/__tests__/EntityEdges-test.js +89 -80
  100. package/build/__tests__/EntityEdges-test.js.map +1 -1
  101. package/build/__tests__/EntityFields-test.js +6 -0
  102. package/build/__tests__/EntityFields-test.js.map +1 -1
  103. package/build/__tests__/EntityLoader-constructor-test.js +17 -18
  104. package/build/__tests__/EntityLoader-constructor-test.js.map +1 -1
  105. package/build/__tests__/EntityLoader-test.js +93 -41
  106. package/build/__tests__/EntityLoader-test.js.map +1 -1
  107. package/build/__tests__/EntityMutator-MutationCacheConsistency-test.js +18 -21
  108. package/build/__tests__/EntityMutator-MutationCacheConsistency-test.js.map +1 -1
  109. package/build/__tests__/EntityMutator-test.js +74 -29
  110. package/build/__tests__/EntityMutator-test.js.map +1 -1
  111. package/build/__tests__/EntityPrivacyPolicy-test.js +77 -59
  112. package/build/__tests__/EntityPrivacyPolicy-test.js.map +1 -1
  113. package/build/__tests__/EntityQueryContext-test.js +9 -0
  114. package/build/__tests__/EntityQueryContext-test.js.map +1 -1
  115. package/build/__tests__/EntitySecondaryCacheLoader-test.js +10 -10
  116. package/build/__tests__/EntitySecondaryCacheLoader-test.js.map +1 -1
  117. package/build/__tests__/EntitySelfReferentialEdges-test.js +59 -74
  118. package/build/__tests__/EntitySelfReferentialEdges-test.js.map +1 -1
  119. package/build/__tests__/ReadonlyEntity-test.js +13 -13
  120. package/build/__tests__/ReadonlyEntity-test.js.map +1 -1
  121. package/build/__tests__/ViewerContext-test.js +2 -2
  122. package/build/__tests__/ViewerContext-test.js.map +1 -1
  123. package/build/__tests__/ViewerScopedEntityLoaderFactory-test.js.map +1 -1
  124. package/build/__tests__/cases/TwoEntitySameTableDisjointRows-test.js +26 -28
  125. package/build/__tests__/cases/TwoEntitySameTableDisjointRows-test.js.map +1 -1
  126. package/build/__tests__/cases/TwoEntitySameTableOverlappingRows-test.js +25 -30
  127. package/build/__tests__/cases/TwoEntitySameTableOverlappingRows-test.js.map +1 -1
  128. package/build/entityUtils.d.ts +1 -1
  129. package/build/entityUtils.js.map +1 -1
  130. package/build/errors/EntityCacheAdapterError.js +2 -5
  131. package/build/errors/EntityCacheAdapterError.js.map +1 -1
  132. package/build/errors/EntityDatabaseAdapterError.js +14 -35
  133. package/build/errors/EntityDatabaseAdapterError.js.map +1 -1
  134. package/build/errors/EntityError.js +1 -0
  135. package/build/errors/EntityError.js.map +1 -1
  136. package/build/errors/EntityInvalidFieldValueError.js +2 -2
  137. package/build/errors/EntityInvalidFieldValueError.js.map +1 -1
  138. package/build/errors/EntityNotAuthorizedError.js +3 -2
  139. package/build/errors/EntityNotAuthorizedError.js.map +1 -1
  140. package/build/errors/EntityNotFoundError.js +2 -2
  141. package/build/errors/EntityNotFoundError.js.map +1 -1
  142. package/build/index.d.ts +1 -0
  143. package/build/index.js +1 -0
  144. package/build/index.js.map +1 -1
  145. package/build/internal/EntityDataManager.d.ts +1 -1
  146. package/build/internal/EntityDataManager.js +7 -2
  147. package/build/internal/EntityDataManager.js.map +1 -1
  148. package/build/internal/EntityFieldTransformationUtils.d.ts +5 -5
  149. package/build/internal/EntityFieldTransformationUtils.js +5 -8
  150. package/build/internal/EntityFieldTransformationUtils.js.map +1 -1
  151. package/build/internal/EntityTableDataCoordinator.d.ts +1 -1
  152. package/build/internal/EntityTableDataCoordinator.js +5 -0
  153. package/build/internal/EntityTableDataCoordinator.js.map +1 -1
  154. package/build/internal/ReadThroughEntityCache.d.ts +1 -1
  155. package/build/internal/ReadThroughEntityCache.js +2 -0
  156. package/build/internal/ReadThroughEntityCache.js.map +1 -1
  157. package/build/internal/__tests__/EntityDataManager-test.js +11 -11
  158. package/build/internal/__tests__/EntityDataManager-test.js.map +1 -1
  159. package/build/internal/__tests__/EntityFieldTransformationUtils-test.js +6 -2
  160. package/build/internal/__tests__/EntityFieldTransformationUtils-test.js.map +1 -1
  161. package/build/internal/__tests__/ReadThroughEntityCache-test.js +33 -0
  162. package/build/internal/__tests__/ReadThroughEntityCache-test.js.map +1 -1
  163. package/build/metrics/IEntityMetricsAdapter.d.ts +1 -1
  164. package/build/rules/AlwaysAllowPrivacyPolicyRule.d.ts +1 -1
  165. package/build/rules/AlwaysAllowPrivacyPolicyRule.js.map +1 -1
  166. package/build/rules/AlwaysDenyPrivacyPolicyRule.d.ts +1 -1
  167. package/build/rules/AlwaysDenyPrivacyPolicyRule.js.map +1 -1
  168. package/build/rules/AlwaysSkipPrivacyPolicyRule.d.ts +1 -1
  169. package/build/rules/AlwaysSkipPrivacyPolicyRule.js.map +1 -1
  170. package/build/rules/PrivacyPolicyRule.d.ts +1 -1
  171. package/build/rules/PrivacyPolicyRule.js.map +1 -1
  172. package/build/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.js.map +1 -1
  173. package/build/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.js.map +1 -1
  174. package/build/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.js.map +1 -1
  175. package/build/testfixtures/DateIDTestEntity.js +12 -15
  176. package/build/testfixtures/DateIDTestEntity.js.map +1 -1
  177. package/build/testfixtures/SimpleTestEntity.d.ts +8 -8
  178. package/build/testfixtures/SimpleTestEntity.js +12 -15
  179. package/build/testfixtures/SimpleTestEntity.js.map +1 -1
  180. package/build/testfixtures/TestEntity.d.ts +12 -12
  181. package/build/testfixtures/TestEntity.js +12 -15
  182. package/build/testfixtures/TestEntity.js.map +1 -1
  183. package/build/testfixtures/TestEntity2.d.ts +8 -8
  184. package/build/testfixtures/TestEntity2.js +12 -15
  185. package/build/testfixtures/TestEntity2.js.map +1 -1
  186. package/build/testfixtures/TestEntityNumberKey.js +12 -15
  187. package/build/testfixtures/TestEntityNumberKey.js.map +1 -1
  188. package/build/testfixtures/TestEntityWithMutationTriggers.d.ts +36 -0
  189. package/build/testfixtures/TestEntityWithMutationTriggers.js +82 -0
  190. package/build/testfixtures/TestEntityWithMutationTriggers.js.map +1 -0
  191. package/build/testfixtures/TestViewerContext.d.ts +0 -3
  192. package/build/testfixtures/TestViewerContext.js +0 -6
  193. package/build/testfixtures/TestViewerContext.js.map +1 -1
  194. package/build/utils/EntityPrivacyUtils.d.ts +34 -0
  195. package/build/utils/EntityPrivacyUtils.js +160 -0
  196. package/build/utils/EntityPrivacyUtils.js.map +1 -0
  197. package/build/utils/__tests__/EntityPrivacyUtils-test.d.ts +1 -0
  198. package/build/utils/__tests__/EntityPrivacyUtils-test.js +395 -0
  199. package/build/utils/__tests__/EntityPrivacyUtils-test.js.map +1 -0
  200. package/build/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.d.ts +1 -0
  201. package/build/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.js +26 -0
  202. package/build/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.js.map +1 -0
  203. package/build/utils/collections/maps.js.map +1 -1
  204. package/build/utils/mergeEntityMutationTriggerConfigurations.d.ts +4 -0
  205. package/build/utils/mergeEntityMutationTriggerConfigurations.js +28 -0
  206. package/build/utils/mergeEntityMutationTriggerConfigurations.js.map +1 -0
  207. package/build/utils/testing/PrivacyPolicyRuleTestUtils.d.ts +1 -1
  208. package/build/utils/testing/PrivacyPolicyRuleTestUtils.js.map +1 -1
  209. package/build/utils/testing/StubCacheAdapter.d.ts +3 -3
  210. package/build/utils/testing/StubCacheAdapter.js +3 -3
  211. package/build/utils/testing/StubCacheAdapter.js.map +1 -1
  212. package/build/utils/testing/StubDatabaseAdapter.d.ts +2 -2
  213. package/build/utils/testing/StubDatabaseAdapter.js +4 -2
  214. package/build/utils/testing/StubDatabaseAdapter.js.map +1 -1
  215. package/build/utils/testing/StubDatabaseAdapterProvider.d.ts +1 -1
  216. package/build/utils/testing/StubDatabaseAdapterProvider.js +1 -3
  217. package/build/utils/testing/StubDatabaseAdapterProvider.js.map +1 -1
  218. package/build/utils/testing/__tests__/PrivacyPolicyRuleTestUtils-test.d.ts +1 -0
  219. package/build/utils/testing/__tests__/PrivacyPolicyRuleTestUtils-test.js +42 -0
  220. package/build/utils/testing/__tests__/PrivacyPolicyRuleTestUtils-test.js.map +1 -0
  221. package/build/utils/testing/__tests__/StubDatabaseAdapter-test.js +53 -0
  222. package/build/utils/testing/__tests__/StubDatabaseAdapter-test.js.map +1 -1
  223. package/build/utils/testing/describeFieldTestCase.js.map +1 -1
  224. package/package.json +4 -3
  225. package/src/AuthorizationResultBasedEntityLoader.ts +297 -0
  226. package/src/ComposedEntityCacheAdapter.ts +6 -6
  227. package/src/ComposedSecondaryEntityCache.ts +8 -8
  228. package/src/EnforcingEntityLoader.ts +20 -19
  229. package/src/Entity.ts +26 -118
  230. package/src/EntityAssociationLoader.ts +56 -41
  231. package/src/EntityCompanion.ts +8 -4
  232. package/src/EntityCompanionProvider.ts +24 -16
  233. package/src/EntityConfiguration.ts +18 -7
  234. package/src/EntityDatabaseAdapter.ts +41 -41
  235. package/src/EntityFieldDefinition.ts +28 -18
  236. package/src/EntityFields.ts +15 -0
  237. package/src/EntityLoader.ts +63 -357
  238. package/src/EntityLoaderFactory.ts +10 -4
  239. package/src/EntityLoaderUtils.ts +149 -0
  240. package/src/EntityMutationInfo.ts +2 -2
  241. package/src/EntityMutationTriggerConfiguration.ts +5 -5
  242. package/src/EntityMutationValidator.ts +2 -2
  243. package/src/EntityMutator.ts +146 -144
  244. package/src/EntityMutatorFactory.ts +8 -8
  245. package/src/EntityPrivacyPolicy.ts +78 -28
  246. package/src/EntityQueryContext.ts +14 -13
  247. package/src/EntityQueryContextProvider.ts +6 -6
  248. package/src/EntitySecondaryCacheLoader.ts +13 -11
  249. package/src/GenericEntityCacheAdapter.ts +10 -10
  250. package/src/GenericSecondaryEntityCache.ts +6 -6
  251. package/src/IEntityCacheAdapter.ts +4 -4
  252. package/src/IEntityCacheAdapterProvider.ts +2 -2
  253. package/src/IEntityDatabaseAdapterProvider.ts +2 -2
  254. package/src/ReadonlyEntity.ts +8 -5
  255. package/src/ViewerContext.ts +10 -10
  256. package/src/ViewerScopedEntityCompanion.ts +4 -4
  257. package/src/ViewerScopedEntityCompanionProvider.ts +4 -5
  258. package/src/ViewerScopedEntityLoaderFactory.ts +10 -4
  259. package/src/ViewerScopedEntityMutatorFactory.ts +5 -5
  260. package/src/__tests__/ComposedCacheAdapter-test.ts +12 -10
  261. package/src/__tests__/ComposedSecondaryEntityCache-test.ts +8 -8
  262. package/src/__tests__/EnforcingEntityLoader-test.ts +236 -159
  263. package/src/__tests__/Entity-test.ts +5 -223
  264. package/src/__tests__/EntityAssociationLoader-test.ts +91 -169
  265. package/src/__tests__/EntityCommonUseCases-test.ts +36 -38
  266. package/src/__tests__/EntityCompanion-test.ts +57 -5
  267. package/src/__tests__/EntityConfiguration-test.ts +118 -0
  268. package/src/__tests__/EntityDatabaseAdapter-test.ts +11 -11
  269. package/src/__tests__/EntityEdges-test.ts +128 -118
  270. package/src/__tests__/EntityFields-test.ts +14 -2
  271. package/src/__tests__/EntityLoader-constructor-test.ts +21 -8
  272. package/src/__tests__/EntityLoader-test.ts +233 -105
  273. package/src/__tests__/EntityMutator-MutationCacheConsistency-test.ts +17 -20
  274. package/src/__tests__/EntityMutator-test.ts +342 -163
  275. package/src/__tests__/EntityPrivacyPolicy-test.ts +166 -53
  276. package/src/__tests__/EntityQueryContext-test.ts +30 -12
  277. package/src/__tests__/EntitySecondaryCacheLoader-test.ts +17 -26
  278. package/src/__tests__/EntitySelfReferentialEdges-test.ts +67 -115
  279. package/src/__tests__/GenericEntityCacheAdapter-test.ts +2 -2
  280. package/src/__tests__/ReadonlyEntity-test.ts +13 -15
  281. package/src/__tests__/ViewerContext-test.ts +3 -4
  282. package/src/__tests__/ViewerScopedEntityCompanion-test.ts +2 -2
  283. package/src/__tests__/ViewerScopedEntityCompanionProvider-test.ts +2 -2
  284. package/src/__tests__/ViewerScopedEntityLoaderFactory-test.ts +2 -1
  285. package/src/__tests__/cases/TwoEntitySameTableDisjointRows-test.ts +34 -45
  286. package/src/__tests__/cases/TwoEntitySameTableOverlappingRows-test.ts +22 -30
  287. package/src/__tests__/entityUtils-test.ts +2 -2
  288. package/src/entityUtils.ts +4 -4
  289. package/src/errors/EntityError.ts +4 -1
  290. package/src/errors/EntityInvalidFieldValueError.ts +2 -2
  291. package/src/errors/EntityNotAuthorizedError.ts +3 -3
  292. package/src/errors/EntityNotFoundError.ts +2 -2
  293. package/src/index.ts +1 -0
  294. package/src/internal/EntityDataManager.ts +25 -25
  295. package/src/internal/EntityFieldTransformationUtils.ts +39 -32
  296. package/src/internal/EntityTableDataCoordinator.ts +3 -3
  297. package/src/internal/ReadThroughEntityCache.ts +9 -9
  298. package/src/internal/__tests__/EntityDataManager-test.ts +62 -62
  299. package/src/internal/__tests__/EntityFieldTransformationUtils-test.ts +14 -10
  300. package/src/internal/__tests__/ReadThroughEntityCache-test.ts +74 -18
  301. package/src/metrics/EntityMetricsUtils.ts +4 -4
  302. package/src/metrics/IEntityMetricsAdapter.ts +1 -1
  303. package/src/rules/AlwaysAllowPrivacyPolicyRule.ts +9 -3
  304. package/src/rules/AlwaysDenyPrivacyPolicyRule.ts +9 -3
  305. package/src/rules/AlwaysSkipPrivacyPolicyRule.ts +9 -3
  306. package/src/rules/PrivacyPolicyRule.ts +9 -3
  307. package/src/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.ts +2 -1
  308. package/src/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.ts +2 -1
  309. package/src/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.ts +2 -1
  310. package/src/testfixtures/SimpleTestEntity.ts +8 -8
  311. package/src/testfixtures/TestEntity.ts +13 -16
  312. package/src/testfixtures/TestEntity2.ts +8 -8
  313. package/src/testfixtures/TestEntityWithMutationTriggers.ts +156 -0
  314. package/src/testfixtures/TestViewerContext.ts +1 -12
  315. package/src/utils/EntityPrivacyUtils.ts +325 -0
  316. package/src/utils/__tests__/EntityPrivacyUtils-test.ts +570 -0
  317. package/src/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.ts +29 -0
  318. package/src/utils/collections/__tests__/maps-test.ts +2 -2
  319. package/src/utils/collections/maps.ts +11 -11
  320. package/src/utils/mergeEntityMutationTriggerConfigurations.ts +44 -0
  321. package/src/utils/testing/PrivacyPolicyRuleTestUtils.ts +25 -22
  322. package/src/utils/testing/StubCacheAdapter.ts +17 -15
  323. package/src/utils/testing/StubDatabaseAdapter.ts +35 -30
  324. package/src/utils/testing/StubDatabaseAdapterProvider.ts +2 -2
  325. package/src/utils/testing/StubQueryContextProvider.ts +2 -2
  326. package/src/utils/testing/__tests__/PrivacyPolicyRuleTestUtils-test.ts +42 -0
  327. package/src/utils/testing/__tests__/StubDatabaseAdapter-test.ts +111 -29
  328. package/src/utils/testing/createUnitTestEntityCompanionProvider.ts +2 -2
  329. package/src/utils/testing/describeFieldTestCase.ts +1 -1
  330. package/build/__tests__/EntityDataConfiguration-test.js +0 -68
  331. package/build/__tests__/EntityDataConfiguration-test.js.map +0 -1
  332. package/src/__tests__/EntityDataConfiguration-test.ts +0 -77
  333. /package/build/__tests__/{EntityDataConfiguration-test.d.ts → EntityConfiguration-test.d.ts} +0 -0
@@ -1,30 +1,22 @@
1
1
  import Entity from '../Entity';
2
- import { EntityCompanionDefinition } from '../EntityCompanionProvider';
3
- import EntityConfiguration from '../EntityConfiguration';
4
- import { UUIDField } from '../EntityFields';
5
2
  import { CreateMutator, UpdateMutator } from '../EntityMutator';
6
- import EntityPrivacyPolicy from '../EntityPrivacyPolicy';
7
- import AlwaysAllowPrivacyPolicyRule from '../rules/AlwaysAllowPrivacyPolicyRule';
8
- import AlwaysDenyPrivacyPolicyRule from '../rules/AlwaysDenyPrivacyPolicyRule';
3
+ import ViewerContext from '../ViewerContext';
9
4
  import SimpleTestEntity from '../testfixtures/SimpleTestEntity';
10
- import TestViewerContext from '../testfixtures/TestViewerContext';
11
5
  import { createUnitTestEntityCompanionProvider } from '../utils/testing/createUnitTestEntityCompanionProvider';
12
6
 
13
7
  describe(Entity, () => {
14
8
  describe('creator', () => {
15
9
  it('creates a new CreateMutator', () => {
16
10
  const companionProvider = createUnitTestEntityCompanionProvider();
17
- const viewerContext = new TestViewerContext(companionProvider);
18
- expect(
19
- SimpleTestEntity.creator(viewerContext, viewerContext.getQueryContext())
20
- ).toBeInstanceOf(CreateMutator);
11
+ const viewerContext = new ViewerContext(companionProvider);
12
+ expect(SimpleTestEntity.creator(viewerContext)).toBeInstanceOf(CreateMutator);
21
13
  });
22
14
  });
23
15
 
24
16
  describe('updater', () => {
25
17
  it('creates a new UpdateMutator', () => {
26
18
  const companionProvider = createUnitTestEntityCompanionProvider();
27
- const viewerContext = new TestViewerContext(companionProvider);
19
+ const viewerContext = new ViewerContext(companionProvider);
28
20
  const data = {
29
21
  id: 'what',
30
22
  };
@@ -34,217 +26,7 @@ describe(Entity, () => {
34
26
  databaseFields: data,
35
27
  selectedFields: data,
36
28
  });
37
- expect(SimpleTestEntity.updater(testEntity, viewerContext.getQueryContext())).toBeInstanceOf(
38
- UpdateMutator
39
- );
40
- });
41
- });
42
-
43
- describe('canViewerUpdateAsync', () => {
44
- it('appropriately executes update privacy policy', async () => {
45
- const companionProvider = createUnitTestEntityCompanionProvider();
46
- const viewerContext = new TestViewerContext(companionProvider);
47
- const data = {
48
- id: 'what',
49
- };
50
- const testEntity = new SimpleTestDenyDeleteEntity({
51
- viewerContext,
52
- id: 'what',
53
- databaseFields: data,
54
- selectedFields: data,
55
- });
56
- const canViewerUpdate = await SimpleTestDenyDeleteEntity.canViewerUpdateAsync(
57
- testEntity,
58
- viewerContext.getQueryContext()
59
- );
60
- expect(canViewerUpdate).toBe(true);
61
- });
62
-
63
- it('denies when policy denies', async () => {
64
- const companionProvider = createUnitTestEntityCompanionProvider();
65
- const viewerContext = new TestViewerContext(companionProvider);
66
- const data = {
67
- id: 'what',
68
- };
69
- const testEntity = new SimpleTestDenyUpdateEntity({
70
- viewerContext,
71
- id: 'what',
72
- databaseFields: data,
73
- selectedFields: data,
74
- });
75
- const canViewerUpdate = await SimpleTestDenyUpdateEntity.canViewerUpdateAsync(
76
- testEntity,
77
- viewerContext.getQueryContext()
78
- );
79
- expect(canViewerUpdate).toBe(false);
80
- });
81
- });
82
-
83
- describe('canViewerDeleteAsync', () => {
84
- it('appropriately executes update privacy policy', async () => {
85
- const companionProvider = createUnitTestEntityCompanionProvider();
86
- const viewerContext = new TestViewerContext(companionProvider);
87
- const data = {
88
- id: 'what',
89
- };
90
- const testEntity = new SimpleTestDenyUpdateEntity({
91
- viewerContext,
92
- id: 'what',
93
- databaseFields: data,
94
- selectedFields: data,
95
- });
96
- const canViewerDelete = await SimpleTestDenyUpdateEntity.canViewerDeleteAsync(
97
- testEntity,
98
- viewerContext.getQueryContext()
99
- );
100
- expect(canViewerDelete).toBe(true);
101
- });
102
-
103
- it('denies when policy denies', async () => {
104
- const companionProvider = createUnitTestEntityCompanionProvider();
105
- const viewerContext = new TestViewerContext(companionProvider);
106
- const data = {
107
- id: 'what',
108
- };
109
- const testEntity = new SimpleTestDenyDeleteEntity({
110
- viewerContext,
111
- id: 'what',
112
- databaseFields: data,
113
- selectedFields: data,
114
- });
115
- const canViewerDelete = await SimpleTestDenyDeleteEntity.canViewerDeleteAsync(
116
- testEntity,
117
- viewerContext.getQueryContext()
118
- );
119
- expect(canViewerDelete).toBe(false);
29
+ expect(SimpleTestEntity.updater(testEntity)).toBeInstanceOf(UpdateMutator);
120
30
  });
121
31
  });
122
32
  });
123
-
124
- type TestEntityFields = {
125
- id: string;
126
- };
127
-
128
- const testEntityConfiguration = new EntityConfiguration<TestEntityFields>({
129
- idField: 'id',
130
- tableName: 'blah',
131
- schema: {
132
- id: new UUIDField({
133
- columnName: 'custom_id',
134
- }),
135
- },
136
- databaseAdapterFlavor: 'postgres',
137
- cacheAdapterFlavor: 'redis',
138
- });
139
-
140
- class SimpleTestDenyUpdateEntityPrivacyPolicy extends EntityPrivacyPolicy<
141
- TestEntityFields,
142
- string,
143
- TestViewerContext,
144
- SimpleTestDenyUpdateEntity
145
- > {
146
- protected override readonly readRules = [
147
- new AlwaysAllowPrivacyPolicyRule<
148
- TestEntityFields,
149
- string,
150
- TestViewerContext,
151
- SimpleTestDenyUpdateEntity
152
- >(),
153
- ];
154
- protected override readonly createRules = [
155
- new AlwaysAllowPrivacyPolicyRule<
156
- TestEntityFields,
157
- string,
158
- TestViewerContext,
159
- SimpleTestDenyUpdateEntity
160
- >(),
161
- ];
162
- protected override readonly updateRules = [
163
- new AlwaysDenyPrivacyPolicyRule<
164
- TestEntityFields,
165
- string,
166
- TestViewerContext,
167
- SimpleTestDenyUpdateEntity
168
- >(),
169
- ];
170
- protected override readonly deleteRules = [
171
- new AlwaysAllowPrivacyPolicyRule<
172
- TestEntityFields,
173
- string,
174
- TestViewerContext,
175
- SimpleTestDenyUpdateEntity
176
- >(),
177
- ];
178
- }
179
-
180
- class SimpleTestDenyDeleteEntityPrivacyPolicy extends EntityPrivacyPolicy<
181
- TestEntityFields,
182
- string,
183
- TestViewerContext,
184
- SimpleTestDenyDeleteEntity
185
- > {
186
- protected override readonly readRules = [
187
- new AlwaysAllowPrivacyPolicyRule<
188
- TestEntityFields,
189
- string,
190
- TestViewerContext,
191
- SimpleTestDenyDeleteEntity
192
- >(),
193
- ];
194
- protected override readonly createRules = [
195
- new AlwaysAllowPrivacyPolicyRule<
196
- TestEntityFields,
197
- string,
198
- TestViewerContext,
199
- SimpleTestDenyDeleteEntity
200
- >(),
201
- ];
202
- protected override readonly updateRules = [
203
- new AlwaysAllowPrivacyPolicyRule<
204
- TestEntityFields,
205
- string,
206
- TestViewerContext,
207
- SimpleTestDenyDeleteEntity
208
- >(),
209
- ];
210
- protected override readonly deleteRules = [
211
- new AlwaysDenyPrivacyPolicyRule<
212
- TestEntityFields,
213
- string,
214
- TestViewerContext,
215
- SimpleTestDenyDeleteEntity
216
- >(),
217
- ];
218
- }
219
-
220
- class SimpleTestDenyUpdateEntity extends Entity<TestEntityFields, string, TestViewerContext> {
221
- static defineCompanionDefinition(): EntityCompanionDefinition<
222
- TestEntityFields,
223
- string,
224
- TestViewerContext,
225
- SimpleTestDenyUpdateEntity,
226
- SimpleTestDenyUpdateEntityPrivacyPolicy
227
- > {
228
- return {
229
- entityClass: SimpleTestDenyUpdateEntity,
230
- entityConfiguration: testEntityConfiguration,
231
- privacyPolicyClass: SimpleTestDenyUpdateEntityPrivacyPolicy,
232
- };
233
- }
234
- }
235
-
236
- class SimpleTestDenyDeleteEntity extends Entity<TestEntityFields, string, TestViewerContext> {
237
- static defineCompanionDefinition(): EntityCompanionDefinition<
238
- TestEntityFields,
239
- string,
240
- TestViewerContext,
241
- SimpleTestDenyDeleteEntity,
242
- SimpleTestDenyDeleteEntityPrivacyPolicy
243
- > {
244
- return {
245
- entityClass: SimpleTestDenyDeleteEntity,
246
- entityConfiguration: testEntityConfiguration,
247
- privacyPolicyClass: SimpleTestDenyDeleteEntityPrivacyPolicy,
248
- };
249
- }
250
- }
@@ -14,24 +14,20 @@ describe(EntityAssociationLoader, () => {
14
14
  const companionProvider = createUnitTestEntityCompanionProvider();
15
15
  const viewerContext = new TestViewerContext(companionProvider);
16
16
  const testOtherEntity = await enforceAsyncResult(
17
- TestEntity.creator(viewerContext, viewerContext.getQueryContext()).createAsync()
17
+ TestEntity.creator(viewerContext).createAsync(),
18
18
  );
19
19
  const testEntity = await enforceAsyncResult(
20
- TestEntity.creator(viewerContext, viewerContext.getQueryContext())
20
+ TestEntity.creator(viewerContext)
21
21
  .setField('stringField', testOtherEntity.getID())
22
- .createAsync()
22
+ .createAsync(),
23
23
  );
24
24
  const loadedOther = await enforceAsyncResult(
25
- testEntity
26
- .associationLoader()
27
- .loadAssociatedEntityAsync('stringField', TestEntity, viewerContext.getQueryContext())
25
+ testEntity.associationLoader().loadAssociatedEntityAsync('stringField', TestEntity),
28
26
  );
29
27
  expect(loadedOther.getID()).toEqual(testOtherEntity.getID());
30
28
 
31
29
  const loadedOther2 = await enforceAsyncResult(
32
- testEntity
33
- .associationLoader()
34
- .loadAssociatedEntityAsync('nullableField', TestEntity, viewerContext.getQueryContext())
30
+ testEntity.associationLoader().loadAssociatedEntityAsync('nullableField', TestEntity),
35
31
  );
36
32
  expect(loadedOther2).toBeNull();
37
33
  });
@@ -41,27 +37,15 @@ describe(EntityAssociationLoader, () => {
41
37
  it('loads many associated entities referencing this entity', async () => {
42
38
  const companionProvider = createUnitTestEntityCompanionProvider();
43
39
  const viewerContext = new TestViewerContext(companionProvider);
44
- const testEntity = await enforceAsyncResult(
45
- TestEntity.creator(viewerContext, viewerContext.getQueryContext()).createAsync()
46
- );
40
+ const testEntity = await enforceAsyncResult(TestEntity.creator(viewerContext).createAsync());
47
41
  const testOtherEntity1 = await enforceAsyncResult(
48
- TestEntity.creator(viewerContext, viewerContext.getQueryContext())
49
- .setField('stringField', testEntity.getID())
50
- .createAsync()
42
+ TestEntity.creator(viewerContext).setField('stringField', testEntity.getID()).createAsync(),
51
43
  );
52
44
  const testOtherEntity2 = await enforceAsyncResult(
53
- TestEntity.creator(viewerContext, viewerContext.getQueryContext())
54
- .setField('stringField', testEntity.getID())
55
- .createAsync()
45
+ TestEntity.creator(viewerContext).setField('stringField', testEntity.getID()).createAsync(),
56
46
  );
57
47
  const loaded = await enforceResultsAsync(
58
- testEntity
59
- .associationLoader()
60
- .loadManyAssociatedEntitiesAsync(
61
- TestEntity,
62
- 'stringField',
63
- viewerContext.getQueryContext()
64
- )
48
+ testEntity.associationLoader().loadManyAssociatedEntitiesAsync(TestEntity, 'stringField'),
65
49
  );
66
50
  expect(loaded).toHaveLength(2);
67
51
  expect(loaded.find((e) => e.getID() === testOtherEntity1.getID())).not.toBeUndefined();
@@ -74,21 +58,16 @@ describe(EntityAssociationLoader, () => {
74
58
  const companionProvider = createUnitTestEntityCompanionProvider();
75
59
  const viewerContext = new TestViewerContext(companionProvider);
76
60
  const testOtherEntity = await enforceAsyncResult(
77
- TestEntity.creator(viewerContext, viewerContext.getQueryContext()).createAsync()
61
+ TestEntity.creator(viewerContext).createAsync(),
78
62
  );
79
63
  const testEntity = await enforceAsyncResult(
80
- TestEntity.creator(viewerContext, viewerContext.getQueryContext())
64
+ TestEntity.creator(viewerContext)
81
65
  .setField('stringField', testOtherEntity.getID())
82
- .createAsync()
66
+ .createAsync(),
83
67
  );
84
68
  const loadedOtherResult = await testEntity
85
69
  .associationLoader()
86
- .loadAssociatedEntityByFieldEqualingAsync(
87
- 'stringField',
88
- TestEntity,
89
- 'customIdField',
90
- viewerContext.getQueryContext()
91
- );
70
+ .loadAssociatedEntityByFieldEqualingAsync('stringField', TestEntity, 'customIdField');
92
71
  expect(loadedOtherResult?.enforceValue().getID()).toEqual(testOtherEntity.getID());
93
72
  });
94
73
 
@@ -96,18 +75,11 @@ describe(EntityAssociationLoader, () => {
96
75
  const companionProvider = createUnitTestEntityCompanionProvider();
97
76
  const viewerContext = new TestViewerContext(companionProvider);
98
77
  const testEntity = await enforceAsyncResult(
99
- TestEntity.creator(viewerContext, viewerContext.getQueryContext())
100
- .setField('stringField', uuidv4())
101
- .createAsync()
78
+ TestEntity.creator(viewerContext).setField('stringField', uuidv4()).createAsync(),
102
79
  );
103
80
  const loadedOtherResult = await testEntity
104
81
  .associationLoader()
105
- .loadAssociatedEntityByFieldEqualingAsync(
106
- 'stringField',
107
- TestEntity,
108
- 'customIdField',
109
- viewerContext.getQueryContext()
110
- );
82
+ .loadAssociatedEntityByFieldEqualingAsync('stringField', TestEntity, 'customIdField');
111
83
  expect(loadedOtherResult).toBeNull();
112
84
  });
113
85
 
@@ -115,18 +87,11 @@ describe(EntityAssociationLoader, () => {
115
87
  const companionProvider = createUnitTestEntityCompanionProvider();
116
88
  const viewerContext = new TestViewerContext(companionProvider);
117
89
  const testEntity = await enforceAsyncResult(
118
- TestEntity.creator(viewerContext, viewerContext.getQueryContext())
119
- .setField('stringField', 'blah')
120
- .createAsync()
90
+ TestEntity.creator(viewerContext).setField('stringField', 'blah').createAsync(),
121
91
  );
122
92
  const loadedOtherResult = await testEntity
123
93
  .associationLoader()
124
- .loadAssociatedEntityByFieldEqualingAsync(
125
- 'nullableField',
126
- TestEntity,
127
- 'customIdField',
128
- viewerContext.getQueryContext()
129
- );
94
+ .loadAssociatedEntityByFieldEqualingAsync('nullableField', TestEntity, 'customIdField');
130
95
  expect(loadedOtherResult).toBeNull();
131
96
  });
132
97
  });
@@ -135,18 +100,12 @@ describe(EntityAssociationLoader, () => {
135
100
  it('loads many associated entities by field equaling', async () => {
136
101
  const companionProvider = createUnitTestEntityCompanionProvider();
137
102
  const viewerContext = new TestViewerContext(companionProvider);
138
- const testEntity = await enforceAsyncResult(
139
- TestEntity.creator(viewerContext, viewerContext.getQueryContext()).createAsync()
140
- );
103
+ const testEntity = await enforceAsyncResult(TestEntity.creator(viewerContext).createAsync());
141
104
  const testOtherEntity1 = await enforceAsyncResult(
142
- TestEntity.creator(viewerContext, viewerContext.getQueryContext())
143
- .setField('stringField', testEntity.getID())
144
- .createAsync()
105
+ TestEntity.creator(viewerContext).setField('stringField', testEntity.getID()).createAsync(),
145
106
  );
146
107
  const testOtherEntity2 = await enforceAsyncResult(
147
- TestEntity.creator(viewerContext, viewerContext.getQueryContext())
148
- .setField('stringField', testEntity.getID())
149
- .createAsync()
108
+ TestEntity.creator(viewerContext).setField('stringField', testEntity.getID()).createAsync(),
150
109
  );
151
110
  const loaded = await enforceResultsAsync(
152
111
  testEntity
@@ -155,8 +114,7 @@ describe(EntityAssociationLoader, () => {
155
114
  'customIdField',
156
115
  TestEntity,
157
116
  'stringField',
158
- viewerContext.getQueryContext()
159
- )
117
+ ),
160
118
  );
161
119
  expect(loaded).toHaveLength(2);
162
120
  expect(loaded.find((e) => e.getID() === testOtherEntity1.getID())).not.toBeUndefined();
@@ -166,9 +124,7 @@ describe(EntityAssociationLoader, () => {
166
124
  it('returns empty results when field being queried by is null', async () => {
167
125
  const companionProvider = createUnitTestEntityCompanionProvider();
168
126
  const viewerContext = new TestViewerContext(companionProvider);
169
- const testEntity = await enforceAsyncResult(
170
- TestEntity.creator(viewerContext, viewerContext.getQueryContext()).createAsync()
171
- );
127
+ const testEntity = await enforceAsyncResult(TestEntity.creator(viewerContext).createAsync());
172
128
  const loaded = await enforceResultsAsync(
173
129
  testEntity
174
130
  .associationLoader()
@@ -176,8 +132,7 @@ describe(EntityAssociationLoader, () => {
176
132
  'nullableField',
177
133
  TestEntity,
178
134
  'stringField',
179
- viewerContext.getQueryContext()
180
- )
135
+ ),
181
136
  );
182
137
  expect(loaded).toHaveLength(0);
183
138
  });
@@ -187,68 +142,57 @@ describe(EntityAssociationLoader, () => {
187
142
  it('chain loads associated entities', async () => {
188
143
  const companionProvider = createUnitTestEntityCompanionProvider();
189
144
  const viewerContext = new TestViewerContext(companionProvider);
190
- const testEntity4 = await enforceAsyncResult(
191
- TestEntity.creator(viewerContext, viewerContext.getQueryContext()).createAsync()
192
- );
145
+ const testEntity4 = await enforceAsyncResult(TestEntity.creator(viewerContext).createAsync());
193
146
  const testEntity3 = await enforceAsyncResult(
194
- TestEntity2.creator(viewerContext, viewerContext.getQueryContext())
147
+ TestEntity2.creator(viewerContext)
195
148
  .setField('foreignKey', testEntity4.getID())
196
- .createAsync()
149
+ .createAsync(),
197
150
  );
198
151
  const testEntity2 = await enforceAsyncResult(
199
- TestEntity.creator(viewerContext, viewerContext.getQueryContext())
152
+ TestEntity.creator(viewerContext)
200
153
  .setField('testIndexedField', testEntity3.getID())
201
- .createAsync()
154
+ .createAsync(),
202
155
  );
203
156
  const testEntity = await enforceAsyncResult(
204
- TestEntity2.creator(viewerContext, viewerContext.getQueryContext())
157
+ TestEntity2.creator(viewerContext)
205
158
  .setField('foreignKey', testEntity2.getID())
206
- .createAsync()
159
+ .createAsync(),
207
160
  );
208
161
 
209
- const loaded2Result = await testEntity.associationLoader().loadAssociatedEntityThroughAsync(
210
- [
211
- {
212
- associatedEntityClass: TestEntity,
213
- fieldIdentifyingAssociatedEntity: 'foreignKey',
214
- },
215
- ],
216
- viewerContext.getQueryContext()
217
- );
162
+ const loaded2Result = await testEntity.associationLoader().loadAssociatedEntityThroughAsync([
163
+ {
164
+ associatedEntityClass: TestEntity,
165
+ fieldIdentifyingAssociatedEntity: 'foreignKey',
166
+ },
167
+ ]);
218
168
  expect(loaded2Result?.enforceValue().getID()).toEqual(testEntity2.getID());
219
169
 
220
- const loaded3Result = await testEntity.associationLoader().loadAssociatedEntityThroughAsync(
221
- [
222
- {
223
- associatedEntityClass: TestEntity,
224
- fieldIdentifyingAssociatedEntity: 'foreignKey',
225
- },
226
- {
227
- associatedEntityClass: TestEntity2,
228
- fieldIdentifyingAssociatedEntity: 'testIndexedField',
229
- },
230
- ],
231
- viewerContext.getQueryContext()
232
- );
170
+ const loaded3Result = await testEntity.associationLoader().loadAssociatedEntityThroughAsync([
171
+ {
172
+ associatedEntityClass: TestEntity,
173
+ fieldIdentifyingAssociatedEntity: 'foreignKey',
174
+ },
175
+ {
176
+ associatedEntityClass: TestEntity2,
177
+ fieldIdentifyingAssociatedEntity: 'testIndexedField',
178
+ },
179
+ ]);
233
180
  expect(loaded3Result?.enforceValue().getID()).toEqual(testEntity3.getID());
234
181
 
235
- const loaded4Result = await testEntity.associationLoader().loadAssociatedEntityThroughAsync(
236
- [
237
- {
238
- associatedEntityClass: TestEntity,
239
- fieldIdentifyingAssociatedEntity: 'foreignKey',
240
- },
241
- {
242
- associatedEntityClass: TestEntity2,
243
- fieldIdentifyingAssociatedEntity: 'testIndexedField',
244
- },
245
- {
246
- associatedEntityClass: TestEntity,
247
- fieldIdentifyingAssociatedEntity: 'foreignKey',
248
- },
249
- ],
250
- viewerContext.getQueryContext()
251
- );
182
+ const loaded4Result = await testEntity.associationLoader().loadAssociatedEntityThroughAsync([
183
+ {
184
+ associatedEntityClass: TestEntity,
185
+ fieldIdentifyingAssociatedEntity: 'foreignKey',
186
+ },
187
+ {
188
+ associatedEntityClass: TestEntity2,
189
+ fieldIdentifyingAssociatedEntity: 'testIndexedField',
190
+ },
191
+ {
192
+ associatedEntityClass: TestEntity,
193
+ fieldIdentifyingAssociatedEntity: 'foreignKey',
194
+ },
195
+ ]);
252
196
  expect(loaded4Result?.enforceValue().getID()).toEqual(testEntity4.getID());
253
197
  });
254
198
 
@@ -257,20 +201,15 @@ describe(EntityAssociationLoader, () => {
257
201
  const viewerContext = new TestViewerContext(companionProvider);
258
202
 
259
203
  const testEntity = await enforceAsyncResult(
260
- TestEntity2.creator(viewerContext, viewerContext.getQueryContext())
261
- .setField('foreignKey', uuidv4())
262
- .createAsync()
204
+ TestEntity2.creator(viewerContext).setField('foreignKey', uuidv4()).createAsync(),
263
205
  );
264
206
 
265
- const loadResult = await testEntity.associationLoader().loadAssociatedEntityThroughAsync(
266
- [
267
- {
268
- associatedEntityClass: TestEntity,
269
- fieldIdentifyingAssociatedEntity: 'foreignKey',
270
- },
271
- ],
272
- viewerContext.getQueryContext()
273
- );
207
+ const loadResult = await testEntity.associationLoader().loadAssociatedEntityThroughAsync([
208
+ {
209
+ associatedEntityClass: TestEntity,
210
+ fieldIdentifyingAssociatedEntity: 'foreignKey',
211
+ },
212
+ ]);
274
213
  expect(loadResult?.ok).toBe(false);
275
214
  });
276
215
 
@@ -280,26 +219,19 @@ describe(EntityAssociationLoader, () => {
280
219
 
281
220
  const fieldValue = uuidv4();
282
221
  const testEntity2 = await enforceAsyncResult(
283
- TestEntity.creator(viewerContext, viewerContext.getQueryContext())
284
- .setField('stringField', fieldValue)
285
- .createAsync()
222
+ TestEntity.creator(viewerContext).setField('stringField', fieldValue).createAsync(),
286
223
  );
287
224
  const testEntity = await enforceAsyncResult(
288
- TestEntity2.creator(viewerContext, viewerContext.getQueryContext())
289
- .setField('foreignKey', fieldValue)
290
- .createAsync()
225
+ TestEntity2.creator(viewerContext).setField('foreignKey', fieldValue).createAsync(),
291
226
  );
292
227
 
293
- const loaded2Result = await testEntity.associationLoader().loadAssociatedEntityThroughAsync(
294
- [
295
- {
296
- associatedEntityClass: TestEntity,
297
- fieldIdentifyingAssociatedEntity: 'foreignKey',
298
- associatedEntityLookupByField: 'stringField',
299
- },
300
- ],
301
- viewerContext.getQueryContext()
302
- );
228
+ const loaded2Result = await testEntity.associationLoader().loadAssociatedEntityThroughAsync([
229
+ {
230
+ associatedEntityClass: TestEntity,
231
+ fieldIdentifyingAssociatedEntity: 'foreignKey',
232
+ associatedEntityLookupByField: 'stringField',
233
+ },
234
+ ]);
303
235
  expect(loaded2Result?.enforceValue().getID()).toEqual(testEntity2.getID());
304
236
  });
305
237
 
@@ -308,21 +240,16 @@ describe(EntityAssociationLoader, () => {
308
240
  const viewerContext = new TestViewerContext(companionProvider);
309
241
 
310
242
  const testEntity = await enforceAsyncResult(
311
- TestEntity2.creator(viewerContext, viewerContext.getQueryContext())
312
- .setField('foreignKey', uuidv4())
313
- .createAsync()
243
+ TestEntity2.creator(viewerContext).setField('foreignKey', uuidv4()).createAsync(),
314
244
  );
315
245
 
316
- const loaded2Result = await testEntity.associationLoader().loadAssociatedEntityThroughAsync(
317
- [
318
- {
319
- associatedEntityClass: TestEntity,
320
- fieldIdentifyingAssociatedEntity: 'foreignKey',
321
- associatedEntityLookupByField: 'stringField',
322
- },
323
- ],
324
- viewerContext.getQueryContext()
325
- );
246
+ const loaded2Result = await testEntity.associationLoader().loadAssociatedEntityThroughAsync([
247
+ {
248
+ associatedEntityClass: TestEntity,
249
+ fieldIdentifyingAssociatedEntity: 'foreignKey',
250
+ associatedEntityLookupByField: 'stringField',
251
+ },
252
+ ]);
326
253
  expect(loaded2Result).toBeNull();
327
254
  });
328
255
 
@@ -331,20 +258,15 @@ describe(EntityAssociationLoader, () => {
331
258
  const viewerContext = new TestViewerContext(companionProvider);
332
259
 
333
260
  const testEntity = await enforceAsyncResult(
334
- TestEntity.creator(viewerContext, viewerContext.getQueryContext())
335
- .setField('nullableField', null)
336
- .createAsync()
261
+ TestEntity.creator(viewerContext).setField('nullableField', null).createAsync(),
337
262
  );
338
263
 
339
- const loadedResult = await testEntity.associationLoader().loadAssociatedEntityThroughAsync(
340
- [
341
- {
342
- associatedEntityClass: TestEntity,
343
- fieldIdentifyingAssociatedEntity: 'nullableField',
344
- },
345
- ],
346
- viewerContext.getQueryContext()
347
- );
264
+ const loadedResult = await testEntity.associationLoader().loadAssociatedEntityThroughAsync([
265
+ {
266
+ associatedEntityClass: TestEntity,
267
+ fieldIdentifyingAssociatedEntity: 'nullableField',
268
+ },
269
+ ]);
348
270
  expect(loadedResult).toBeNull();
349
271
  });
350
272
  });