@expo/entity 0.46.0 → 0.48.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 (215) 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 -2
  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/build/src/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.d.ts +0 -1
  27. package/build/src/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.js +0 -240
  28. package/build/src/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.js.map +0 -1
  29. package/build/src/__tests__/AuthorizationResultBasedEntityLoader-constructor-test.d.ts +0 -26
  30. package/build/src/__tests__/AuthorizationResultBasedEntityLoader-constructor-test.js +0 -109
  31. package/build/src/__tests__/AuthorizationResultBasedEntityLoader-constructor-test.js.map +0 -1
  32. package/build/src/__tests__/AuthorizationResultBasedEntityLoader-test.d.ts +0 -1
  33. package/build/src/__tests__/AuthorizationResultBasedEntityLoader-test.js +0 -590
  34. package/build/src/__tests__/AuthorizationResultBasedEntityLoader-test.js.map +0 -1
  35. package/build/src/__tests__/ComposedCacheAdapter-test.d.ts +0 -1
  36. package/build/src/__tests__/ComposedCacheAdapter-test.js +0 -259
  37. package/build/src/__tests__/ComposedCacheAdapter-test.js.map +0 -1
  38. package/build/src/__tests__/ComposedSecondaryEntityCache-test.d.ts +0 -1
  39. package/build/src/__tests__/ComposedSecondaryEntityCache-test.js +0 -67
  40. package/build/src/__tests__/ComposedSecondaryEntityCache-test.js.map +0 -1
  41. package/build/src/__tests__/EnforcingEntityAssociationLoader-test.d.ts +0 -1
  42. package/build/src/__tests__/EnforcingEntityAssociationLoader-test.js +0 -113
  43. package/build/src/__tests__/EnforcingEntityAssociationLoader-test.js.map +0 -1
  44. package/build/src/__tests__/EnforcingEntityLoader-test.d.ts +0 -1
  45. package/build/src/__tests__/EnforcingEntityLoader-test.js +0 -316
  46. package/build/src/__tests__/EnforcingEntityLoader-test.js.map +0 -1
  47. package/build/src/__tests__/Entity-test.d.ts +0 -1
  48. package/build/src/__tests__/Entity-test.js +0 -92
  49. package/build/src/__tests__/Entity-test.js.map +0 -1
  50. package/build/src/__tests__/EntityAssociationLoader-test.d.ts +0 -1
  51. package/build/src/__tests__/EntityAssociationLoader-test.js +0 -28
  52. package/build/src/__tests__/EntityAssociationLoader-test.js.map +0 -1
  53. package/build/src/__tests__/EntityCommonUseCases-test.d.ts +0 -1
  54. package/build/src/__tests__/EntityCommonUseCases-test.js +0 -111
  55. package/build/src/__tests__/EntityCommonUseCases-test.js.map +0 -1
  56. package/build/src/__tests__/EntityCompanion-test.d.ts +0 -1
  57. package/build/src/__tests__/EntityCompanion-test.js +0 -42
  58. package/build/src/__tests__/EntityCompanion-test.js.map +0 -1
  59. package/build/src/__tests__/EntityCompanionProvider-test.d.ts +0 -1
  60. package/build/src/__tests__/EntityCompanionProvider-test.js +0 -53
  61. package/build/src/__tests__/EntityCompanionProvider-test.js.map +0 -1
  62. package/build/src/__tests__/EntityConfiguration-test.d.ts +0 -1
  63. package/build/src/__tests__/EntityConfiguration-test.js +0 -164
  64. package/build/src/__tests__/EntityConfiguration-test.js.map +0 -1
  65. package/build/src/__tests__/EntityDatabaseAdapter-test.d.ts +0 -1
  66. package/build/src/__tests__/EntityDatabaseAdapter-test.js +0 -189
  67. package/build/src/__tests__/EntityDatabaseAdapter-test.js.map +0 -1
  68. package/build/src/__tests__/EntityEdges-test.d.ts +0 -1
  69. package/build/src/__tests__/EntityEdges-test.js +0 -680
  70. package/build/src/__tests__/EntityEdges-test.js.map +0 -1
  71. package/build/src/__tests__/EntityFields-test.d.ts +0 -1
  72. package/build/src/__tests__/EntityFields-test.js +0 -61
  73. package/build/src/__tests__/EntityFields-test.js.map +0 -1
  74. package/build/src/__tests__/EntityLoader-test.d.ts +0 -1
  75. package/build/src/__tests__/EntityLoader-test.js +0 -34
  76. package/build/src/__tests__/EntityLoader-test.js.map +0 -1
  77. package/build/src/__tests__/EntityMutator-MutationCacheConsistency-test.d.ts +0 -1
  78. package/build/src/__tests__/EntityMutator-MutationCacheConsistency-test.js +0 -71
  79. package/build/src/__tests__/EntityMutator-MutationCacheConsistency-test.js.map +0 -1
  80. package/build/src/__tests__/EntityMutator-SingleCompositeFieldCacheConsistency-test.d.ts +0 -1
  81. package/build/src/__tests__/EntityMutator-SingleCompositeFieldCacheConsistency-test.js +0 -54
  82. package/build/src/__tests__/EntityMutator-SingleCompositeFieldCacheConsistency-test.js.map +0 -1
  83. package/build/src/__tests__/EntityMutator-test.d.ts +0 -1
  84. package/build/src/__tests__/EntityMutator-test.js +0 -721
  85. package/build/src/__tests__/EntityMutator-test.js.map +0 -1
  86. package/build/src/__tests__/EntityPrivacyPolicy-test.d.ts +0 -1
  87. package/build/src/__tests__/EntityPrivacyPolicy-test.js +0 -429
  88. package/build/src/__tests__/EntityPrivacyPolicy-test.js.map +0 -1
  89. package/build/src/__tests__/EntityQueryContext-test.d.ts +0 -1
  90. package/build/src/__tests__/EntityQueryContext-test.js +0 -181
  91. package/build/src/__tests__/EntityQueryContext-test.js.map +0 -1
  92. package/build/src/__tests__/EntitySecondaryCacheLoader-test.d.ts +0 -1
  93. package/build/src/__tests__/EntitySecondaryCacheLoader-test.js +0 -58
  94. package/build/src/__tests__/EntitySecondaryCacheLoader-test.js.map +0 -1
  95. package/build/src/__tests__/EntitySelfReferentialEdges-test.d.ts +0 -1
  96. package/build/src/__tests__/EntitySelfReferentialEdges-test.js +0 -196
  97. package/build/src/__tests__/EntitySelfReferentialEdges-test.js.map +0 -1
  98. package/build/src/__tests__/GenericEntityCacheAdapter-test.d.ts +0 -1
  99. package/build/src/__tests__/GenericEntityCacheAdapter-test.js +0 -95
  100. package/build/src/__tests__/GenericEntityCacheAdapter-test.js.map +0 -1
  101. package/build/src/__tests__/ReadonlyEntity-test.d.ts +0 -1
  102. package/build/src/__tests__/ReadonlyEntity-test.js +0 -209
  103. package/build/src/__tests__/ReadonlyEntity-test.js.map +0 -1
  104. package/build/src/__tests__/ViewerContext-test.d.ts +0 -1
  105. package/build/src/__tests__/ViewerContext-test.js +0 -28
  106. package/build/src/__tests__/ViewerContext-test.js.map +0 -1
  107. package/build/src/__tests__/ViewerScopedEntityCompanion-test.d.ts +0 -1
  108. package/build/src/__tests__/ViewerScopedEntityCompanion-test.js +0 -18
  109. package/build/src/__tests__/ViewerScopedEntityCompanion-test.js.map +0 -1
  110. package/build/src/__tests__/ViewerScopedEntityCompanionProvider-test.d.ts +0 -1
  111. package/build/src/__tests__/ViewerScopedEntityCompanionProvider-test.js +0 -18
  112. package/build/src/__tests__/ViewerScopedEntityCompanionProvider-test.js.map +0 -1
  113. package/build/src/__tests__/ViewerScopedEntityLoaderFactory-test.d.ts +0 -1
  114. package/build/src/__tests__/ViewerScopedEntityLoaderFactory-test.js +0 -21
  115. package/build/src/__tests__/ViewerScopedEntityLoaderFactory-test.js.map +0 -1
  116. package/build/src/__tests__/ViewerScopedEntityMutatorFactory-test.d.ts +0 -1
  117. package/build/src/__tests__/ViewerScopedEntityMutatorFactory-test.js +0 -20
  118. package/build/src/__tests__/ViewerScopedEntityMutatorFactory-test.js.map +0 -1
  119. package/build/src/__tests__/cases/TwoEntitySameTableDisjointRows-test.d.ts +0 -1
  120. package/build/src/__tests__/cases/TwoEntitySameTableDisjointRows-test.js +0 -121
  121. package/build/src/__tests__/cases/TwoEntitySameTableDisjointRows-test.js.map +0 -1
  122. package/build/src/__tests__/cases/TwoEntitySameTableOverlappingRows-test.d.ts +0 -1
  123. package/build/src/__tests__/cases/TwoEntitySameTableOverlappingRows-test.js +0 -119
  124. package/build/src/__tests__/cases/TwoEntitySameTableOverlappingRows-test.js.map +0 -1
  125. package/build/src/__tests__/entityUtils-test.d.ts +0 -1
  126. package/build/src/__tests__/entityUtils-test.js +0 -88
  127. package/build/src/__tests__/entityUtils-test.js.map +0 -1
  128. package/build/src/errors/__tests__/EntityDatabaseAdapterError-test.d.ts +0 -1
  129. package/build/src/errors/__tests__/EntityDatabaseAdapterError-test.js +0 -21
  130. package/build/src/errors/__tests__/EntityDatabaseAdapterError-test.js.map +0 -1
  131. package/build/src/internal/__tests__/CompositeFieldHolder-test.d.ts +0 -1
  132. package/build/src/internal/__tests__/CompositeFieldHolder-test.js +0 -25
  133. package/build/src/internal/__tests__/CompositeFieldHolder-test.js.map +0 -1
  134. package/build/src/internal/__tests__/CompositeFieldValueMap-test.d.ts +0 -1
  135. package/build/src/internal/__tests__/CompositeFieldValueMap-test.js +0 -40
  136. package/build/src/internal/__tests__/CompositeFieldValueMap-test.js.map +0 -1
  137. package/build/src/internal/__tests__/EntityDataManager-test.d.ts +0 -1
  138. package/build/src/internal/__tests__/EntityDataManager-test.js +0 -666
  139. package/build/src/internal/__tests__/EntityDataManager-test.js.map +0 -1
  140. package/build/src/internal/__tests__/EntityFieldTransformationUtils-test.d.ts +0 -1
  141. package/build/src/internal/__tests__/EntityFieldTransformationUtils-test.js +0 -135
  142. package/build/src/internal/__tests__/EntityFieldTransformationUtils-test.js.map +0 -1
  143. package/build/src/internal/__tests__/ReadThroughEntityCache-test.d.ts +0 -1
  144. package/build/src/internal/__tests__/ReadThroughEntityCache-test.js +0 -217
  145. package/build/src/internal/__tests__/ReadThroughEntityCache-test.js.map +0 -1
  146. package/build/src/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.d.ts +0 -1
  147. package/build/src/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.js +0 -18
  148. package/build/src/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.js.map +0 -1
  149. package/build/src/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.d.ts +0 -1
  150. package/build/src/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.js +0 -18
  151. package/build/src/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.js.map +0 -1
  152. package/build/src/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.d.ts +0 -1
  153. package/build/src/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.js +0 -18
  154. package/build/src/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.js.map +0 -1
  155. package/build/src/utils/__testfixtures__/PrivacyPolicyRuleTestUtils.d.ts +0 -28
  156. package/build/src/utils/__testfixtures__/PrivacyPolicyRuleTestUtils.js +0 -53
  157. package/build/src/utils/__testfixtures__/PrivacyPolicyRuleTestUtils.js.map +0 -1
  158. package/build/src/utils/__testfixtures__/SimpleTestEntity.d.ts +0 -20
  159. package/build/src/utils/__testfixtures__/SimpleTestEntity.js +0 -46
  160. package/build/src/utils/__testfixtures__/SimpleTestEntity.js.map +0 -1
  161. package/build/src/utils/__testfixtures__/StubCacheAdapter.d.ts +0 -29
  162. package/build/src/utils/__testfixtures__/StubCacheAdapter.js +0 -103
  163. package/build/src/utils/__testfixtures__/StubCacheAdapter.js.map +0 -1
  164. package/build/src/utils/__testfixtures__/StubDatabaseAdapter.d.ts +0 -26
  165. package/build/src/utils/__testfixtures__/StubDatabaseAdapter.js +0 -173
  166. package/build/src/utils/__testfixtures__/StubDatabaseAdapter.js.map +0 -1
  167. package/build/src/utils/__testfixtures__/StubDatabaseAdapterProvider.d.ts +0 -7
  168. package/build/src/utils/__testfixtures__/StubDatabaseAdapterProvider.js +0 -12
  169. package/build/src/utils/__testfixtures__/StubDatabaseAdapterProvider.js.map +0 -1
  170. package/build/src/utils/__testfixtures__/StubQueryContextProvider.d.ts +0 -7
  171. package/build/src/utils/__testfixtures__/StubQueryContextProvider.js +0 -17
  172. package/build/src/utils/__testfixtures__/StubQueryContextProvider.js.map +0 -1
  173. package/build/src/utils/__testfixtures__/TSMockitoExtensions.d.ts +0 -9
  174. package/build/src/utils/__testfixtures__/TSMockitoExtensions.js +0 -65
  175. package/build/src/utils/__testfixtures__/TSMockitoExtensions.js.map +0 -1
  176. package/build/src/utils/__testfixtures__/TestEntity.d.ts +0 -30
  177. package/build/src/utils/__testfixtures__/TestEntity.js +0 -96
  178. package/build/src/utils/__testfixtures__/TestEntity.js.map +0 -1
  179. package/build/src/utils/__testfixtures__/TestEntity2.d.ts +0 -20
  180. package/build/src/utils/__testfixtures__/TestEntity2.js +0 -49
  181. package/build/src/utils/__testfixtures__/TestEntity2.js.map +0 -1
  182. package/build/src/utils/__testfixtures__/TestEntityWithMutationTriggers.d.ts +0 -36
  183. package/build/src/utils/__testfixtures__/TestEntityWithMutationTriggers.js +0 -80
  184. package/build/src/utils/__testfixtures__/TestEntityWithMutationTriggers.js.map +0 -1
  185. package/build/src/utils/__testfixtures__/TestViewerContext.d.ts +0 -3
  186. package/build/src/utils/__testfixtures__/TestViewerContext.js +0 -8
  187. package/build/src/utils/__testfixtures__/TestViewerContext.js.map +0 -1
  188. package/build/src/utils/__testfixtures__/createUnitTestEntityCompanionProvider.d.ts +0 -7
  189. package/build/src/utils/__testfixtures__/createUnitTestEntityCompanionProvider.js +0 -33
  190. package/build/src/utils/__testfixtures__/createUnitTestEntityCompanionProvider.js.map +0 -1
  191. package/build/src/utils/__testfixtures__/describeFieldTestCase.d.ts +0 -2
  192. package/build/src/utils/__testfixtures__/describeFieldTestCase.js +0 -19
  193. package/build/src/utils/__testfixtures__/describeFieldTestCase.js.map +0 -1
  194. package/build/src/utils/__tests__/EntityCreationUtils-test.d.ts +0 -1
  195. package/build/src/utils/__tests__/EntityCreationUtils-test.js +0 -144
  196. package/build/src/utils/__tests__/EntityCreationUtils-test.js.map +0 -1
  197. package/build/src/utils/__tests__/EntityPrivacyUtils-test.d.ts +0 -1
  198. package/build/src/utils/__tests__/EntityPrivacyUtils-test.js +0 -460
  199. package/build/src/utils/__tests__/EntityPrivacyUtils-test.js.map +0 -1
  200. package/build/src/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.d.ts +0 -1
  201. package/build/src/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.js +0 -180
  202. package/build/src/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.js.map +0 -1
  203. package/build/src/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.d.ts +0 -1
  204. package/build/src/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.js +0 -27
  205. package/build/src/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.js.map +0 -1
  206. package/build/src/utils/collections/__tests__/SerializableKeyMap-test.d.ts +0 -5
  207. package/build/src/utils/collections/__tests__/SerializableKeyMap-test.js +0 -99
  208. package/build/src/utils/collections/__tests__/SerializableKeyMap-test.js.map +0 -1
  209. package/build/src/utils/collections/__tests__/maps-test.d.ts +0 -1
  210. package/build/src/utils/collections/__tests__/maps-test.js +0 -121
  211. package/build/src/utils/collections/__tests__/maps-test.js.map +0 -1
  212. package/build/src/utils/collections/__tests__/sets-test.d.ts +0 -1
  213. package/build/src/utils/collections/__tests__/sets-test.js +0 -19
  214. package/build/src/utils/collections/__tests__/sets-test.js.map +0 -1
  215. package/build/tsconfig.tsbuildinfo +0 -1
