@expo/entity 0.46.0 → 0.47.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (216) hide show
  1. package/build/src/AuthorizationResultBasedEntityMutator.d.ts +5 -3
  2. package/build/src/AuthorizationResultBasedEntityMutator.js +75 -37
  3. package/build/src/AuthorizationResultBasedEntityMutator.js.map +1 -1
  4. package/build/src/EntityDeleter.js +1 -1
  5. package/build/src/EntityDeleter.js.map +1 -1
  6. package/build/src/EntityFields.d.ts +7 -0
  7. package/build/src/EntityFields.js +11 -1
  8. package/build/src/EntityFields.js.map +1 -1
  9. package/build/src/EntityMutatorFactory.d.ts +3 -2
  10. package/build/src/EntityMutatorFactory.js +4 -4
  11. package/build/src/EntityMutatorFactory.js.map +1 -1
  12. package/build/src/EntityUpdater.js +1 -1
  13. package/build/src/EntityUpdater.js.map +1 -1
  14. package/build/src/ViewerScopedEntityMutatorFactory.d.ts +3 -2
  15. package/build/src/ViewerScopedEntityMutatorFactory.js +4 -4
  16. package/build/src/ViewerScopedEntityMutatorFactory.js.map +1 -1
  17. package/package.json +5 -3
  18. package/src/AuthorizationResultBasedEntityMutator.ts +63 -49
  19. package/src/EntityDeleter.ts +1 -1
  20. package/src/EntityFields.ts +13 -0
  21. package/src/EntityMutatorFactory.ts +5 -0
  22. package/src/EntityUpdater.ts +1 -1
  23. package/src/ViewerScopedEntityMutatorFactory.ts +5 -2
  24. package/src/__tests__/EntityFields-test.ts +7 -0
  25. package/src/__tests__/EntityMutator-test.ts +217 -16
  26. package/LICENSE +0 -21
  27. package/build/src/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.d.ts +0 -1
  28. package/build/src/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.js +0 -240
  29. package/build/src/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.js.map +0 -1
  30. package/build/src/__tests__/AuthorizationResultBasedEntityLoader-constructor-test.d.ts +0 -26
  31. package/build/src/__tests__/AuthorizationResultBasedEntityLoader-constructor-test.js +0 -109
  32. package/build/src/__tests__/AuthorizationResultBasedEntityLoader-constructor-test.js.map +0 -1
  33. package/build/src/__tests__/AuthorizationResultBasedEntityLoader-test.d.ts +0 -1
  34. package/build/src/__tests__/AuthorizationResultBasedEntityLoader-test.js +0 -590
  35. package/build/src/__tests__/AuthorizationResultBasedEntityLoader-test.js.map +0 -1
  36. package/build/src/__tests__/ComposedCacheAdapter-test.d.ts +0 -1
  37. package/build/src/__tests__/ComposedCacheAdapter-test.js +0 -259
  38. package/build/src/__tests__/ComposedCacheAdapter-test.js.map +0 -1
  39. package/build/src/__tests__/ComposedSecondaryEntityCache-test.d.ts +0 -1
  40. package/build/src/__tests__/ComposedSecondaryEntityCache-test.js +0 -67
  41. package/build/src/__tests__/ComposedSecondaryEntityCache-test.js.map +0 -1
  42. package/build/src/__tests__/EnforcingEntityAssociationLoader-test.d.ts +0 -1
  43. package/build/src/__tests__/EnforcingEntityAssociationLoader-test.js +0 -113
  44. package/build/src/__tests__/EnforcingEntityAssociationLoader-test.js.map +0 -1
  45. package/build/src/__tests__/EnforcingEntityLoader-test.d.ts +0 -1
  46. package/build/src/__tests__/EnforcingEntityLoader-test.js +0 -316
  47. package/build/src/__tests__/EnforcingEntityLoader-test.js.map +0 -1
  48. package/build/src/__tests__/Entity-test.d.ts +0 -1
  49. package/build/src/__tests__/Entity-test.js +0 -92
  50. package/build/src/__tests__/Entity-test.js.map +0 -1
  51. package/build/src/__tests__/EntityAssociationLoader-test.d.ts +0 -1
  52. package/build/src/__tests__/EntityAssociationLoader-test.js +0 -28
  53. package/build/src/__tests__/EntityAssociationLoader-test.js.map +0 -1
  54. package/build/src/__tests__/EntityCommonUseCases-test.d.ts +0 -1
  55. package/build/src/__tests__/EntityCommonUseCases-test.js +0 -111
  56. package/build/src/__tests__/EntityCommonUseCases-test.js.map +0 -1
  57. package/build/src/__tests__/EntityCompanion-test.d.ts +0 -1
  58. package/build/src/__tests__/EntityCompanion-test.js +0 -42
  59. package/build/src/__tests__/EntityCompanion-test.js.map +0 -1
  60. package/build/src/__tests__/EntityCompanionProvider-test.d.ts +0 -1
  61. package/build/src/__tests__/EntityCompanionProvider-test.js +0 -53
  62. package/build/src/__tests__/EntityCompanionProvider-test.js.map +0 -1
  63. package/build/src/__tests__/EntityConfiguration-test.d.ts +0 -1
  64. package/build/src/__tests__/EntityConfiguration-test.js +0 -164
  65. package/build/src/__tests__/EntityConfiguration-test.js.map +0 -1
  66. package/build/src/__tests__/EntityDatabaseAdapter-test.d.ts +0 -1
  67. package/build/src/__tests__/EntityDatabaseAdapter-test.js +0 -189
  68. package/build/src/__tests__/EntityDatabaseAdapter-test.js.map +0 -1
  69. package/build/src/__tests__/EntityEdges-test.d.ts +0 -1
  70. package/build/src/__tests__/EntityEdges-test.js +0 -680
  71. package/build/src/__tests__/EntityEdges-test.js.map +0 -1
  72. package/build/src/__tests__/EntityFields-test.d.ts +0 -1
  73. package/build/src/__tests__/EntityFields-test.js +0 -61
  74. package/build/src/__tests__/EntityFields-test.js.map +0 -1
  75. package/build/src/__tests__/EntityLoader-test.d.ts +0 -1
  76. package/build/src/__tests__/EntityLoader-test.js +0 -34
  77. package/build/src/__tests__/EntityLoader-test.js.map +0 -1
  78. package/build/src/__tests__/EntityMutator-MutationCacheConsistency-test.d.ts +0 -1
  79. package/build/src/__tests__/EntityMutator-MutationCacheConsistency-test.js +0 -71
  80. package/build/src/__tests__/EntityMutator-MutationCacheConsistency-test.js.map +0 -1
  81. package/build/src/__tests__/EntityMutator-SingleCompositeFieldCacheConsistency-test.d.ts +0 -1
  82. package/build/src/__tests__/EntityMutator-SingleCompositeFieldCacheConsistency-test.js +0 -54
  83. package/build/src/__tests__/EntityMutator-SingleCompositeFieldCacheConsistency-test.js.map +0 -1
  84. package/build/src/__tests__/EntityMutator-test.d.ts +0 -1
  85. package/build/src/__tests__/EntityMutator-test.js +0 -721
  86. package/build/src/__tests__/EntityMutator-test.js.map +0 -1
  87. package/build/src/__tests__/EntityPrivacyPolicy-test.d.ts +0 -1
  88. package/build/src/__tests__/EntityPrivacyPolicy-test.js +0 -429
  89. package/build/src/__tests__/EntityPrivacyPolicy-test.js.map +0 -1
  90. package/build/src/__tests__/EntityQueryContext-test.d.ts +0 -1
  91. package/build/src/__tests__/EntityQueryContext-test.js +0 -181
  92. package/build/src/__tests__/EntityQueryContext-test.js.map +0 -1
  93. package/build/src/__tests__/EntitySecondaryCacheLoader-test.d.ts +0 -1
  94. package/build/src/__tests__/EntitySecondaryCacheLoader-test.js +0 -58
  95. package/build/src/__tests__/EntitySecondaryCacheLoader-test.js.map +0 -1
  96. package/build/src/__tests__/EntitySelfReferentialEdges-test.d.ts +0 -1
  97. package/build/src/__tests__/EntitySelfReferentialEdges-test.js +0 -196
  98. package/build/src/__tests__/EntitySelfReferentialEdges-test.js.map +0 -1
  99. package/build/src/__tests__/GenericEntityCacheAdapter-test.d.ts +0 -1
  100. package/build/src/__tests__/GenericEntityCacheAdapter-test.js +0 -95
  101. package/build/src/__tests__/GenericEntityCacheAdapter-test.js.map +0 -1
  102. package/build/src/__tests__/ReadonlyEntity-test.d.ts +0 -1
  103. package/build/src/__tests__/ReadonlyEntity-test.js +0 -209
  104. package/build/src/__tests__/ReadonlyEntity-test.js.map +0 -1
  105. package/build/src/__tests__/ViewerContext-test.d.ts +0 -1
  106. package/build/src/__tests__/ViewerContext-test.js +0 -28
  107. package/build/src/__tests__/ViewerContext-test.js.map +0 -1
  108. package/build/src/__tests__/ViewerScopedEntityCompanion-test.d.ts +0 -1
  109. package/build/src/__tests__/ViewerScopedEntityCompanion-test.js +0 -18
  110. package/build/src/__tests__/ViewerScopedEntityCompanion-test.js.map +0 -1
  111. package/build/src/__tests__/ViewerScopedEntityCompanionProvider-test.d.ts +0 -1
  112. package/build/src/__tests__/ViewerScopedEntityCompanionProvider-test.js +0 -18
  113. package/build/src/__tests__/ViewerScopedEntityCompanionProvider-test.js.map +0 -1
  114. package/build/src/__tests__/ViewerScopedEntityLoaderFactory-test.d.ts +0 -1
  115. package/build/src/__tests__/ViewerScopedEntityLoaderFactory-test.js +0 -21
  116. package/build/src/__tests__/ViewerScopedEntityLoaderFactory-test.js.map +0 -1
  117. package/build/src/__tests__/ViewerScopedEntityMutatorFactory-test.d.ts +0 -1
  118. package/build/src/__tests__/ViewerScopedEntityMutatorFactory-test.js +0 -20
  119. package/build/src/__tests__/ViewerScopedEntityMutatorFactory-test.js.map +0 -1
  120. package/build/src/__tests__/cases/TwoEntitySameTableDisjointRows-test.d.ts +0 -1
  121. package/build/src/__tests__/cases/TwoEntitySameTableDisjointRows-test.js +0 -121
  122. package/build/src/__tests__/cases/TwoEntitySameTableDisjointRows-test.js.map +0 -1
  123. package/build/src/__tests__/cases/TwoEntitySameTableOverlappingRows-test.d.ts +0 -1
  124. package/build/src/__tests__/cases/TwoEntitySameTableOverlappingRows-test.js +0 -119
  125. package/build/src/__tests__/cases/TwoEntitySameTableOverlappingRows-test.js.map +0 -1
  126. package/build/src/__tests__/entityUtils-test.d.ts +0 -1
  127. package/build/src/__tests__/entityUtils-test.js +0 -88
  128. package/build/src/__tests__/entityUtils-test.js.map +0 -1
  129. package/build/src/errors/__tests__/EntityDatabaseAdapterError-test.d.ts +0 -1
  130. package/build/src/errors/__tests__/EntityDatabaseAdapterError-test.js +0 -21
  131. package/build/src/errors/__tests__/EntityDatabaseAdapterError-test.js.map +0 -1
  132. package/build/src/internal/__tests__/CompositeFieldHolder-test.d.ts +0 -1
  133. package/build/src/internal/__tests__/CompositeFieldHolder-test.js +0 -25
  134. package/build/src/internal/__tests__/CompositeFieldHolder-test.js.map +0 -1
  135. package/build/src/internal/__tests__/CompositeFieldValueMap-test.d.ts +0 -1
  136. package/build/src/internal/__tests__/CompositeFieldValueMap-test.js +0 -40
  137. package/build/src/internal/__tests__/CompositeFieldValueMap-test.js.map +0 -1
  138. package/build/src/internal/__tests__/EntityDataManager-test.d.ts +0 -1
  139. package/build/src/internal/__tests__/EntityDataManager-test.js +0 -666
  140. package/build/src/internal/__tests__/EntityDataManager-test.js.map +0 -1
  141. package/build/src/internal/__tests__/EntityFieldTransformationUtils-test.d.ts +0 -1
  142. package/build/src/internal/__tests__/EntityFieldTransformationUtils-test.js +0 -135
  143. package/build/src/internal/__tests__/EntityFieldTransformationUtils-test.js.map +0 -1
  144. package/build/src/internal/__tests__/ReadThroughEntityCache-test.d.ts +0 -1
  145. package/build/src/internal/__tests__/ReadThroughEntityCache-test.js +0 -217
  146. package/build/src/internal/__tests__/ReadThroughEntityCache-test.js.map +0 -1
  147. package/build/src/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.d.ts +0 -1
  148. package/build/src/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.js +0 -18
  149. package/build/src/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.js.map +0 -1
  150. package/build/src/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.d.ts +0 -1
  151. package/build/src/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.js +0 -18
  152. package/build/src/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.js.map +0 -1
  153. package/build/src/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.d.ts +0 -1
  154. package/build/src/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.js +0 -18
  155. package/build/src/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.js.map +0 -1
  156. package/build/src/utils/__testfixtures__/PrivacyPolicyRuleTestUtils.d.ts +0 -28
  157. package/build/src/utils/__testfixtures__/PrivacyPolicyRuleTestUtils.js +0 -53
  158. package/build/src/utils/__testfixtures__/PrivacyPolicyRuleTestUtils.js.map +0 -1
  159. package/build/src/utils/__testfixtures__/SimpleTestEntity.d.ts +0 -20
  160. package/build/src/utils/__testfixtures__/SimpleTestEntity.js +0 -46
  161. package/build/src/utils/__testfixtures__/SimpleTestEntity.js.map +0 -1
  162. package/build/src/utils/__testfixtures__/StubCacheAdapter.d.ts +0 -29
  163. package/build/src/utils/__testfixtures__/StubCacheAdapter.js +0 -103
  164. package/build/src/utils/__testfixtures__/StubCacheAdapter.js.map +0 -1
  165. package/build/src/utils/__testfixtures__/StubDatabaseAdapter.d.ts +0 -26
  166. package/build/src/utils/__testfixtures__/StubDatabaseAdapter.js +0 -173
  167. package/build/src/utils/__testfixtures__/StubDatabaseAdapter.js.map +0 -1
  168. package/build/src/utils/__testfixtures__/StubDatabaseAdapterProvider.d.ts +0 -7
  169. package/build/src/utils/__testfixtures__/StubDatabaseAdapterProvider.js +0 -12
  170. package/build/src/utils/__testfixtures__/StubDatabaseAdapterProvider.js.map +0 -1
  171. package/build/src/utils/__testfixtures__/StubQueryContextProvider.d.ts +0 -7
  172. package/build/src/utils/__testfixtures__/StubQueryContextProvider.js +0 -17
  173. package/build/src/utils/__testfixtures__/StubQueryContextProvider.js.map +0 -1
  174. package/build/src/utils/__testfixtures__/TSMockitoExtensions.d.ts +0 -9
  175. package/build/src/utils/__testfixtures__/TSMockitoExtensions.js +0 -65
  176. package/build/src/utils/__testfixtures__/TSMockitoExtensions.js.map +0 -1
  177. package/build/src/utils/__testfixtures__/TestEntity.d.ts +0 -30
  178. package/build/src/utils/__testfixtures__/TestEntity.js +0 -96
  179. package/build/src/utils/__testfixtures__/TestEntity.js.map +0 -1
  180. package/build/src/utils/__testfixtures__/TestEntity2.d.ts +0 -20
  181. package/build/src/utils/__testfixtures__/TestEntity2.js +0 -49
  182. package/build/src/utils/__testfixtures__/TestEntity2.js.map +0 -1
  183. package/build/src/utils/__testfixtures__/TestEntityWithMutationTriggers.d.ts +0 -36
  184. package/build/src/utils/__testfixtures__/TestEntityWithMutationTriggers.js +0 -80
  185. package/build/src/utils/__testfixtures__/TestEntityWithMutationTriggers.js.map +0 -1
  186. package/build/src/utils/__testfixtures__/TestViewerContext.d.ts +0 -3
  187. package/build/src/utils/__testfixtures__/TestViewerContext.js +0 -8
  188. package/build/src/utils/__testfixtures__/TestViewerContext.js.map +0 -1
  189. package/build/src/utils/__testfixtures__/createUnitTestEntityCompanionProvider.d.ts +0 -7
  190. package/build/src/utils/__testfixtures__/createUnitTestEntityCompanionProvider.js +0 -33
  191. package/build/src/utils/__testfixtures__/createUnitTestEntityCompanionProvider.js.map +0 -1
  192. package/build/src/utils/__testfixtures__/describeFieldTestCase.d.ts +0 -2
  193. package/build/src/utils/__testfixtures__/describeFieldTestCase.js +0 -19
  194. package/build/src/utils/__testfixtures__/describeFieldTestCase.js.map +0 -1
  195. package/build/src/utils/__tests__/EntityCreationUtils-test.d.ts +0 -1
  196. package/build/src/utils/__tests__/EntityCreationUtils-test.js +0 -144
  197. package/build/src/utils/__tests__/EntityCreationUtils-test.js.map +0 -1
  198. package/build/src/utils/__tests__/EntityPrivacyUtils-test.d.ts +0 -1
  199. package/build/src/utils/__tests__/EntityPrivacyUtils-test.js +0 -460
  200. package/build/src/utils/__tests__/EntityPrivacyUtils-test.js.map +0 -1
  201. package/build/src/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.d.ts +0 -1
  202. package/build/src/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.js +0 -180
  203. package/build/src/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.js.map +0 -1
  204. package/build/src/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.d.ts +0 -1
  205. package/build/src/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.js +0 -27
  206. package/build/src/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.js.map +0 -1
  207. package/build/src/utils/collections/__tests__/SerializableKeyMap-test.d.ts +0 -5
  208. package/build/src/utils/collections/__tests__/SerializableKeyMap-test.js +0 -99
  209. package/build/src/utils/collections/__tests__/SerializableKeyMap-test.js.map +0 -1
  210. package/build/src/utils/collections/__tests__/maps-test.d.ts +0 -1
  211. package/build/src/utils/collections/__tests__/maps-test.js +0 -121
  212. package/build/src/utils/collections/__tests__/maps-test.js.map +0 -1
  213. package/build/src/utils/collections/__tests__/sets-test.d.ts +0 -1
  214. package/build/src/utils/collections/__tests__/sets-test.js +0 -19
  215. package/build/src/utils/collections/__tests__/sets-test.js.map +0 -1
  216. package/build/tsconfig.tsbuildinfo +0 -1
@@ -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