@@ -1,590 +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 ts_mockito_1 = require("ts-mockito");
6
- const uuid_1 = require("uuid");
7
- const AuthorizationResultBasedEntityLoader_1 = require("../AuthorizationResultBasedEntityLoader");
8
- const EntityDatabaseAdapter_1 = require("../EntityDatabaseAdapter");
9
- const EntityLoaderUtils_1 = require("../EntityLoaderUtils");
10
- const ViewerContext_1 = require("../ViewerContext");
11
- const entityUtils_1 = require("../entityUtils");
12
- const EntityNotFoundError_1 = require("../errors/EntityNotFoundError");
13
- const CompositeFieldHolder_1 = require("../internal/CompositeFieldHolder");
14
- const EntityDataManager_1 = require("../internal/EntityDataManager");
15
- const ReadThroughEntityCache_1 = require("../internal/ReadThroughEntityCache");
16
- const SingleFieldHolder_1 = require("../internal/SingleFieldHolder");
17
- const StubCacheAdapter_1 = require("../utils/__testfixtures__/StubCacheAdapter");
18
- const StubDatabaseAdapter_1 = require("../utils/__testfixtures__/StubDatabaseAdapter");
19
- const StubQueryContextProvider_1 = require("../utils/__testfixtures__/StubQueryContextProvider");
20
- const TSMockitoExtensions_1 = require("../utils/__testfixtures__/TSMockitoExtensions");
21
- const TestEntity_1 = require("../utils/__testfixtures__/TestEntity");
22
- (0, globals_1.describe)(AuthorizationResultBasedEntityLoader_1.AuthorizationResultBasedEntityLoader, () => {
23
- (0, globals_1.it)('loads entities', async () => {
24
- const dateToInsert = new Date();
25
- const viewerContext = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)(ViewerContext_1.ViewerContext));
26
- const privacyPolicyEvaluationContext = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)());
27
- const metricsAdapter = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)());
28
- const queryContext = new StubQueryContextProvider_1.StubQueryContextProvider().getQueryContext();
29
- const id1 = (0, uuid_1.v4)();
30
- const id2 = (0, uuid_1.v4)();
31
- const databaseAdapter = new StubDatabaseAdapter_1.StubDatabaseAdapter(TestEntity_1.testEntityConfiguration, StubDatabaseAdapter_1.StubDatabaseAdapter.convertFieldObjectsToDataStore(TestEntity_1.testEntityConfiguration, new Map([
32
- [
33
- TestEntity_1.testEntityConfiguration.tableName,
34
- [
35
- {
36
- customIdField: id1,
37
- testIndexedField: 'h1',
38
- intField: 5,
39
- stringField: 'huh',
40
- dateField: dateToInsert,
41
- nullableField: null,
42
- },
43
- {
44
- customIdField: id2,
45
- testIndexedField: 'h2',
46
- intField: 3,
47
- stringField: 'huh',
48
- dateField: dateToInsert,
49
- nullableField: null,
50
- },
51
- ],
52
- ],
53
- ])));
54
- const privacyPolicy = new TestEntity_1.TestEntityPrivacyPolicy();
55
- const cacheAdapterProvider = new StubCacheAdapter_1.NoCacheStubCacheAdapterProvider();
56
- const cacheAdapter = cacheAdapterProvider.getCacheAdapter(TestEntity_1.testEntityConfiguration);
57
- const entityCache = new ReadThroughEntityCache_1.ReadThroughEntityCache(TestEntity_1.testEntityConfiguration, cacheAdapter);
58
- const dataManager = new EntityDataManager_1.EntityDataManager(databaseAdapter, entityCache, new StubQueryContextProvider_1.StubQueryContextProvider(), (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)()), TestEntity_1.TestEntity.name);
59
- const utils = new EntityLoaderUtils_1.EntityLoaderUtils(viewerContext, queryContext, privacyPolicyEvaluationContext, TestEntity_1.testEntityConfiguration, TestEntity_1.TestEntity,
60
- /* entitySelectedFields */ undefined, privacyPolicy, dataManager, metricsAdapter);
61
- const entityLoader = new AuthorizationResultBasedEntityLoader_1.AuthorizationResultBasedEntityLoader(queryContext, TestEntity_1.testEntityConfiguration, TestEntity_1.TestEntity, dataManager, metricsAdapter, utils);
62
- const entity = await (0, results_1.enforceAsyncResult)(entityLoader.loadByIDAsync(id1));
63
- (0, globals_1.expect)(entity.getID()).toEqual(id1);
64
- (0, globals_1.expect)(entity.getField('dateField')).toEqual(dateToInsert);
65
- const entities = await (0, entityUtils_1.enforceResultsAsync)(entityLoader.loadManyByFieldEqualingAsync('stringField', 'huh'));
66
- (0, globals_1.expect)(entities.map((m) => m.getID())).toEqual([id1, id2]);
67
- const entityResultNumber3 = await entityLoader.loadByFieldEqualingAsync('intField', 3);
68
- (0, globals_1.expect)(entityResultNumber3).not.toBeNull();
69
- (0, globals_1.expect)(entityResultNumber3.enforceValue().getID()).toEqual(id2);
70
- const entityResultNumber4 = await entityLoader.loadByFieldEqualingAsync('intField', 4);
71
- (0, globals_1.expect)(entityResultNumber4).toBeNull();
72
- const entityResultDuplicateValues = await entityLoader.loadManyByFieldEqualingManyAsync('stringField', ['huh', 'huh']);
73
- (0, globals_1.expect)(entityResultDuplicateValues.size).toBe(1);
74
- (0, globals_1.expect)(entityResultDuplicateValues.get('huh')?.map((m) => m.enforceValue().getID())).toEqual([
75
- id1,
76
- id2,
77
- ]);
78
- await (0, globals_1.expect)(entityLoader.loadByFieldEqualingAsync('stringField', 'huh')).rejects.toThrow('loadByFieldEqualing: Multiple entities of type TestEntity found for stringField=huh');
79
- await (0, globals_1.expect)(entityLoader.loadByIDNullableAsync((0, uuid_1.v4)())).resolves.toBeNull();
80
- await (0, globals_1.expect)(entityLoader.loadByIDNullableAsync(id1)).resolves.not.toBeNull();
81
- const nonExistentId = (0, uuid_1.v4)();
82
- const manyIdResults = await entityLoader.loadManyByIDsNullableAsync([nonExistentId, id1]);
83
- (0, globals_1.expect)(manyIdResults.get(nonExistentId)).toBeNull();
84
- (0, globals_1.expect)(manyIdResults.get(id1)).not.toBeNull();
85
- await (0, globals_1.expect)((0, results_1.enforceAsyncResult)(entityLoader.loadByIDAsync(nonExistentId))).rejects.toThrow(EntityNotFoundError_1.EntityNotFoundError);
86
- await (0, globals_1.expect)(entityLoader.loadByIDAsync('not-a-uuid')).rejects.toThrow('Entity field not valid: TestEntity (customIdField = not-a-uuid)');
87
- });
88
- (0, globals_1.it)('loads entities by composite fields', async () => {
89
- const dateToInsert = new Date();
90
- const viewerContext = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)(ViewerContext_1.ViewerContext));
91
- const privacyPolicyEvaluationContext = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)());
92
- const metricsAdapter = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)());
93
- const queryContext = new StubQueryContextProvider_1.StubQueryContextProvider().getQueryContext();
94
- const id1 = (0, uuid_1.v4)();
95
- const id2 = (0, uuid_1.v4)();
96
- const id3 = (0, uuid_1.v4)();
97
- const id4 = (0, uuid_1.v4)();
98
- const databaseAdapter = new StubDatabaseAdapter_1.StubDatabaseAdapter(TestEntity_1.testEntityConfiguration, StubDatabaseAdapter_1.StubDatabaseAdapter.convertFieldObjectsToDataStore(TestEntity_1.testEntityConfiguration, new Map([
99
- [
100
- TestEntity_1.testEntityConfiguration.tableName,
101
- [
102
- {
103
- customIdField: id1,
104
- testIndexedField: 'h1',
105
- intField: 5,
106
- stringField: 'huh',
107
- dateField: dateToInsert,
108
- nullableField: null,
109
- },
110
- {
111
- customIdField: id2,
112
- testIndexedField: 'h2',
113
- intField: 5,
114
- stringField: 'huh',
115
- dateField: dateToInsert,
116
- nullableField: null,
117
- },
118
- {
119
- customIdField: id3,
120
- testIndexedField: 'h2',
121
- intField: 3,
122
- stringField: 'huh',
123
- dateField: dateToInsert,
124
- nullableField: null,
125
- },
126
- {
127
- customIdField: id4,
128
- stringField: 'huh3',
129
- intField: 4,
130
- testIndexedField: '7',
131
- dateField: new Date(),
132
- nullableField: 'non-null-nullable-field',
133
- },
134
- ],
135
- ],
136
- ])));
137
- const privacyPolicy = new TestEntity_1.TestEntityPrivacyPolicy();
138
- const cacheAdapterProvider = new StubCacheAdapter_1.NoCacheStubCacheAdapterProvider();
139
- const cacheAdapter = cacheAdapterProvider.getCacheAdapter(TestEntity_1.testEntityConfiguration);
140
- const entityCache = new ReadThroughEntityCache_1.ReadThroughEntityCache(TestEntity_1.testEntityConfiguration, cacheAdapter);
141
- const dataManager = new EntityDataManager_1.EntityDataManager(databaseAdapter, entityCache, new StubQueryContextProvider_1.StubQueryContextProvider(), (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)()), TestEntity_1.TestEntity.name);
142
- const utils = new EntityLoaderUtils_1.EntityLoaderUtils(viewerContext, queryContext, privacyPolicyEvaluationContext, TestEntity_1.testEntityConfiguration, TestEntity_1.TestEntity,
143
- /* entitySelectedFields */ undefined, privacyPolicy, dataManager, metricsAdapter);
144
- const entityLoader = new AuthorizationResultBasedEntityLoader_1.AuthorizationResultBasedEntityLoader(queryContext, TestEntity_1.testEntityConfiguration, TestEntity_1.TestEntity, dataManager, metricsAdapter, utils);
145
- const entities = await (0, entityUtils_1.enforceResultsAsync)(entityLoader.loadManyByCompositeFieldEqualingAsync(['stringField', 'intField'], {
146
- stringField: 'huh',
147
- intField: 5,
148
- }));
149
- (0, globals_1.expect)(entities.map((m) => m.getID())).toEqual([id1, id2]);
150
- const entityNullableCompositeValueResult = await entityLoader.loadByCompositeFieldEqualingAsync(['nullableField', 'testIndexedField'], {
151
- nullableField: 'non-null-nullable-field',
152
- testIndexedField: '7',
153
- });
154
- (0, globals_1.expect)(entityNullableCompositeValueResult?.enforceValue().getID()).toBe(id4);
155
- const entityResultDuplicateValues = await entityLoader.loadManyByCompositeFieldEqualingManyAsync(['stringField', 'intField'], [
156
- { stringField: 'huh', intField: 5 },
157
- { stringField: 'huh', intField: 5 },
158
- ]);
159
- (0, globals_1.expect)(entityResultDuplicateValues.size).toBe(1);
160
- (0, globals_1.expect)(entityResultDuplicateValues
161
- .get({ stringField: 'huh', intField: 5 })
162
- ?.map((m) => m.enforceValue().getID())).toEqual([id1, id2]);
163
- const entityResultNoValues = await entityLoader.loadManyByCompositeFieldEqualingAsync(['stringField', 'intField'], { stringField: 'huh', intField: 999 });
164
- (0, globals_1.expect)(entityResultNoValues).toHaveLength(0);
165
- await (0, globals_1.expect)(entityLoader.loadByCompositeFieldEqualingAsync(['stringField', 'intField'], {
166
- stringField: 'huh',
167
- intField: 5,
168
- })).rejects.toThrow('loadByCompositeFieldEqualing: Multiple entities of type TestEntity found for composite field (stringField,intField)={"stringField":"huh","intField":5}');
169
- // test the result map
170
- const entityResultMap = await entityLoader.loadManyByCompositeFieldEqualingManyAsync(['stringField', 'intField'], [
171
- { stringField: 'huh', intField: 5 },
172
- { stringField: 'huh', intField: 3 },
173
- ]);
174
- (0, globals_1.expect)(entityResultMap.size).toBe(2);
175
- (0, globals_1.expect)(entityResultMap
176
- .get({ stringField: 'huh', intField: 5 })
177
- ?.map((m) => m.enforceValue().getID())).toEqual([id1, id2]);
178
- (0, globals_1.expect)(entityResultMap
179
- .get({ stringField: 'huh', intField: 3 })
180
- ?.map((m) => m.enforceValue().getID())).toEqual([id3]);
181
- });
182
- (0, globals_1.it)('loads entities with loadManyByFieldEqualityConjunction', async () => {
183
- const privacyPolicy = new TestEntity_1.TestEntityPrivacyPolicy();
184
- const spiedPrivacyPolicy = (0, ts_mockito_1.spy)(privacyPolicy);
185
- const viewerContext = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)(ViewerContext_1.ViewerContext));
186
- const privacyPolicyEvaluationContext = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)());
187
- const metricsAdapter = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)());
188
- const queryContext = new StubQueryContextProvider_1.StubQueryContextProvider().getQueryContext();
189
- const id1 = (0, uuid_1.v4)();
190
- const id2 = (0, uuid_1.v4)();
191
- const id3 = (0, uuid_1.v4)();
192
- const databaseAdapter = new StubDatabaseAdapter_1.StubDatabaseAdapter(TestEntity_1.testEntityConfiguration, StubDatabaseAdapter_1.StubDatabaseAdapter.convertFieldObjectsToDataStore(TestEntity_1.testEntityConfiguration, new Map([
193
- [
194
- TestEntity_1.testEntityConfiguration.tableName,
195
- [
196
- {
197
- customIdField: id1,
198
- stringField: 'huh',
199
- intField: 4,
200
- testIndexedField: '4',
201
- dateField: new Date(),
202
- nullableField: null,
203
- },
204
- {
205
- customIdField: id2,
206
- stringField: 'huh',
207
- intField: 4,
208
- testIndexedField: '5',
209
- dateField: new Date(),
210
- nullableField: null,
211
- },
212
- {
213
- customIdField: id3,
214
- stringField: 'huh2',
215
- intField: 4,
216
- testIndexedField: '6',
217
- dateField: new Date(),
218
- nullableField: null,
219
- },
220
- ],
221
- ],
222
- ])));
223
- const cacheAdapterProvider = new StubCacheAdapter_1.NoCacheStubCacheAdapterProvider();
224
- const cacheAdapter = cacheAdapterProvider.getCacheAdapter(TestEntity_1.testEntityConfiguration);
225
- const entityCache = new ReadThroughEntityCache_1.ReadThroughEntityCache(TestEntity_1.testEntityConfiguration, cacheAdapter);
226
- const dataManager = new EntityDataManager_1.EntityDataManager(databaseAdapter, entityCache, new StubQueryContextProvider_1.StubQueryContextProvider(), (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)()), TestEntity_1.TestEntity.name);
227
- const utils = new EntityLoaderUtils_1.EntityLoaderUtils(viewerContext, queryContext, privacyPolicyEvaluationContext, TestEntity_1.testEntityConfiguration, TestEntity_1.TestEntity,
228
- /* entitySelectedFields */ undefined, privacyPolicy, dataManager, metricsAdapter);
229
- const entityLoader = new AuthorizationResultBasedEntityLoader_1.AuthorizationResultBasedEntityLoader(queryContext, TestEntity_1.testEntityConfiguration, TestEntity_1.TestEntity, dataManager, metricsAdapter, utils);
230
- const entityResults = await (0, entityUtils_1.enforceResultsAsync)(entityLoader.loadManyByFieldEqualityConjunctionAsync([
231
- {
232
- fieldName: 'stringField',
233
- fieldValue: 'huh',
234
- },
235
- {
236
- fieldName: 'intField',
237
- fieldValues: [4],
238
- },
239
- ]));
240
- (0, globals_1.expect)(entityResults).toHaveLength(2);
241
- (0, ts_mockito_1.verify)(spiedPrivacyPolicy.authorizeReadAsync(viewerContext, queryContext, privacyPolicyEvaluationContext, (0, ts_mockito_1.anyOfClass)(TestEntity_1.TestEntity), (0, ts_mockito_1.anything)())).twice();
242
- await (0, globals_1.expect)(entityLoader.loadManyByFieldEqualityConjunctionAsync([
243
- { fieldName: 'customIdField', fieldValue: 'not-a-uuid' },
244
- ])).rejects.toThrow('Entity field not valid: TestEntity (customIdField = not-a-uuid)');
245
- });
246
- (0, globals_1.it)('loads entities with loadFirstByFieldEqualityConjunction', async () => {
247
- const privacyPolicy = new TestEntity_1.TestEntityPrivacyPolicy();
248
- const spiedPrivacyPolicy = (0, ts_mockito_1.spy)(privacyPolicy);
249
- const viewerContext = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)(ViewerContext_1.ViewerContext));
250
- const privacyPolicyEvaluationContext = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)());
251
- const metricsAdapter = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)());
252
- const queryContext = new StubQueryContextProvider_1.StubQueryContextProvider().getQueryContext();
253
- const id1 = (0, uuid_1.v4)();
254
- const id2 = (0, uuid_1.v4)();
255
- const id3 = (0, uuid_1.v4)();
256
- const databaseAdapter = new StubDatabaseAdapter_1.StubDatabaseAdapter(TestEntity_1.testEntityConfiguration, StubDatabaseAdapter_1.StubDatabaseAdapter.convertFieldObjectsToDataStore(TestEntity_1.testEntityConfiguration, new Map([
257
- [
258
- TestEntity_1.testEntityConfiguration.tableName,
259
- [
260
- {
261
- customIdField: id1,
262
- stringField: 'huh',
263
- intField: 4,
264
- testIndexedField: '4',
265
- dateField: new Date(),
266
- nullableField: null,
267
- },
268
- {
269
- customIdField: id2,
270
- stringField: 'huh',
271
- intField: 4,
272
- testIndexedField: '5',
273
- dateField: new Date(),
274
- nullableField: null,
275
- },
276
- {
277
- customIdField: id3,
278
- stringField: 'huh2',
279
- intField: 4,
280
- testIndexedField: '6',
281
- dateField: new Date(),
282
- nullableField: null,
283
- },
284
- ],
285
- ],
286
- ])));
287
- const cacheAdapterProvider = new StubCacheAdapter_1.NoCacheStubCacheAdapterProvider();
288
- const cacheAdapter = cacheAdapterProvider.getCacheAdapter(TestEntity_1.testEntityConfiguration);
289
- const entityCache = new ReadThroughEntityCache_1.ReadThroughEntityCache(TestEntity_1.testEntityConfiguration, cacheAdapter);
290
- const dataManager = new EntityDataManager_1.EntityDataManager(databaseAdapter, entityCache, new StubQueryContextProvider_1.StubQueryContextProvider(), (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)()), TestEntity_1.TestEntity.name);
291
- const utils = new EntityLoaderUtils_1.EntityLoaderUtils(viewerContext, queryContext, privacyPolicyEvaluationContext, TestEntity_1.testEntityConfiguration, TestEntity_1.TestEntity,
292
- /* entitySelectedFields */ undefined, privacyPolicy, dataManager, metricsAdapter);
293
- const entityLoader = new AuthorizationResultBasedEntityLoader_1.AuthorizationResultBasedEntityLoader(queryContext, TestEntity_1.testEntityConfiguration, TestEntity_1.TestEntity, dataManager, metricsAdapter, utils);
294
- const result = await entityLoader.loadFirstByFieldEqualityConjunctionAsync([
295
- {
296
- fieldName: 'stringField',
297
- fieldValue: 'huh',
298
- },
299
- {
300
- fieldName: 'intField',
301
- fieldValue: 4,
302
- },
303
- ], { orderBy: [{ fieldName: 'testIndexedField', order: EntityDatabaseAdapter_1.OrderByOrdering.DESCENDING }] });
304
- (0, globals_1.expect)(result).not.toBeNull();
305
- (0, globals_1.expect)(result.ok).toBe(true);
306
- (0, globals_1.expect)(result.enforceValue().getField('testIndexedField')).toEqual('5');
307
- (0, ts_mockito_1.verify)(spiedPrivacyPolicy.authorizeReadAsync(viewerContext, queryContext, privacyPolicyEvaluationContext, (0, ts_mockito_1.anyOfClass)(TestEntity_1.TestEntity), (0, ts_mockito_1.anything)())).once();
308
- });
309
- (0, globals_1.it)('loads entities with loadManyByRawWhereClauseAsync', async () => {
310
- const privacyPolicy = new TestEntity_1.TestEntityPrivacyPolicy();
311
- const spiedPrivacyPolicy = (0, ts_mockito_1.spy)(privacyPolicy);
312
- const viewerContext = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)(ViewerContext_1.ViewerContext));
313
- const privacyPolicyEvaluationContext = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)());
314
- const metricsAdapter = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)());
315
- const queryContext = new StubQueryContextProvider_1.StubQueryContextProvider().getQueryContext();
316
- const dataManagerMock = (0, ts_mockito_1.mock)(EntityDataManager_1.EntityDataManager);
317
- (0, ts_mockito_1.when)(dataManagerMock.loadManyByRawWhereClauseAsync(queryContext, (0, ts_mockito_1.anything)(), (0, ts_mockito_1.anything)(), (0, ts_mockito_1.anything)())).thenResolve([
318
- {
319
- customIdField: 'id',
320
- stringField: 'huh',
321
- intField: 4,
322
- testIndexedField: '4',
323
- dateField: new Date(),
324
- nullableField: null,
325
- },
326
- ]);
327
- const dataManager = (0, ts_mockito_1.instance)(dataManagerMock);
328
- const utils = new EntityLoaderUtils_1.EntityLoaderUtils(viewerContext, queryContext, privacyPolicyEvaluationContext, TestEntity_1.testEntityConfiguration, TestEntity_1.TestEntity,
329
- /* entitySelectedFields */ undefined, privacyPolicy, dataManager, metricsAdapter);
330
- const entityLoader = new AuthorizationResultBasedEntityLoader_1.AuthorizationResultBasedEntityLoader(queryContext, TestEntity_1.testEntityConfiguration, TestEntity_1.TestEntity, dataManager, metricsAdapter, utils);
331
- const result = await entityLoader.loadManyByRawWhereClauseAsync('id = ?', [1], {
332
- orderBy: [{ fieldName: 'testIndexedField', order: EntityDatabaseAdapter_1.OrderByOrdering.DESCENDING }],
333
- });
334
- (0, globals_1.expect)(result).toHaveLength(1);
335
- (0, globals_1.expect)(result[0]).not.toBeNull();
336
- (0, globals_1.expect)(result[0].ok).toBe(true);
337
- (0, globals_1.expect)(result[0].enforceValue().getField('testIndexedField')).toEqual('4');
338
- (0, ts_mockito_1.verify)(spiedPrivacyPolicy.authorizeReadAsync(viewerContext, queryContext, privacyPolicyEvaluationContext, (0, ts_mockito_1.anyOfClass)(TestEntity_1.TestEntity), (0, ts_mockito_1.anything)())).once();
339
- });
340
- (0, globals_1.it)('authorizes loaded entities', async () => {
341
- const privacyPolicy = new TestEntity_1.TestEntityPrivacyPolicy();
342
- const spiedPrivacyPolicy = (0, ts_mockito_1.spy)(privacyPolicy);
343
- const viewerContext = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)(ViewerContext_1.ViewerContext));
344
- const privacyPolicyEvaluationContext = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)());
345
- const metricsAdapter = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)());
346
- const queryContext = new StubQueryContextProvider_1.StubQueryContextProvider().getQueryContext();
347
- const id1 = (0, uuid_1.v4)();
348
- const databaseAdapter = new StubDatabaseAdapter_1.StubDatabaseAdapter(TestEntity_1.testEntityConfiguration, StubDatabaseAdapter_1.StubDatabaseAdapter.convertFieldObjectsToDataStore(TestEntity_1.testEntityConfiguration, new Map([
349
- [
350
- TestEntity_1.testEntityConfiguration.tableName,
351
- [
352
- {
353
- customIdField: id1,
354
- stringField: 'huh',
355
- testIndexedField: '1',
356
- intField: 3,
357
- dateField: new Date(),
358
- nullableField: null,
359
- },
360
- ],
361
- ],
362
- ])));
363
- const cacheAdapterProvider = new StubCacheAdapter_1.NoCacheStubCacheAdapterProvider();
364
- const cacheAdapter = cacheAdapterProvider.getCacheAdapter(TestEntity_1.testEntityConfiguration);
365
- const entityCache = new ReadThroughEntityCache_1.ReadThroughEntityCache(TestEntity_1.testEntityConfiguration, cacheAdapter);
366
- const dataManager = new EntityDataManager_1.EntityDataManager(databaseAdapter, entityCache, new StubQueryContextProvider_1.StubQueryContextProvider(), (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)()), TestEntity_1.TestEntity.name);
367
- const utils = new EntityLoaderUtils_1.EntityLoaderUtils(viewerContext, queryContext, privacyPolicyEvaluationContext, TestEntity_1.testEntityConfiguration, TestEntity_1.TestEntity,
368
- /* entitySelectedFields */ undefined, privacyPolicy, dataManager, metricsAdapter);
369
- const entityLoader = new AuthorizationResultBasedEntityLoader_1.AuthorizationResultBasedEntityLoader(queryContext, TestEntity_1.testEntityConfiguration, TestEntity_1.TestEntity, dataManager, metricsAdapter, utils);
370
- const entity = await (0, results_1.enforceAsyncResult)(entityLoader.loadByIDAsync(id1));
371
- (0, ts_mockito_1.verify)(spiedPrivacyPolicy.authorizeReadAsync(viewerContext, queryContext, privacyPolicyEvaluationContext, entity, (0, ts_mockito_1.anything)())).once();
372
- });
373
- (0, globals_1.it)('invalidates upon invalidate one', async () => {
374
- const viewerContext = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)(ViewerContext_1.ViewerContext));
375
- const privacyPolicyEvaluationContext = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)());
376
- const metricsAdapter = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)());
377
- const queryContext = new StubQueryContextProvider_1.StubQueryContextProvider().getQueryContext();
378
- const privacyPolicy = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)(TestEntity_1.TestEntityPrivacyPolicy));
379
- const dataManagerMock = (0, ts_mockito_1.mock)();
380
- const dataManagerInstance = (0, ts_mockito_1.instance)(dataManagerMock);
381
- const id1 = (0, uuid_1.v4)();
382
- const utils = new EntityLoaderUtils_1.EntityLoaderUtils(viewerContext, queryContext, privacyPolicyEvaluationContext, TestEntity_1.testEntityConfiguration, TestEntity_1.TestEntity,
383
- /* entitySelectedFields */ undefined, privacyPolicy, dataManagerInstance, metricsAdapter);
384
- const entityLoader = new AuthorizationResultBasedEntityLoader_1.AuthorizationResultBasedEntityLoader(queryContext, TestEntity_1.testEntityConfiguration, TestEntity_1.TestEntity, dataManagerInstance, metricsAdapter, utils);
385
- const date = new Date();
386
- await entityLoader.utils.invalidateFieldsAsync({
387
- customIdField: id1,
388
- testIndexedField: 'h1',
389
- intField: 5,
390
- stringField: 'huh',
391
- dateField: date,
392
- nullableField: null,
393
- });
394
- (0, ts_mockito_1.verify)(dataManagerMock.invalidateKeyValuePairsAsync((0, ts_mockito_1.anything)())).once();
395
- (0, ts_mockito_1.verify)(dataManagerMock.invalidateKeyValuePairsAsync((0, TSMockitoExtensions_1.deepEqualEntityAware)([
396
- [
397
- new SingleFieldHolder_1.SingleFieldHolder('customIdField'),
398
- new SingleFieldHolder_1.SingleFieldValueHolder(id1),
399
- ],
400
- [
401
- new SingleFieldHolder_1.SingleFieldHolder('testIndexedField'),
402
- new SingleFieldHolder_1.SingleFieldValueHolder('h1'),
403
- ],
404
- [
405
- new SingleFieldHolder_1.SingleFieldHolder('intField'),
406
- new SingleFieldHolder_1.SingleFieldValueHolder(5),
407
- ],
408
- [
409
- new SingleFieldHolder_1.SingleFieldHolder('stringField'),
410
- new SingleFieldHolder_1.SingleFieldValueHolder('huh'),
411
- ],
412
- [
413
- new SingleFieldHolder_1.SingleFieldHolder('dateField'),
414
- new SingleFieldHolder_1.SingleFieldValueHolder(date),
415
- ],
416
- [
417
- new CompositeFieldHolder_1.CompositeFieldHolder(['stringField', 'intField']),
418
- new CompositeFieldHolder_1.CompositeFieldValueHolder({ stringField: 'huh', intField: 5 }),
419
- ],
420
- [
421
- new CompositeFieldHolder_1.CompositeFieldHolder(['stringField', 'testIndexedField']),
422
- new CompositeFieldHolder_1.CompositeFieldValueHolder({ stringField: 'huh', testIndexedField: 'h1' }),
423
- ],
424
- ]))).once();
425
- });
426
- (0, globals_1.it)('invalidates upon invalidate by entity', async () => {
427
- const viewerContext = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)(ViewerContext_1.ViewerContext));
428
- const privacyPolicyEvaluationContext = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)());
429
- const metricsAdapter = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)());
430
- const queryContext = new StubQueryContextProvider_1.StubQueryContextProvider().getQueryContext();
431
- const privacyPolicy = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)(TestEntity_1.TestEntityPrivacyPolicy));
432
- const dataManagerMock = (0, ts_mockito_1.mock)();
433
- const dataManagerInstance = (0, ts_mockito_1.instance)(dataManagerMock);
434
- const id1 = (0, uuid_1.v4)();
435
- const entityMock = (0, ts_mockito_1.mock)(TestEntity_1.TestEntity);
436
- const date = new Date();
437
- (0, ts_mockito_1.when)(entityMock.getAllDatabaseFields()).thenReturn({
438
- customIdField: id1,
439
- testIndexedField: 'h1',
440
- intField: 5,
441
- stringField: 'huh',
442
- dateField: date,
443
- nullableField: null,
444
- });
445
- const entityInstance = (0, ts_mockito_1.instance)(entityMock);
446
- const utils = new EntityLoaderUtils_1.EntityLoaderUtils(viewerContext, queryContext, privacyPolicyEvaluationContext, TestEntity_1.testEntityConfiguration, TestEntity_1.TestEntity,
447
- /* entitySelectedFields */ undefined, privacyPolicy, dataManagerInstance, metricsAdapter);
448
- const entityLoader = new AuthorizationResultBasedEntityLoader_1.AuthorizationResultBasedEntityLoader(queryContext, TestEntity_1.testEntityConfiguration, TestEntity_1.TestEntity, dataManagerInstance, metricsAdapter, utils);
449
- await entityLoader.utils.invalidateEntityAsync(entityInstance);
450
- (0, ts_mockito_1.verify)(dataManagerMock.invalidateKeyValuePairsAsync((0, ts_mockito_1.anything)())).once();
451
- (0, ts_mockito_1.verify)(dataManagerMock.invalidateKeyValuePairsAsync((0, TSMockitoExtensions_1.deepEqualEntityAware)([
452
- [
453
- new SingleFieldHolder_1.SingleFieldHolder('customIdField'),
454
- new SingleFieldHolder_1.SingleFieldValueHolder(id1),
455
- ],
456
- [
457
- new SingleFieldHolder_1.SingleFieldHolder('testIndexedField'),
458
- new SingleFieldHolder_1.SingleFieldValueHolder('h1'),
459
- ],
460
- [
461
- new SingleFieldHolder_1.SingleFieldHolder('intField'),
462
- new SingleFieldHolder_1.SingleFieldValueHolder(5),
463
- ],
464
- [
465
- new SingleFieldHolder_1.SingleFieldHolder('stringField'),
466
- new SingleFieldHolder_1.SingleFieldValueHolder('huh'),
467
- ],
468
- [
469
- new SingleFieldHolder_1.SingleFieldHolder('dateField'),
470
- new SingleFieldHolder_1.SingleFieldValueHolder(date),
471
- ],
472
- [
473
- new CompositeFieldHolder_1.CompositeFieldHolder(['stringField', 'intField']),
474
- new CompositeFieldHolder_1.CompositeFieldValueHolder({ stringField: 'huh', intField: 5 }),
475
- ],
476
- [
477
- new CompositeFieldHolder_1.CompositeFieldHolder(['stringField', 'testIndexedField']),
478
- new CompositeFieldHolder_1.CompositeFieldValueHolder({ stringField: 'huh', testIndexedField: 'h1' }),
479
- ],
480
- ]))).once();
481
- });
482
- (0, globals_1.it)('invalidates upon invalidate by entity within transaction', async () => {
483
- const viewerContext = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)(ViewerContext_1.ViewerContext));
484
- const privacyPolicyEvaluationContext = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)());
485
- const metricsAdapter = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)());
486
- const privacyPolicy = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)(TestEntity_1.TestEntityPrivacyPolicy));
487
- const dataManagerMock = (0, ts_mockito_1.mock)();
488
- const dataManagerInstance = (0, ts_mockito_1.instance)(dataManagerMock);
489
- const id1 = (0, uuid_1.v4)();
490
- const entityMock = (0, ts_mockito_1.mock)(TestEntity_1.TestEntity);
491
- const date = new Date();
492
- (0, ts_mockito_1.when)(entityMock.getAllDatabaseFields()).thenReturn({
493
- customIdField: id1,
494
- testIndexedField: 'h1',
495
- intField: 5,
496
- stringField: 'huh',
497
- dateField: date,
498
- nullableField: null,
499
- });
500
- const entityInstance = (0, ts_mockito_1.instance)(entityMock);
501
- await new StubQueryContextProvider_1.StubQueryContextProvider().runInTransactionAsync(async (queryContext) => {
502
- const utils = new EntityLoaderUtils_1.EntityLoaderUtils(viewerContext, queryContext, privacyPolicyEvaluationContext, TestEntity_1.testEntityConfiguration, TestEntity_1.TestEntity,
503
- /* entitySelectedFields */ undefined, privacyPolicy, dataManagerInstance, metricsAdapter);
504
- const entityLoader = new AuthorizationResultBasedEntityLoader_1.AuthorizationResultBasedEntityLoader(queryContext, TestEntity_1.testEntityConfiguration, TestEntity_1.TestEntity, dataManagerInstance, metricsAdapter, utils);
505
- entityLoader.utils.invalidateEntityForTransaction(queryContext, entityInstance);
506
- (0, ts_mockito_1.verify)(dataManagerMock.invalidateKeyValuePairsForTransaction(queryContext, (0, ts_mockito_1.anything)())).once();
507
- (0, ts_mockito_1.verify)(dataManagerMock.invalidateKeyValuePairsForTransaction(queryContext, (0, TSMockitoExtensions_1.deepEqualEntityAware)([
508
- [
509
- new SingleFieldHolder_1.SingleFieldHolder('customIdField'),
510
- new SingleFieldHolder_1.SingleFieldValueHolder(id1),
511
- ],
512
- [
513
- new SingleFieldHolder_1.SingleFieldHolder('testIndexedField'),
514
- new SingleFieldHolder_1.SingleFieldValueHolder('h1'),
515
- ],
516
- [
517
- new SingleFieldHolder_1.SingleFieldHolder('intField'),
518
- new SingleFieldHolder_1.SingleFieldValueHolder(5),
519
- ],
520
- [
521
- new SingleFieldHolder_1.SingleFieldHolder('stringField'),
522
- new SingleFieldHolder_1.SingleFieldValueHolder('huh'),
523
- ],
524
- [
525
- new SingleFieldHolder_1.SingleFieldHolder('dateField'),
526
- new SingleFieldHolder_1.SingleFieldValueHolder(date),
527
- ],
528
- [
529
- new CompositeFieldHolder_1.CompositeFieldHolder(['stringField', 'intField']),
530
- new CompositeFieldHolder_1.CompositeFieldValueHolder({ stringField: 'huh', intField: 5 }),
531
- ],
532
- [
533
- new CompositeFieldHolder_1.CompositeFieldHolder(['stringField', 'testIndexedField']),
534
- new CompositeFieldHolder_1.CompositeFieldValueHolder({ stringField: 'huh', testIndexedField: 'h1' }),
535
- ],
536
- ]))).once();
537
- });
538
- });
539
- (0, globals_1.it)('returns error result when not allowed', async () => {
540
- const viewerContext = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)(ViewerContext_1.ViewerContext));
541
- const privacyPolicyEvaluationContext = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)());
542
- const metricsAdapter = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)());
543
- const queryContext = new StubQueryContextProvider_1.StubQueryContextProvider().getQueryContext();
544
- const privacyPolicyMock = (0, ts_mockito_1.mock)(TestEntity_1.TestEntityPrivacyPolicy);
545
- const dataManagerMock = (0, ts_mockito_1.mock)();
546
- const id1 = (0, uuid_1.v4)();
547
- (0, ts_mockito_1.when)(dataManagerMock.loadManyEqualingAsync((0, ts_mockito_1.anything)(), (0, ts_mockito_1.anything)(), (0, ts_mockito_1.anything)())).thenResolve(new SingleFieldHolder_1.SingleFieldValueHolderMap().set(new SingleFieldHolder_1.SingleFieldValueHolder(id1), [
548
- {
549
- customIdField: id1,
550
- testIndexedField: '',
551
- stringField: '',
552
- intField: 0,
553
- dateField: new Date(),
554
- nullableField: null,
555
- },
556
- ]));
557
- const rejectionError = new Error();
558
- (0, ts_mockito_1.when)(privacyPolicyMock.authorizeReadAsync(viewerContext, queryContext, privacyPolicyEvaluationContext, (0, ts_mockito_1.anyOfClass)(TestEntity_1.TestEntity), (0, ts_mockito_1.anything)())).thenReject(rejectionError);
559
- const privacyPolicy = (0, ts_mockito_1.instance)(privacyPolicyMock);
560
- const dataManagerInstance = (0, ts_mockito_1.instance)(dataManagerMock);
561
- const utils = new EntityLoaderUtils_1.EntityLoaderUtils(viewerContext, queryContext, privacyPolicyEvaluationContext, TestEntity_1.testEntityConfiguration, TestEntity_1.TestEntity,
562
- /* entitySelectedFields */ undefined, privacyPolicy, dataManagerInstance, metricsAdapter);
563
- const entityLoader = new AuthorizationResultBasedEntityLoader_1.AuthorizationResultBasedEntityLoader(queryContext, TestEntity_1.testEntityConfiguration, TestEntity_1.TestEntity, dataManagerInstance, metricsAdapter, utils);
564
- const entityResult = await entityLoader.loadByIDAsync(id1);
565
- (0, globals_1.expect)(entityResult.ok).toBe(false);
566
- (0, globals_1.expect)(entityResult.reason).toEqual(rejectionError);
567
- (0, globals_1.expect)(entityResult.value).toBe(undefined);
568
- });
569
- (0, globals_1.it)('throws upon database adapter error', async () => {
570
- const viewerContext = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)(ViewerContext_1.ViewerContext));
571
- const privacyPolicyEvaluationContext = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)());
572
- const metricsAdapter = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)());
573
- const queryContext = new StubQueryContextProvider_1.StubQueryContextProvider().getQueryContext();
574
- const privacyPolicy = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)(TestEntity_1.TestEntityPrivacyPolicy));
575
- const dataManagerMock = (0, ts_mockito_1.mock)();
576
- const error = new Error();
577
- (0, ts_mockito_1.when)(dataManagerMock.loadManyEqualingAsync((0, ts_mockito_1.anything)(), (0, ts_mockito_1.anything)(), (0, ts_mockito_1.anything)())).thenReject(error);
578
- const dataManagerInstance = (0, ts_mockito_1.instance)(dataManagerMock);
579
- const utils = new EntityLoaderUtils_1.EntityLoaderUtils(viewerContext, queryContext, privacyPolicyEvaluationContext, TestEntity_1.testEntityConfiguration, TestEntity_1.TestEntity,
580
- /* entitySelectedFields */ undefined, privacyPolicy, dataManagerInstance, metricsAdapter);
581
- const entityLoader = new AuthorizationResultBasedEntityLoader_1.AuthorizationResultBasedEntityLoader(queryContext, TestEntity_1.testEntityConfiguration, TestEntity_1.TestEntity, dataManagerInstance, metricsAdapter, utils);
582
- const loadByValue = (0, uuid_1.v4)();
583
- await (0, globals_1.expect)(entityLoader.loadByIDAsync(loadByValue)).rejects.toEqual(error);
584
- await (0, globals_1.expect)(entityLoader.loadManyByIDsAsync([loadByValue])).rejects.toEqual(error);
585
- await (0, globals_1.expect)(entityLoader.loadManyByIDsNullableAsync([loadByValue])).rejects.toEqual(error);
586
- await (0, globals_1.expect)(entityLoader.loadManyByFieldEqualingAsync('customIdField', loadByValue)).rejects.toEqual(error);
587
- await (0, globals_1.expect)(entityLoader.loadManyByFieldEqualingManyAsync('customIdField', [loadByValue])).rejects.toEqual(error);
588
- });
589
- });
590
- //# sourceMappingURL=AuthorizationResultBasedEntityLoader-test.js.map