@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.
- package/build/src/AuthorizationResultBasedEntityMutator.d.ts +5 -3
- package/build/src/AuthorizationResultBasedEntityMutator.js +75 -37
- package/build/src/AuthorizationResultBasedEntityMutator.js.map +1 -1
- package/build/src/EntityDeleter.js +1 -1
- package/build/src/EntityDeleter.js.map +1 -1
- package/build/src/EntityFields.d.ts +7 -0
- package/build/src/EntityFields.js +11 -1
- package/build/src/EntityFields.js.map +1 -1
- package/build/src/EntityMutatorFactory.d.ts +3 -2
- package/build/src/EntityMutatorFactory.js +4 -4
- package/build/src/EntityMutatorFactory.js.map +1 -1
- package/build/src/EntityUpdater.js +1 -1
- package/build/src/EntityUpdater.js.map +1 -1
- package/build/src/ViewerScopedEntityMutatorFactory.d.ts +3 -2
- package/build/src/ViewerScopedEntityMutatorFactory.js +4 -4
- package/build/src/ViewerScopedEntityMutatorFactory.js.map +1 -1
- package/package.json +5 -3
- package/src/AuthorizationResultBasedEntityMutator.ts +63 -49
- package/src/EntityDeleter.ts +1 -1
- package/src/EntityFields.ts +13 -0
- package/src/EntityMutatorFactory.ts +5 -0
- package/src/EntityUpdater.ts +1 -1
- package/src/ViewerScopedEntityMutatorFactory.ts +5 -2
- package/src/__tests__/EntityFields-test.ts +7 -0
- package/src/__tests__/EntityMutator-test.ts +217 -16
- package/LICENSE +0 -21
- package/build/src/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.d.ts +0 -1
- package/build/src/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.js +0 -240
- package/build/src/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.js.map +0 -1
- package/build/src/__tests__/AuthorizationResultBasedEntityLoader-constructor-test.d.ts +0 -26
- package/build/src/__tests__/AuthorizationResultBasedEntityLoader-constructor-test.js +0 -109
- package/build/src/__tests__/AuthorizationResultBasedEntityLoader-constructor-test.js.map +0 -1
- package/build/src/__tests__/AuthorizationResultBasedEntityLoader-test.d.ts +0 -1
- package/build/src/__tests__/AuthorizationResultBasedEntityLoader-test.js +0 -590
- package/build/src/__tests__/AuthorizationResultBasedEntityLoader-test.js.map +0 -1
- package/build/src/__tests__/ComposedCacheAdapter-test.d.ts +0 -1
- package/build/src/__tests__/ComposedCacheAdapter-test.js +0 -259
- package/build/src/__tests__/ComposedCacheAdapter-test.js.map +0 -1
- package/build/src/__tests__/ComposedSecondaryEntityCache-test.d.ts +0 -1
- package/build/src/__tests__/ComposedSecondaryEntityCache-test.js +0 -67
- package/build/src/__tests__/ComposedSecondaryEntityCache-test.js.map +0 -1
- package/build/src/__tests__/EnforcingEntityAssociationLoader-test.d.ts +0 -1
- package/build/src/__tests__/EnforcingEntityAssociationLoader-test.js +0 -113
- package/build/src/__tests__/EnforcingEntityAssociationLoader-test.js.map +0 -1
- package/build/src/__tests__/EnforcingEntityLoader-test.d.ts +0 -1
- package/build/src/__tests__/EnforcingEntityLoader-test.js +0 -316
- package/build/src/__tests__/EnforcingEntityLoader-test.js.map +0 -1
- package/build/src/__tests__/Entity-test.d.ts +0 -1
- package/build/src/__tests__/Entity-test.js +0 -92
- package/build/src/__tests__/Entity-test.js.map +0 -1
- package/build/src/__tests__/EntityAssociationLoader-test.d.ts +0 -1
- package/build/src/__tests__/EntityAssociationLoader-test.js +0 -28
- package/build/src/__tests__/EntityAssociationLoader-test.js.map +0 -1
- package/build/src/__tests__/EntityCommonUseCases-test.d.ts +0 -1
- package/build/src/__tests__/EntityCommonUseCases-test.js +0 -111
- package/build/src/__tests__/EntityCommonUseCases-test.js.map +0 -1
- package/build/src/__tests__/EntityCompanion-test.d.ts +0 -1
- package/build/src/__tests__/EntityCompanion-test.js +0 -42
- package/build/src/__tests__/EntityCompanion-test.js.map +0 -1
- package/build/src/__tests__/EntityCompanionProvider-test.d.ts +0 -1
- package/build/src/__tests__/EntityCompanionProvider-test.js +0 -53
- package/build/src/__tests__/EntityCompanionProvider-test.js.map +0 -1
- package/build/src/__tests__/EntityConfiguration-test.d.ts +0 -1
- package/build/src/__tests__/EntityConfiguration-test.js +0 -164
- package/build/src/__tests__/EntityConfiguration-test.js.map +0 -1
- package/build/src/__tests__/EntityDatabaseAdapter-test.d.ts +0 -1
- package/build/src/__tests__/EntityDatabaseAdapter-test.js +0 -189
- package/build/src/__tests__/EntityDatabaseAdapter-test.js.map +0 -1
- package/build/src/__tests__/EntityEdges-test.d.ts +0 -1
- package/build/src/__tests__/EntityEdges-test.js +0 -680
- package/build/src/__tests__/EntityEdges-test.js.map +0 -1
- package/build/src/__tests__/EntityFields-test.d.ts +0 -1
- package/build/src/__tests__/EntityFields-test.js +0 -61
- package/build/src/__tests__/EntityFields-test.js.map +0 -1
- package/build/src/__tests__/EntityLoader-test.d.ts +0 -1
- package/build/src/__tests__/EntityLoader-test.js +0 -34
- package/build/src/__tests__/EntityLoader-test.js.map +0 -1
- package/build/src/__tests__/EntityMutator-MutationCacheConsistency-test.d.ts +0 -1
- package/build/src/__tests__/EntityMutator-MutationCacheConsistency-test.js +0 -71
- package/build/src/__tests__/EntityMutator-MutationCacheConsistency-test.js.map +0 -1
- package/build/src/__tests__/EntityMutator-SingleCompositeFieldCacheConsistency-test.d.ts +0 -1
- package/build/src/__tests__/EntityMutator-SingleCompositeFieldCacheConsistency-test.js +0 -54
- package/build/src/__tests__/EntityMutator-SingleCompositeFieldCacheConsistency-test.js.map +0 -1
- package/build/src/__tests__/EntityMutator-test.d.ts +0 -1
- package/build/src/__tests__/EntityMutator-test.js +0 -721
- package/build/src/__tests__/EntityMutator-test.js.map +0 -1
- package/build/src/__tests__/EntityPrivacyPolicy-test.d.ts +0 -1
- package/build/src/__tests__/EntityPrivacyPolicy-test.js +0 -429
- package/build/src/__tests__/EntityPrivacyPolicy-test.js.map +0 -1
- package/build/src/__tests__/EntityQueryContext-test.d.ts +0 -1
- package/build/src/__tests__/EntityQueryContext-test.js +0 -181
- package/build/src/__tests__/EntityQueryContext-test.js.map +0 -1
- package/build/src/__tests__/EntitySecondaryCacheLoader-test.d.ts +0 -1
- package/build/src/__tests__/EntitySecondaryCacheLoader-test.js +0 -58
- package/build/src/__tests__/EntitySecondaryCacheLoader-test.js.map +0 -1
- package/build/src/__tests__/EntitySelfReferentialEdges-test.d.ts +0 -1
- package/build/src/__tests__/EntitySelfReferentialEdges-test.js +0 -196
- package/build/src/__tests__/EntitySelfReferentialEdges-test.js.map +0 -1
- package/build/src/__tests__/GenericEntityCacheAdapter-test.d.ts +0 -1
- package/build/src/__tests__/GenericEntityCacheAdapter-test.js +0 -95
- package/build/src/__tests__/GenericEntityCacheAdapter-test.js.map +0 -1
- package/build/src/__tests__/ReadonlyEntity-test.d.ts +0 -1
- package/build/src/__tests__/ReadonlyEntity-test.js +0 -209
- package/build/src/__tests__/ReadonlyEntity-test.js.map +0 -1
- package/build/src/__tests__/ViewerContext-test.d.ts +0 -1
- package/build/src/__tests__/ViewerContext-test.js +0 -28
- package/build/src/__tests__/ViewerContext-test.js.map +0 -1
- package/build/src/__tests__/ViewerScopedEntityCompanion-test.d.ts +0 -1
- package/build/src/__tests__/ViewerScopedEntityCompanion-test.js +0 -18
- package/build/src/__tests__/ViewerScopedEntityCompanion-test.js.map +0 -1
- package/build/src/__tests__/ViewerScopedEntityCompanionProvider-test.d.ts +0 -1
- package/build/src/__tests__/ViewerScopedEntityCompanionProvider-test.js +0 -18
- package/build/src/__tests__/ViewerScopedEntityCompanionProvider-test.js.map +0 -1
- package/build/src/__tests__/ViewerScopedEntityLoaderFactory-test.d.ts +0 -1
- package/build/src/__tests__/ViewerScopedEntityLoaderFactory-test.js +0 -21
- package/build/src/__tests__/ViewerScopedEntityLoaderFactory-test.js.map +0 -1
- package/build/src/__tests__/ViewerScopedEntityMutatorFactory-test.d.ts +0 -1
- package/build/src/__tests__/ViewerScopedEntityMutatorFactory-test.js +0 -20
- package/build/src/__tests__/ViewerScopedEntityMutatorFactory-test.js.map +0 -1
- package/build/src/__tests__/cases/TwoEntitySameTableDisjointRows-test.d.ts +0 -1
- package/build/src/__tests__/cases/TwoEntitySameTableDisjointRows-test.js +0 -121
- package/build/src/__tests__/cases/TwoEntitySameTableDisjointRows-test.js.map +0 -1
- package/build/src/__tests__/cases/TwoEntitySameTableOverlappingRows-test.d.ts +0 -1
- package/build/src/__tests__/cases/TwoEntitySameTableOverlappingRows-test.js +0 -119
- package/build/src/__tests__/cases/TwoEntitySameTableOverlappingRows-test.js.map +0 -1
- package/build/src/__tests__/entityUtils-test.d.ts +0 -1
- package/build/src/__tests__/entityUtils-test.js +0 -88
- package/build/src/__tests__/entityUtils-test.js.map +0 -1
- package/build/src/errors/__tests__/EntityDatabaseAdapterError-test.d.ts +0 -1
- package/build/src/errors/__tests__/EntityDatabaseAdapterError-test.js +0 -21
- package/build/src/errors/__tests__/EntityDatabaseAdapterError-test.js.map +0 -1
- package/build/src/internal/__tests__/CompositeFieldHolder-test.d.ts +0 -1
- package/build/src/internal/__tests__/CompositeFieldHolder-test.js +0 -25
- package/build/src/internal/__tests__/CompositeFieldHolder-test.js.map +0 -1
- package/build/src/internal/__tests__/CompositeFieldValueMap-test.d.ts +0 -1
- package/build/src/internal/__tests__/CompositeFieldValueMap-test.js +0 -40
- package/build/src/internal/__tests__/CompositeFieldValueMap-test.js.map +0 -1
- package/build/src/internal/__tests__/EntityDataManager-test.d.ts +0 -1
- package/build/src/internal/__tests__/EntityDataManager-test.js +0 -666
- package/build/src/internal/__tests__/EntityDataManager-test.js.map +0 -1
- package/build/src/internal/__tests__/EntityFieldTransformationUtils-test.d.ts +0 -1
- package/build/src/internal/__tests__/EntityFieldTransformationUtils-test.js +0 -135
- package/build/src/internal/__tests__/EntityFieldTransformationUtils-test.js.map +0 -1
- package/build/src/internal/__tests__/ReadThroughEntityCache-test.d.ts +0 -1
- package/build/src/internal/__tests__/ReadThroughEntityCache-test.js +0 -217
- package/build/src/internal/__tests__/ReadThroughEntityCache-test.js.map +0 -1
- package/build/src/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.d.ts +0 -1
- package/build/src/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.js +0 -18
- package/build/src/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.js.map +0 -1
- package/build/src/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.d.ts +0 -1
- package/build/src/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.js +0 -18
- package/build/src/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.js.map +0 -1
- package/build/src/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.d.ts +0 -1
- package/build/src/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.js +0 -18
- package/build/src/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.js.map +0 -1
- package/build/src/utils/__testfixtures__/PrivacyPolicyRuleTestUtils.d.ts +0 -28
- package/build/src/utils/__testfixtures__/PrivacyPolicyRuleTestUtils.js +0 -53
- package/build/src/utils/__testfixtures__/PrivacyPolicyRuleTestUtils.js.map +0 -1
- package/build/src/utils/__testfixtures__/SimpleTestEntity.d.ts +0 -20
- package/build/src/utils/__testfixtures__/SimpleTestEntity.js +0 -46
- package/build/src/utils/__testfixtures__/SimpleTestEntity.js.map +0 -1
- package/build/src/utils/__testfixtures__/StubCacheAdapter.d.ts +0 -29
- package/build/src/utils/__testfixtures__/StubCacheAdapter.js +0 -103
- package/build/src/utils/__testfixtures__/StubCacheAdapter.js.map +0 -1
- package/build/src/utils/__testfixtures__/StubDatabaseAdapter.d.ts +0 -26
- package/build/src/utils/__testfixtures__/StubDatabaseAdapter.js +0 -173
- package/build/src/utils/__testfixtures__/StubDatabaseAdapter.js.map +0 -1
- package/build/src/utils/__testfixtures__/StubDatabaseAdapterProvider.d.ts +0 -7
- package/build/src/utils/__testfixtures__/StubDatabaseAdapterProvider.js +0 -12
- package/build/src/utils/__testfixtures__/StubDatabaseAdapterProvider.js.map +0 -1
- package/build/src/utils/__testfixtures__/StubQueryContextProvider.d.ts +0 -7
- package/build/src/utils/__testfixtures__/StubQueryContextProvider.js +0 -17
- package/build/src/utils/__testfixtures__/StubQueryContextProvider.js.map +0 -1
- package/build/src/utils/__testfixtures__/TSMockitoExtensions.d.ts +0 -9
- package/build/src/utils/__testfixtures__/TSMockitoExtensions.js +0 -65
- package/build/src/utils/__testfixtures__/TSMockitoExtensions.js.map +0 -1
- package/build/src/utils/__testfixtures__/TestEntity.d.ts +0 -30
- package/build/src/utils/__testfixtures__/TestEntity.js +0 -96
- package/build/src/utils/__testfixtures__/TestEntity.js.map +0 -1
- package/build/src/utils/__testfixtures__/TestEntity2.d.ts +0 -20
- package/build/src/utils/__testfixtures__/TestEntity2.js +0 -49
- package/build/src/utils/__testfixtures__/TestEntity2.js.map +0 -1
- package/build/src/utils/__testfixtures__/TestEntityWithMutationTriggers.d.ts +0 -36
- package/build/src/utils/__testfixtures__/TestEntityWithMutationTriggers.js +0 -80
- package/build/src/utils/__testfixtures__/TestEntityWithMutationTriggers.js.map +0 -1
- package/build/src/utils/__testfixtures__/TestViewerContext.d.ts +0 -3
- package/build/src/utils/__testfixtures__/TestViewerContext.js +0 -8
- package/build/src/utils/__testfixtures__/TestViewerContext.js.map +0 -1
- package/build/src/utils/__testfixtures__/createUnitTestEntityCompanionProvider.d.ts +0 -7
- package/build/src/utils/__testfixtures__/createUnitTestEntityCompanionProvider.js +0 -33
- package/build/src/utils/__testfixtures__/createUnitTestEntityCompanionProvider.js.map +0 -1
- package/build/src/utils/__testfixtures__/describeFieldTestCase.d.ts +0 -2
- package/build/src/utils/__testfixtures__/describeFieldTestCase.js +0 -19
- package/build/src/utils/__testfixtures__/describeFieldTestCase.js.map +0 -1
- package/build/src/utils/__tests__/EntityCreationUtils-test.d.ts +0 -1
- package/build/src/utils/__tests__/EntityCreationUtils-test.js +0 -144
- package/build/src/utils/__tests__/EntityCreationUtils-test.js.map +0 -1
- package/build/src/utils/__tests__/EntityPrivacyUtils-test.d.ts +0 -1
- package/build/src/utils/__tests__/EntityPrivacyUtils-test.js +0 -460
- package/build/src/utils/__tests__/EntityPrivacyUtils-test.js.map +0 -1
- package/build/src/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.d.ts +0 -1
- package/build/src/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.js +0 -180
- package/build/src/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.js.map +0 -1
- package/build/src/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.d.ts +0 -1
- package/build/src/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.js +0 -27
- package/build/src/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.js.map +0 -1
- package/build/src/utils/collections/__tests__/SerializableKeyMap-test.d.ts +0 -5
- package/build/src/utils/collections/__tests__/SerializableKeyMap-test.js +0 -99
- package/build/src/utils/collections/__tests__/SerializableKeyMap-test.js.map +0 -1
- package/build/src/utils/collections/__tests__/maps-test.d.ts +0 -1
- package/build/src/utils/collections/__tests__/maps-test.js +0 -121
- package/build/src/utils/collections/__tests__/maps-test.js.map +0 -1
- package/build/src/utils/collections/__tests__/sets-test.d.ts +0 -1
- package/build/src/utils/collections/__tests__/sets-test.js +0 -19
- package/build/src/utils/collections/__tests__/sets-test.js.map +0 -1
- package/build/tsconfig.tsbuildinfo +0 -1
|
@@ -1,721 +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 EntityCompanionProvider_1 = require("../EntityCompanionProvider");
|
|
9
|
-
const EntityLoaderFactory_1 = require("../EntityLoaderFactory");
|
|
10
|
-
const EntityLoaderUtils_1 = require("../EntityLoaderUtils");
|
|
11
|
-
const EntityMutationInfo_1 = require("../EntityMutationInfo");
|
|
12
|
-
const EntityMutationTriggerConfiguration_1 = require("../EntityMutationTriggerConfiguration");
|
|
13
|
-
const EntityMutatorFactory_1 = require("../EntityMutatorFactory");
|
|
14
|
-
const EntityQueryContext_1 = require("../EntityQueryContext");
|
|
15
|
-
const ViewerContext_1 = require("../ViewerContext");
|
|
16
|
-
const entityUtils_1 = require("../entityUtils");
|
|
17
|
-
const EntityDataManager_1 = require("../internal/EntityDataManager");
|
|
18
|
-
const ReadThroughEntityCache_1 = require("../internal/ReadThroughEntityCache");
|
|
19
|
-
const IEntityMetricsAdapter_1 = require("../metrics/IEntityMetricsAdapter");
|
|
20
|
-
const NoOpEntityMetricsAdapter_1 = require("../metrics/NoOpEntityMetricsAdapter");
|
|
21
|
-
const SimpleTestEntity_1 = require("../utils/__testfixtures__/SimpleTestEntity");
|
|
22
|
-
const StubCacheAdapter_1 = require("../utils/__testfixtures__/StubCacheAdapter");
|
|
23
|
-
const StubDatabaseAdapter_1 = require("../utils/__testfixtures__/StubDatabaseAdapter");
|
|
24
|
-
const StubQueryContextProvider_1 = require("../utils/__testfixtures__/StubQueryContextProvider");
|
|
25
|
-
const TestEntity_1 = require("../utils/__testfixtures__/TestEntity");
|
|
26
|
-
class TestMutationTrigger extends EntityMutationTriggerConfiguration_1.EntityMutationTrigger {
|
|
27
|
-
async executeAsync(_viewerContext, _queryContext, _entity, _mutationInfo) { }
|
|
28
|
-
}
|
|
29
|
-
class TestNonTransactionalMutationTrigger extends EntityMutationTriggerConfiguration_1.EntityNonTransactionalMutationTrigger {
|
|
30
|
-
async executeAsync(_viewerContext, _entity) { }
|
|
31
|
-
}
|
|
32
|
-
const setUpMutationValidatorSpies = (mutationValidators) => {
|
|
33
|
-
return mutationValidators.map((validator) => (0, ts_mockito_1.spy)(validator));
|
|
34
|
-
};
|
|
35
|
-
const verifyValidatorCounts = (viewerContext, mutationValidatorSpies, expectedCalls, mutationInfo) => {
|
|
36
|
-
for (const validator of mutationValidatorSpies) {
|
|
37
|
-
(0, ts_mockito_1.verify)(validator.executeAsync(viewerContext, (0, ts_mockito_1.anyOfClass)(EntityQueryContext_1.EntityTransactionalQueryContext), (0, ts_mockito_1.anyOfClass)(TestEntity_1.TestEntity), (0, ts_mockito_1.deepEqual)(mutationInfo))).times(expectedCalls);
|
|
38
|
-
}
|
|
39
|
-
};
|
|
40
|
-
const setUpMutationTriggerSpies = (mutationTriggers) => {
|
|
41
|
-
return {
|
|
42
|
-
beforeCreate: [(0, ts_mockito_1.spy)(mutationTriggers.beforeCreate[0])],
|
|
43
|
-
afterCreate: [(0, ts_mockito_1.spy)(mutationTriggers.afterCreate[0])],
|
|
44
|
-
beforeUpdate: [(0, ts_mockito_1.spy)(mutationTriggers.beforeUpdate[0])],
|
|
45
|
-
afterUpdate: [(0, ts_mockito_1.spy)(mutationTriggers.afterUpdate[0])],
|
|
46
|
-
beforeDelete: [(0, ts_mockito_1.spy)(mutationTriggers.beforeDelete[0])],
|
|
47
|
-
afterDelete: [(0, ts_mockito_1.spy)(mutationTriggers.afterDelete[0])],
|
|
48
|
-
beforeAll: [(0, ts_mockito_1.spy)(mutationTriggers.beforeAll[0])],
|
|
49
|
-
afterAll: [(0, ts_mockito_1.spy)(mutationTriggers.afterAll[0])],
|
|
50
|
-
afterCommit: [(0, ts_mockito_1.spy)(mutationTriggers.afterCommit[0])],
|
|
51
|
-
};
|
|
52
|
-
};
|
|
53
|
-
const verifyTriggerCounts = (viewerContext, mutationTriggerSpies, executed, mutationInfo) => {
|
|
54
|
-
Object.keys(executed).forEach((s) => {
|
|
55
|
-
if (executed[s]) {
|
|
56
|
-
(0, ts_mockito_1.verify)(mutationTriggerSpies[s][0].executeAsync(viewerContext, (0, ts_mockito_1.anyOfClass)(EntityQueryContext_1.EntityTransactionalQueryContext), (0, ts_mockito_1.anyOfClass)(TestEntity_1.TestEntity), (0, ts_mockito_1.deepEqual)(mutationInfo))).once();
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
(0, ts_mockito_1.verify)(mutationTriggerSpies[s][0].executeAsync(viewerContext, (0, ts_mockito_1.anyOfClass)(EntityQueryContext_1.EntityTransactionalQueryContext), (0, ts_mockito_1.anyOfClass)(TestEntity_1.TestEntity), (0, ts_mockito_1.deepEqual)(mutationInfo))).never();
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
|
-
(0, ts_mockito_1.verify)(mutationTriggerSpies.beforeAll[0].executeAsync(viewerContext, (0, ts_mockito_1.anyOfClass)(EntityQueryContext_1.EntityTransactionalQueryContext), (0, ts_mockito_1.anyOfClass)(TestEntity_1.TestEntity), (0, ts_mockito_1.deepEqual)(mutationInfo))).once();
|
|
63
|
-
(0, ts_mockito_1.verify)(mutationTriggerSpies.afterAll[0].executeAsync(viewerContext, (0, ts_mockito_1.anyOfClass)(EntityQueryContext_1.EntityTransactionalQueryContext), (0, ts_mockito_1.anyOfClass)(TestEntity_1.TestEntity), (0, ts_mockito_1.deepEqual)(mutationInfo))).once();
|
|
64
|
-
(0, ts_mockito_1.verify)(mutationTriggerSpies.afterCommit[0].executeAsync(viewerContext, (0, ts_mockito_1.anyOfClass)(TestEntity_1.TestEntity), (0, ts_mockito_1.deepEqual)(mutationInfo))).once();
|
|
65
|
-
};
|
|
66
|
-
const createEntityMutatorFactory = (existingObjects) => {
|
|
67
|
-
const mutationValidators = [new TestMutationTrigger()];
|
|
68
|
-
const mutationTriggers = {
|
|
69
|
-
beforeCreate: [new TestMutationTrigger()],
|
|
70
|
-
afterCreate: [new TestMutationTrigger()],
|
|
71
|
-
beforeUpdate: [new TestMutationTrigger()],
|
|
72
|
-
afterUpdate: [new TestMutationTrigger()],
|
|
73
|
-
beforeDelete: [new TestMutationTrigger()],
|
|
74
|
-
afterDelete: [new TestMutationTrigger()],
|
|
75
|
-
beforeAll: [new TestMutationTrigger()],
|
|
76
|
-
afterAll: [new TestMutationTrigger()],
|
|
77
|
-
afterCommit: [new TestNonTransactionalMutationTrigger()],
|
|
78
|
-
};
|
|
79
|
-
const databaseAdapter = new StubDatabaseAdapter_1.StubDatabaseAdapter(TestEntity_1.testEntityConfiguration, StubDatabaseAdapter_1.StubDatabaseAdapter.convertFieldObjectsToDataStore(TestEntity_1.testEntityConfiguration, new Map([[TestEntity_1.testEntityConfiguration.tableName, existingObjects]])));
|
|
80
|
-
const customStubDatabaseAdapterProvider = {
|
|
81
|
-
getDatabaseAdapter(_entityConfiguration) {
|
|
82
|
-
return databaseAdapter;
|
|
83
|
-
},
|
|
84
|
-
};
|
|
85
|
-
const metricsAdapter = new NoOpEntityMetricsAdapter_1.NoOpEntityMetricsAdapter();
|
|
86
|
-
const cacheAdapterProvider = new StubCacheAdapter_1.NoCacheStubCacheAdapterProvider();
|
|
87
|
-
const cacheAdapter = cacheAdapterProvider.getCacheAdapter(TestEntity_1.testEntityConfiguration);
|
|
88
|
-
const entityCache = new ReadThroughEntityCache_1.ReadThroughEntityCache(TestEntity_1.testEntityConfiguration, cacheAdapter);
|
|
89
|
-
const queryContextProvider = new StubQueryContextProvider_1.StubQueryContextProvider();
|
|
90
|
-
const companionProvider = new EntityCompanionProvider_1.EntityCompanionProvider(metricsAdapter, new Map([
|
|
91
|
-
[
|
|
92
|
-
'postgres',
|
|
93
|
-
{
|
|
94
|
-
adapterProvider: customStubDatabaseAdapterProvider,
|
|
95
|
-
queryContextProvider,
|
|
96
|
-
},
|
|
97
|
-
],
|
|
98
|
-
]), new Map([
|
|
99
|
-
[
|
|
100
|
-
'redis',
|
|
101
|
-
{
|
|
102
|
-
cacheAdapterProvider,
|
|
103
|
-
},
|
|
104
|
-
],
|
|
105
|
-
]));
|
|
106
|
-
const dataManager = new EntityDataManager_1.EntityDataManager(databaseAdapter, entityCache, queryContextProvider, metricsAdapter, TestEntity_1.TestEntity.name);
|
|
107
|
-
const entityLoaderFactory = new EntityLoaderFactory_1.EntityLoaderFactory(companionProvider.getCompanionForEntity(TestEntity_1.TestEntity), dataManager, metricsAdapter);
|
|
108
|
-
const entityMutatorFactory = new EntityMutatorFactory_1.EntityMutatorFactory(companionProvider, TestEntity_1.testEntityConfiguration, TestEntity_1.TestEntity, companionProvider.getCompanionForEntity(TestEntity_1.TestEntity).privacyPolicy, mutationValidators, mutationTriggers, entityLoaderFactory, databaseAdapter, metricsAdapter);
|
|
109
|
-
return {
|
|
110
|
-
privacyPolicy: companionProvider.getCompanionForEntity(TestEntity_1.TestEntity).privacyPolicy,
|
|
111
|
-
entityLoaderFactory,
|
|
112
|
-
entityMutatorFactory,
|
|
113
|
-
metricsAdapter,
|
|
114
|
-
mutationValidators,
|
|
115
|
-
mutationTriggers,
|
|
116
|
-
};
|
|
117
|
-
};
|
|
118
|
-
(0, globals_1.describe)(EntityMutatorFactory_1.EntityMutatorFactory, () => {
|
|
119
|
-
(0, globals_1.describe)('forCreate', () => {
|
|
120
|
-
(0, globals_1.it)('creates entities', async () => {
|
|
121
|
-
const viewerContext = (0, ts_mockito_1.mock)();
|
|
122
|
-
const queryContext = new StubQueryContextProvider_1.StubQueryContextProvider().getQueryContext();
|
|
123
|
-
const id1 = (0, uuid_1.v4)();
|
|
124
|
-
const id2 = (0, uuid_1.v4)();
|
|
125
|
-
const { entityMutatorFactory } = createEntityMutatorFactory([
|
|
126
|
-
{
|
|
127
|
-
customIdField: id1,
|
|
128
|
-
stringField: 'huh',
|
|
129
|
-
testIndexedField: '4',
|
|
130
|
-
intField: 1,
|
|
131
|
-
dateField: new Date(),
|
|
132
|
-
nullableField: null,
|
|
133
|
-
},
|
|
134
|
-
{
|
|
135
|
-
customIdField: id2,
|
|
136
|
-
stringField: 'huh',
|
|
137
|
-
testIndexedField: '5',
|
|
138
|
-
intField: 1,
|
|
139
|
-
dateField: new Date(),
|
|
140
|
-
nullableField: null,
|
|
141
|
-
},
|
|
142
|
-
]);
|
|
143
|
-
const newEntity = await (0, results_1.enforceAsyncResult)(entityMutatorFactory
|
|
144
|
-
.forCreate(viewerContext, queryContext)
|
|
145
|
-
.setField('stringField', 'huh')
|
|
146
|
-
.createAsync());
|
|
147
|
-
(0, globals_1.expect)(newEntity).toBeTruthy();
|
|
148
|
-
});
|
|
149
|
-
(0, globals_1.it)('checks privacy', async () => {
|
|
150
|
-
const viewerContext = (0, ts_mockito_1.mock)();
|
|
151
|
-
const queryContext = new StubQueryContextProvider_1.StubQueryContextProvider().getQueryContext();
|
|
152
|
-
const id1 = (0, uuid_1.v4)();
|
|
153
|
-
const id2 = (0, uuid_1.v4)();
|
|
154
|
-
const { privacyPolicy, entityMutatorFactory } = createEntityMutatorFactory([
|
|
155
|
-
{
|
|
156
|
-
customIdField: id1,
|
|
157
|
-
stringField: 'huh',
|
|
158
|
-
testIndexedField: '4',
|
|
159
|
-
intField: 1,
|
|
160
|
-
dateField: new Date(),
|
|
161
|
-
nullableField: null,
|
|
162
|
-
},
|
|
163
|
-
{
|
|
164
|
-
customIdField: id2,
|
|
165
|
-
stringField: 'huh',
|
|
166
|
-
testIndexedField: '5',
|
|
167
|
-
intField: 1,
|
|
168
|
-
dateField: new Date(),
|
|
169
|
-
nullableField: null,
|
|
170
|
-
},
|
|
171
|
-
]);
|
|
172
|
-
const spiedPrivacyPolicy = (0, ts_mockito_1.spy)(privacyPolicy);
|
|
173
|
-
await (0, results_1.enforceAsyncResult)(entityMutatorFactory
|
|
174
|
-
.forCreate(viewerContext, queryContext)
|
|
175
|
-
.setField('stringField', 'huh')
|
|
176
|
-
.createAsync());
|
|
177
|
-
(0, ts_mockito_1.verify)(spiedPrivacyPolicy.authorizeCreateAsync(viewerContext, (0, ts_mockito_1.anyOfClass)(EntityQueryContext_1.EntityTransactionalQueryContext), (0, ts_mockito_1.deepEqual)({ previousValue: null, cascadingDeleteCause: null }), (0, ts_mockito_1.anyOfClass)(TestEntity_1.TestEntity), (0, ts_mockito_1.anything)())).once();
|
|
178
|
-
});
|
|
179
|
-
(0, globals_1.it)('executes triggers', async () => {
|
|
180
|
-
const viewerContext = (0, ts_mockito_1.mock)();
|
|
181
|
-
const queryContext = new StubQueryContextProvider_1.StubQueryContextProvider().getQueryContext();
|
|
182
|
-
const id1 = (0, uuid_1.v4)();
|
|
183
|
-
const id2 = (0, uuid_1.v4)();
|
|
184
|
-
const { mutationTriggers, entityMutatorFactory } = createEntityMutatorFactory([
|
|
185
|
-
{
|
|
186
|
-
customIdField: id1,
|
|
187
|
-
stringField: 'huh',
|
|
188
|
-
testIndexedField: '4',
|
|
189
|
-
intField: 1,
|
|
190
|
-
dateField: new Date(),
|
|
191
|
-
nullableField: null,
|
|
192
|
-
},
|
|
193
|
-
{
|
|
194
|
-
customIdField: id2,
|
|
195
|
-
stringField: 'huh',
|
|
196
|
-
testIndexedField: '5',
|
|
197
|
-
intField: 1,
|
|
198
|
-
dateField: new Date(),
|
|
199
|
-
nullableField: null,
|
|
200
|
-
},
|
|
201
|
-
]);
|
|
202
|
-
const triggerSpies = setUpMutationTriggerSpies(mutationTriggers);
|
|
203
|
-
await (0, results_1.enforceAsyncResult)(entityMutatorFactory
|
|
204
|
-
.forCreate(viewerContext, queryContext)
|
|
205
|
-
.setField('stringField', 'huh')
|
|
206
|
-
.createAsync());
|
|
207
|
-
verifyTriggerCounts(viewerContext, triggerSpies, {
|
|
208
|
-
beforeCreate: true,
|
|
209
|
-
afterCreate: true,
|
|
210
|
-
beforeUpdate: false,
|
|
211
|
-
afterUpdate: false,
|
|
212
|
-
beforeDelete: false,
|
|
213
|
-
afterDelete: false,
|
|
214
|
-
}, { type: EntityMutationInfo_1.EntityMutationType.CREATE });
|
|
215
|
-
});
|
|
216
|
-
(0, globals_1.it)('executes validators', async () => {
|
|
217
|
-
const viewerContext = (0, ts_mockito_1.mock)();
|
|
218
|
-
const queryContext = new StubQueryContextProvider_1.StubQueryContextProvider().getQueryContext();
|
|
219
|
-
const id1 = (0, uuid_1.v4)();
|
|
220
|
-
const id2 = (0, uuid_1.v4)();
|
|
221
|
-
const { mutationValidators, entityMutatorFactory } = createEntityMutatorFactory([
|
|
222
|
-
{
|
|
223
|
-
customIdField: id1,
|
|
224
|
-
stringField: 'huh',
|
|
225
|
-
testIndexedField: '4',
|
|
226
|
-
intField: 1,
|
|
227
|
-
dateField: new Date(),
|
|
228
|
-
nullableField: null,
|
|
229
|
-
},
|
|
230
|
-
{
|
|
231
|
-
customIdField: id2,
|
|
232
|
-
stringField: 'huh',
|
|
233
|
-
testIndexedField: '5',
|
|
234
|
-
intField: 1,
|
|
235
|
-
dateField: new Date(),
|
|
236
|
-
nullableField: null,
|
|
237
|
-
},
|
|
238
|
-
]);
|
|
239
|
-
const validatorSpies = setUpMutationValidatorSpies(mutationValidators);
|
|
240
|
-
await (0, results_1.enforceAsyncResult)(entityMutatorFactory
|
|
241
|
-
.forCreate(viewerContext, queryContext)
|
|
242
|
-
.setField('stringField', 'huh')
|
|
243
|
-
.createAsync());
|
|
244
|
-
verifyValidatorCounts(viewerContext, validatorSpies, 1, { type: EntityMutationInfo_1.EntityMutationType.CREATE });
|
|
245
|
-
});
|
|
246
|
-
});
|
|
247
|
-
(0, globals_1.describe)('forUpdate', () => {
|
|
248
|
-
(0, globals_1.it)('updates entities', async () => {
|
|
249
|
-
const viewerContext = (0, ts_mockito_1.mock)();
|
|
250
|
-
const privacyPolicyEvaluationContext = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)());
|
|
251
|
-
const queryContext = new StubQueryContextProvider_1.StubQueryContextProvider().getQueryContext();
|
|
252
|
-
const id1 = (0, uuid_1.v4)();
|
|
253
|
-
const id2 = (0, uuid_1.v4)();
|
|
254
|
-
const { entityMutatorFactory, entityLoaderFactory } = createEntityMutatorFactory([
|
|
255
|
-
{
|
|
256
|
-
customIdField: id1,
|
|
257
|
-
stringField: 'huh',
|
|
258
|
-
testIndexedField: '3',
|
|
259
|
-
intField: 3,
|
|
260
|
-
dateField: new Date(),
|
|
261
|
-
nullableField: null,
|
|
262
|
-
},
|
|
263
|
-
{
|
|
264
|
-
customIdField: id2,
|
|
265
|
-
stringField: 'huh',
|
|
266
|
-
testIndexedField: '4',
|
|
267
|
-
intField: 3,
|
|
268
|
-
dateField: new Date(),
|
|
269
|
-
nullableField: null,
|
|
270
|
-
},
|
|
271
|
-
]);
|
|
272
|
-
const existingEntity = await (0, results_1.enforceAsyncResult)(entityLoaderFactory
|
|
273
|
-
.forLoad(viewerContext, queryContext, privacyPolicyEvaluationContext)
|
|
274
|
-
.loadByIDAsync(id2));
|
|
275
|
-
const updatedEntity = await (0, results_1.enforceAsyncResult)(entityMutatorFactory
|
|
276
|
-
.forUpdate(existingEntity, queryContext)
|
|
277
|
-
.setField('stringField', 'huh2')
|
|
278
|
-
.updateAsync());
|
|
279
|
-
(0, globals_1.expect)(updatedEntity).toBeTruthy();
|
|
280
|
-
(0, globals_1.expect)(updatedEntity.getAllFields()).not.toMatchObject(existingEntity.getAllFields());
|
|
281
|
-
(0, globals_1.expect)(updatedEntity.getField('stringField')).toEqual('huh2');
|
|
282
|
-
const reloadedEntity = await (0, results_1.enforceAsyncResult)(entityLoaderFactory
|
|
283
|
-
.forLoad(viewerContext, queryContext, privacyPolicyEvaluationContext)
|
|
284
|
-
.loadByIDAsync(id2));
|
|
285
|
-
(0, globals_1.expect)(reloadedEntity.getAllFields()).toMatchObject(updatedEntity.getAllFields());
|
|
286
|
-
});
|
|
287
|
-
(0, globals_1.it)('checks privacy', async () => {
|
|
288
|
-
const viewerContext = (0, ts_mockito_1.mock)();
|
|
289
|
-
const queryContext = new StubQueryContextProvider_1.StubQueryContextProvider().getQueryContext();
|
|
290
|
-
const id1 = (0, uuid_1.v4)();
|
|
291
|
-
const id2 = (0, uuid_1.v4)();
|
|
292
|
-
const { privacyPolicy, entityMutatorFactory, entityLoaderFactory } = createEntityMutatorFactory([
|
|
293
|
-
{
|
|
294
|
-
customIdField: id1,
|
|
295
|
-
stringField: 'huh',
|
|
296
|
-
testIndexedField: '3',
|
|
297
|
-
intField: 3,
|
|
298
|
-
dateField: new Date(),
|
|
299
|
-
nullableField: null,
|
|
300
|
-
},
|
|
301
|
-
{
|
|
302
|
-
customIdField: id2,
|
|
303
|
-
stringField: 'huh',
|
|
304
|
-
testIndexedField: '4',
|
|
305
|
-
intField: 3,
|
|
306
|
-
dateField: new Date(),
|
|
307
|
-
nullableField: null,
|
|
308
|
-
},
|
|
309
|
-
]);
|
|
310
|
-
const spiedPrivacyPolicy = (0, ts_mockito_1.spy)(privacyPolicy);
|
|
311
|
-
const existingEntity = await (0, results_1.enforceAsyncResult)(entityLoaderFactory
|
|
312
|
-
.forLoad(viewerContext, queryContext, { previousValue: null, cascadingDeleteCause: null })
|
|
313
|
-
.loadByIDAsync(id2));
|
|
314
|
-
await (0, results_1.enforceAsyncResult)(entityMutatorFactory
|
|
315
|
-
.forUpdate(existingEntity, queryContext)
|
|
316
|
-
.setField('stringField', 'huh2')
|
|
317
|
-
.updateAsync());
|
|
318
|
-
(0, ts_mockito_1.verify)(spiedPrivacyPolicy.authorizeUpdateAsync(viewerContext, (0, ts_mockito_1.anyOfClass)(EntityQueryContext_1.EntityTransactionalQueryContext), (0, ts_mockito_1.deepEqual)({ previousValue: existingEntity, cascadingDeleteCause: null }), (0, ts_mockito_1.anyOfClass)(TestEntity_1.TestEntity), (0, ts_mockito_1.anything)())).once();
|
|
319
|
-
(0, ts_mockito_1.verify)(spiedPrivacyPolicy.authorizeReadAsync(viewerContext, (0, ts_mockito_1.anyOfClass)(EntityQueryContext_1.EntityTransactionalQueryContext), (0, ts_mockito_1.deepEqual)({ previousValue: existingEntity, cascadingDeleteCause: null }), (0, ts_mockito_1.anyOfClass)(TestEntity_1.TestEntity), (0, ts_mockito_1.anything)())).once();
|
|
320
|
-
});
|
|
321
|
-
(0, globals_1.it)('executes triggers', async () => {
|
|
322
|
-
const viewerContext = (0, ts_mockito_1.mock)();
|
|
323
|
-
const privacyPolicyEvaluationContext = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)());
|
|
324
|
-
const queryContext = new StubQueryContextProvider_1.StubQueryContextProvider().getQueryContext();
|
|
325
|
-
const id1 = (0, uuid_1.v4)();
|
|
326
|
-
const id2 = (0, uuid_1.v4)();
|
|
327
|
-
const { mutationTriggers, entityMutatorFactory, entityLoaderFactory } = createEntityMutatorFactory([
|
|
328
|
-
{
|
|
329
|
-
customIdField: id1,
|
|
330
|
-
stringField: 'huh',
|
|
331
|
-
testIndexedField: '3',
|
|
332
|
-
intField: 3,
|
|
333
|
-
dateField: new Date(),
|
|
334
|
-
nullableField: null,
|
|
335
|
-
},
|
|
336
|
-
{
|
|
337
|
-
customIdField: id2,
|
|
338
|
-
stringField: 'huh',
|
|
339
|
-
testIndexedField: '4',
|
|
340
|
-
intField: 3,
|
|
341
|
-
dateField: new Date(),
|
|
342
|
-
nullableField: null,
|
|
343
|
-
},
|
|
344
|
-
]);
|
|
345
|
-
const triggerSpies = setUpMutationTriggerSpies(mutationTriggers);
|
|
346
|
-
const existingEntity = await (0, results_1.enforceAsyncResult)(entityLoaderFactory
|
|
347
|
-
.forLoad(viewerContext, queryContext, privacyPolicyEvaluationContext)
|
|
348
|
-
.loadByIDAsync(id2));
|
|
349
|
-
await (0, results_1.enforceAsyncResult)(entityMutatorFactory
|
|
350
|
-
.forUpdate(existingEntity, queryContext)
|
|
351
|
-
.setField('stringField', 'huh2')
|
|
352
|
-
.updateAsync());
|
|
353
|
-
verifyTriggerCounts(viewerContext, triggerSpies, {
|
|
354
|
-
beforeCreate: false,
|
|
355
|
-
afterCreate: false,
|
|
356
|
-
beforeUpdate: true,
|
|
357
|
-
afterUpdate: true,
|
|
358
|
-
beforeDelete: false,
|
|
359
|
-
afterDelete: false,
|
|
360
|
-
}, {
|
|
361
|
-
type: EntityMutationInfo_1.EntityMutationType.UPDATE,
|
|
362
|
-
previousValue: existingEntity,
|
|
363
|
-
cascadingDeleteCause: null,
|
|
364
|
-
});
|
|
365
|
-
});
|
|
366
|
-
(0, globals_1.it)('executes validators', async () => {
|
|
367
|
-
const viewerContext = (0, ts_mockito_1.mock)();
|
|
368
|
-
const privacyPolicyEvaluationContext = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)());
|
|
369
|
-
const queryContext = new StubQueryContextProvider_1.StubQueryContextProvider().getQueryContext();
|
|
370
|
-
const id1 = (0, uuid_1.v4)();
|
|
371
|
-
const id2 = (0, uuid_1.v4)();
|
|
372
|
-
const { mutationValidators, entityMutatorFactory, entityLoaderFactory } = createEntityMutatorFactory([
|
|
373
|
-
{
|
|
374
|
-
customIdField: id1,
|
|
375
|
-
stringField: 'huh',
|
|
376
|
-
testIndexedField: '3',
|
|
377
|
-
intField: 3,
|
|
378
|
-
dateField: new Date(),
|
|
379
|
-
nullableField: null,
|
|
380
|
-
},
|
|
381
|
-
{
|
|
382
|
-
customIdField: id2,
|
|
383
|
-
stringField: 'huh',
|
|
384
|
-
testIndexedField: '4',
|
|
385
|
-
intField: 3,
|
|
386
|
-
dateField: new Date(),
|
|
387
|
-
nullableField: null,
|
|
388
|
-
},
|
|
389
|
-
]);
|
|
390
|
-
const validatorSpies = setUpMutationValidatorSpies(mutationValidators);
|
|
391
|
-
const existingEntity = await (0, results_1.enforceAsyncResult)(entityLoaderFactory
|
|
392
|
-
.forLoad(viewerContext, queryContext, privacyPolicyEvaluationContext)
|
|
393
|
-
.loadByIDAsync(id2));
|
|
394
|
-
await (0, results_1.enforceAsyncResult)(entityMutatorFactory
|
|
395
|
-
.forUpdate(existingEntity, queryContext)
|
|
396
|
-
.setField('stringField', 'huh2')
|
|
397
|
-
.updateAsync());
|
|
398
|
-
verifyValidatorCounts(viewerContext, validatorSpies, 1, {
|
|
399
|
-
type: EntityMutationInfo_1.EntityMutationType.UPDATE,
|
|
400
|
-
previousValue: existingEntity,
|
|
401
|
-
cascadingDeleteCause: null,
|
|
402
|
-
});
|
|
403
|
-
});
|
|
404
|
-
(0, globals_1.it)('throws when id field is updated', async () => {
|
|
405
|
-
const viewerContext = (0, ts_mockito_1.mock)();
|
|
406
|
-
const privacyPolicyEvaluationContext = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)());
|
|
407
|
-
const queryContext = new StubQueryContextProvider_1.StubQueryContextProvider().getQueryContext();
|
|
408
|
-
const id1 = (0, uuid_1.v4)();
|
|
409
|
-
const { entityMutatorFactory, entityLoaderFactory } = createEntityMutatorFactory([
|
|
410
|
-
{
|
|
411
|
-
customIdField: id1,
|
|
412
|
-
stringField: 'huh',
|
|
413
|
-
testIndexedField: '4',
|
|
414
|
-
intField: 3,
|
|
415
|
-
dateField: new Date(),
|
|
416
|
-
nullableField: null,
|
|
417
|
-
},
|
|
418
|
-
]);
|
|
419
|
-
const existingEntity = await (0, results_1.enforceAsyncResult)(entityLoaderFactory
|
|
420
|
-
.forLoad(viewerContext, queryContext, privacyPolicyEvaluationContext)
|
|
421
|
-
.loadByIDAsync(id1));
|
|
422
|
-
await (0, globals_1.expect)((0, results_1.enforceAsyncResult)(entityMutatorFactory
|
|
423
|
-
.forUpdate(existingEntity, queryContext)
|
|
424
|
-
.setField('customIdField', (0, uuid_1.v4)())
|
|
425
|
-
.updateAsync())).rejects.toThrow('id field updates not supported: (entityClass = TestEntity)');
|
|
426
|
-
const reloadedEntity = await (0, results_1.enforceAsyncResult)(entityLoaderFactory
|
|
427
|
-
.forLoad(viewerContext, queryContext, privacyPolicyEvaluationContext)
|
|
428
|
-
.loadByIDAsync(id1));
|
|
429
|
-
(0, globals_1.expect)(reloadedEntity.getAllFields()).toMatchObject(existingEntity.getAllFields());
|
|
430
|
-
});
|
|
431
|
-
});
|
|
432
|
-
(0, globals_1.describe)('forDelete', () => {
|
|
433
|
-
(0, globals_1.it)('deletes entities', async () => {
|
|
434
|
-
const viewerContext = (0, ts_mockito_1.mock)();
|
|
435
|
-
const privacyPolicyEvaluationContext = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)());
|
|
436
|
-
const queryContext = new StubQueryContextProvider_1.StubQueryContextProvider().getQueryContext();
|
|
437
|
-
const id1 = (0, uuid_1.v4)();
|
|
438
|
-
const { entityMutatorFactory, entityLoaderFactory } = createEntityMutatorFactory([
|
|
439
|
-
{
|
|
440
|
-
customIdField: id1,
|
|
441
|
-
stringField: 'huh',
|
|
442
|
-
testIndexedField: '3',
|
|
443
|
-
intField: 3,
|
|
444
|
-
dateField: new Date(),
|
|
445
|
-
nullableField: null,
|
|
446
|
-
},
|
|
447
|
-
]);
|
|
448
|
-
const existingEntity = await (0, results_1.enforceAsyncResult)(entityLoaderFactory
|
|
449
|
-
.forLoad(viewerContext, queryContext, privacyPolicyEvaluationContext)
|
|
450
|
-
.loadByIDAsync(id1));
|
|
451
|
-
(0, globals_1.expect)(existingEntity).toBeTruthy();
|
|
452
|
-
await (0, results_1.enforceAsyncResult)(entityMutatorFactory.forDelete(existingEntity, queryContext).deleteAsync());
|
|
453
|
-
await (0, globals_1.expect)((0, results_1.enforceAsyncResult)(entityLoaderFactory
|
|
454
|
-
.forLoad(viewerContext, queryContext, privacyPolicyEvaluationContext)
|
|
455
|
-
.loadByIDAsync(id1))).rejects.toBeInstanceOf(Error);
|
|
456
|
-
});
|
|
457
|
-
(0, globals_1.it)('checks privacy', async () => {
|
|
458
|
-
const viewerContext = (0, ts_mockito_1.mock)();
|
|
459
|
-
const privacyPolicyEvaluationContext = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)());
|
|
460
|
-
const queryContext = new StubQueryContextProvider_1.StubQueryContextProvider().getQueryContext();
|
|
461
|
-
const id1 = (0, uuid_1.v4)();
|
|
462
|
-
const { privacyPolicy, entityMutatorFactory, entityLoaderFactory } = createEntityMutatorFactory([
|
|
463
|
-
{
|
|
464
|
-
customIdField: id1,
|
|
465
|
-
stringField: 'huh',
|
|
466
|
-
testIndexedField: '3',
|
|
467
|
-
intField: 3,
|
|
468
|
-
dateField: new Date(),
|
|
469
|
-
nullableField: null,
|
|
470
|
-
},
|
|
471
|
-
]);
|
|
472
|
-
const spiedPrivacyPolicy = (0, ts_mockito_1.spy)(privacyPolicy);
|
|
473
|
-
const existingEntity = await (0, results_1.enforceAsyncResult)(entityLoaderFactory
|
|
474
|
-
.forLoad(viewerContext, queryContext, privacyPolicyEvaluationContext)
|
|
475
|
-
.loadByIDAsync(id1));
|
|
476
|
-
await (0, results_1.enforceAsyncResult)(entityMutatorFactory.forDelete(existingEntity, queryContext).deleteAsync());
|
|
477
|
-
(0, ts_mockito_1.verify)(spiedPrivacyPolicy.authorizeDeleteAsync(viewerContext, (0, ts_mockito_1.anyOfClass)(EntityQueryContext_1.EntityTransactionalQueryContext), (0, ts_mockito_1.anything)(), (0, ts_mockito_1.anyOfClass)(TestEntity_1.TestEntity), (0, ts_mockito_1.anything)())).once();
|
|
478
|
-
});
|
|
479
|
-
(0, globals_1.it)('executes triggers', async () => {
|
|
480
|
-
const viewerContext = (0, ts_mockito_1.mock)();
|
|
481
|
-
const privacyPolicyEvaluationContext = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)());
|
|
482
|
-
const queryContext = new StubQueryContextProvider_1.StubQueryContextProvider().getQueryContext();
|
|
483
|
-
const id1 = (0, uuid_1.v4)();
|
|
484
|
-
const { mutationTriggers, entityMutatorFactory, entityLoaderFactory } = createEntityMutatorFactory([
|
|
485
|
-
{
|
|
486
|
-
customIdField: id1,
|
|
487
|
-
stringField: 'huh',
|
|
488
|
-
testIndexedField: '3',
|
|
489
|
-
intField: 3,
|
|
490
|
-
dateField: new Date(),
|
|
491
|
-
nullableField: null,
|
|
492
|
-
},
|
|
493
|
-
]);
|
|
494
|
-
const triggerSpies = setUpMutationTriggerSpies(mutationTriggers);
|
|
495
|
-
const existingEntity = await (0, results_1.enforceAsyncResult)(entityLoaderFactory
|
|
496
|
-
.forLoad(viewerContext, queryContext, privacyPolicyEvaluationContext)
|
|
497
|
-
.loadByIDAsync(id1));
|
|
498
|
-
await (0, results_1.enforceAsyncResult)(entityMutatorFactory.forDelete(existingEntity, queryContext).deleteAsync());
|
|
499
|
-
verifyTriggerCounts(viewerContext, triggerSpies, {
|
|
500
|
-
beforeCreate: false,
|
|
501
|
-
afterCreate: false,
|
|
502
|
-
beforeUpdate: false,
|
|
503
|
-
afterUpdate: false,
|
|
504
|
-
beforeDelete: true,
|
|
505
|
-
afterDelete: true,
|
|
506
|
-
}, { type: EntityMutationInfo_1.EntityMutationType.DELETE, cascadingDeleteCause: null });
|
|
507
|
-
});
|
|
508
|
-
(0, globals_1.it)('does not execute validators', async () => {
|
|
509
|
-
const viewerContext = (0, ts_mockito_1.mock)();
|
|
510
|
-
const privacyPolicyEvaluationContext = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)());
|
|
511
|
-
const queryContext = new StubQueryContextProvider_1.StubQueryContextProvider().getQueryContext();
|
|
512
|
-
const id1 = (0, uuid_1.v4)();
|
|
513
|
-
const { mutationValidators, entityMutatorFactory, entityLoaderFactory } = createEntityMutatorFactory([
|
|
514
|
-
{
|
|
515
|
-
customIdField: id1,
|
|
516
|
-
stringField: 'huh',
|
|
517
|
-
testIndexedField: '3',
|
|
518
|
-
intField: 3,
|
|
519
|
-
dateField: new Date(),
|
|
520
|
-
nullableField: null,
|
|
521
|
-
},
|
|
522
|
-
]);
|
|
523
|
-
const validatorSpies = setUpMutationValidatorSpies(mutationValidators);
|
|
524
|
-
const existingEntity = await (0, results_1.enforceAsyncResult)(entityLoaderFactory
|
|
525
|
-
.forLoad(viewerContext, queryContext, privacyPolicyEvaluationContext)
|
|
526
|
-
.loadByIDAsync(id1));
|
|
527
|
-
await (0, results_1.enforceAsyncResult)(entityMutatorFactory.forDelete(existingEntity, queryContext).deleteAsync());
|
|
528
|
-
verifyValidatorCounts(viewerContext, validatorSpies, 0, {
|
|
529
|
-
type: EntityMutationInfo_1.EntityMutationType.DELETE,
|
|
530
|
-
});
|
|
531
|
-
});
|
|
532
|
-
});
|
|
533
|
-
(0, globals_1.it)('invalidates cache for fields upon create', async () => {
|
|
534
|
-
const viewerContext = (0, ts_mockito_1.mock)();
|
|
535
|
-
const privacyPolicyEvaluationContext = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)());
|
|
536
|
-
const queryContext = new StubQueryContextProvider_1.StubQueryContextProvider().getQueryContext();
|
|
537
|
-
const id1 = (0, uuid_1.v4)();
|
|
538
|
-
const { entityMutatorFactory, entityLoaderFactory } = createEntityMutatorFactory([
|
|
539
|
-
{
|
|
540
|
-
customIdField: id1,
|
|
541
|
-
stringField: 'huh',
|
|
542
|
-
testIndexedField: '3',
|
|
543
|
-
intField: 3,
|
|
544
|
-
dateField: new Date(),
|
|
545
|
-
nullableField: null,
|
|
546
|
-
},
|
|
547
|
-
]);
|
|
548
|
-
const entites1 = await (0, entityUtils_1.enforceResultsAsync)(entityLoaderFactory
|
|
549
|
-
.forLoad(viewerContext, queryContext, privacyPolicyEvaluationContext)
|
|
550
|
-
.loadManyByFieldEqualingAsync('stringField', 'huh'));
|
|
551
|
-
(0, globals_1.expect)(entites1).toHaveLength(1);
|
|
552
|
-
const entitiesLoadedByComposite1 = await (0, entityUtils_1.enforceResultsAsync)(entityLoaderFactory
|
|
553
|
-
.forLoad(viewerContext, queryContext, privacyPolicyEvaluationContext)
|
|
554
|
-
.loadManyByCompositeFieldEqualingAsync(['stringField', 'intField'], {
|
|
555
|
-
stringField: 'huh',
|
|
556
|
-
intField: 3,
|
|
557
|
-
}));
|
|
558
|
-
(0, globals_1.expect)(entitiesLoadedByComposite1).toHaveLength(1);
|
|
559
|
-
await (0, results_1.enforceAsyncResult)(entityMutatorFactory
|
|
560
|
-
.forCreate(viewerContext, queryContext)
|
|
561
|
-
.setField('stringField', 'huh')
|
|
562
|
-
.setField('intField', 3)
|
|
563
|
-
.createAsync());
|
|
564
|
-
const entities2 = await (0, entityUtils_1.enforceResultsAsync)(entityLoaderFactory
|
|
565
|
-
.forLoad(viewerContext, queryContext, privacyPolicyEvaluationContext)
|
|
566
|
-
.loadManyByFieldEqualingAsync('stringField', 'huh'));
|
|
567
|
-
(0, globals_1.expect)(entities2).toHaveLength(2);
|
|
568
|
-
const entitiesLoadedByComposite2 = await (0, entityUtils_1.enforceResultsAsync)(entityLoaderFactory
|
|
569
|
-
.forLoad(viewerContext, queryContext, privacyPolicyEvaluationContext)
|
|
570
|
-
.loadManyByCompositeFieldEqualingAsync(['stringField', 'intField'], {
|
|
571
|
-
stringField: 'huh',
|
|
572
|
-
intField: 3,
|
|
573
|
-
}));
|
|
574
|
-
(0, globals_1.expect)(entitiesLoadedByComposite2).toHaveLength(2);
|
|
575
|
-
});
|
|
576
|
-
(0, globals_1.it)('throws error when field not valid', async () => {
|
|
577
|
-
const viewerContext = (0, ts_mockito_1.mock)();
|
|
578
|
-
const queryContext = new StubQueryContextProvider_1.StubQueryContextProvider().getQueryContext();
|
|
579
|
-
const id1 = (0, uuid_1.v4)();
|
|
580
|
-
const { entityMutatorFactory } = createEntityMutatorFactory([
|
|
581
|
-
{
|
|
582
|
-
customIdField: id1,
|
|
583
|
-
stringField: 'huh',
|
|
584
|
-
testIndexedField: '3',
|
|
585
|
-
intField: 3,
|
|
586
|
-
dateField: new Date(),
|
|
587
|
-
nullableField: null,
|
|
588
|
-
},
|
|
589
|
-
]);
|
|
590
|
-
await (0, globals_1.expect)(entityMutatorFactory
|
|
591
|
-
.forCreate(viewerContext, queryContext)
|
|
592
|
-
.setField('stringField', 10)
|
|
593
|
-
.createAsync()).rejects.toThrow('Entity field not valid: TestEntity (stringField = 10)');
|
|
594
|
-
const createdEntity = await (0, results_1.enforceAsyncResult)(entityMutatorFactory
|
|
595
|
-
.forCreate(viewerContext, queryContext)
|
|
596
|
-
.setField('stringField', 'hello')
|
|
597
|
-
.createAsync());
|
|
598
|
-
await (0, globals_1.expect)(entityMutatorFactory
|
|
599
|
-
.forUpdate(createdEntity, queryContext)
|
|
600
|
-
.setField('stringField', 10)
|
|
601
|
-
.updateAsync()).rejects.toThrow('Entity field not valid: TestEntity (stringField = 10)');
|
|
602
|
-
});
|
|
603
|
-
(0, globals_1.it)('returns error result when not authorized to create', async () => {
|
|
604
|
-
const entityCompanionProvider = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)(EntityCompanionProvider_1.EntityCompanionProvider));
|
|
605
|
-
const viewerContext = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)(ViewerContext_1.ViewerContext));
|
|
606
|
-
const queryContext = new StubQueryContextProvider_1.StubQueryContextProvider().getQueryContext();
|
|
607
|
-
const privacyPolicyMock = (0, ts_mockito_1.mock)(SimpleTestEntity_1.SimpleTestEntityPrivacyPolicy);
|
|
608
|
-
const databaseAdapter = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)());
|
|
609
|
-
const metricsAdapter = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)());
|
|
610
|
-
const id1 = (0, uuid_1.v4)();
|
|
611
|
-
const fakeEntity = new SimpleTestEntity_1.SimpleTestEntity({
|
|
612
|
-
viewerContext,
|
|
613
|
-
id: id1,
|
|
614
|
-
selectedFields: {
|
|
615
|
-
id: id1,
|
|
616
|
-
},
|
|
617
|
-
databaseFields: {
|
|
618
|
-
id: id1,
|
|
619
|
-
},
|
|
620
|
-
});
|
|
621
|
-
const entityLoaderMock = (0, ts_mockito_1.mock)(AuthorizationResultBasedEntityLoader_1.AuthorizationResultBasedEntityLoader);
|
|
622
|
-
const entityLoaderUtilsMock = (0, ts_mockito_1.mock)(EntityLoaderUtils_1.EntityLoaderUtils);
|
|
623
|
-
(0, ts_mockito_1.when)(entityLoaderUtilsMock.constructEntity((0, ts_mockito_1.anything)())).thenReturn(fakeEntity);
|
|
624
|
-
(0, ts_mockito_1.when)(entityLoaderMock.utils).thenReturn((0, ts_mockito_1.instance)(entityLoaderUtilsMock));
|
|
625
|
-
const entityLoader = (0, ts_mockito_1.instance)(entityLoaderMock);
|
|
626
|
-
const entityLoaderFactoryMock = (0, ts_mockito_1.mock)(EntityLoaderFactory_1.EntityLoaderFactory);
|
|
627
|
-
(0, ts_mockito_1.when)(entityLoaderFactoryMock.forLoad(viewerContext, (0, ts_mockito_1.anyOfClass)(EntityQueryContext_1.EntityTransactionalQueryContext), (0, ts_mockito_1.anything)())).thenReturn(entityLoader);
|
|
628
|
-
const entityLoaderFactory = (0, ts_mockito_1.instance)(entityLoaderFactoryMock);
|
|
629
|
-
const rejectionError = new Error();
|
|
630
|
-
(0, ts_mockito_1.when)(privacyPolicyMock.authorizeCreateAsync(viewerContext, (0, ts_mockito_1.anyOfClass)(EntityQueryContext_1.EntityTransactionalQueryContext), (0, ts_mockito_1.anything)(), (0, ts_mockito_1.anyOfClass)(SimpleTestEntity_1.SimpleTestEntity), (0, ts_mockito_1.anything)())).thenReject(rejectionError);
|
|
631
|
-
(0, ts_mockito_1.when)(privacyPolicyMock.authorizeUpdateAsync(viewerContext, (0, ts_mockito_1.anyOfClass)(EntityQueryContext_1.EntityTransactionalQueryContext), (0, ts_mockito_1.anything)(), (0, ts_mockito_1.anyOfClass)(SimpleTestEntity_1.SimpleTestEntity), (0, ts_mockito_1.anything)())).thenReject(rejectionError);
|
|
632
|
-
(0, ts_mockito_1.when)(privacyPolicyMock.authorizeDeleteAsync(viewerContext, (0, ts_mockito_1.anyOfClass)(EntityQueryContext_1.EntityTransactionalQueryContext), (0, ts_mockito_1.anything)(), (0, ts_mockito_1.anyOfClass)(SimpleTestEntity_1.SimpleTestEntity), (0, ts_mockito_1.anything)())).thenReject(rejectionError);
|
|
633
|
-
const entityMutatorFactory = new EntityMutatorFactory_1.EntityMutatorFactory(entityCompanionProvider, SimpleTestEntity_1.simpleTestEntityConfiguration, SimpleTestEntity_1.SimpleTestEntity, (0, ts_mockito_1.instance)(privacyPolicyMock), [], {}, entityLoaderFactory, databaseAdapter, metricsAdapter);
|
|
634
|
-
const entityCreateResult = await entityMutatorFactory
|
|
635
|
-
.forCreate(viewerContext, queryContext)
|
|
636
|
-
.createAsync();
|
|
637
|
-
(0, globals_1.expect)(entityCreateResult.ok).toBe(false);
|
|
638
|
-
(0, globals_1.expect)(entityCreateResult.reason).toEqual(rejectionError);
|
|
639
|
-
(0, globals_1.expect)(entityCreateResult.value).toBe(undefined);
|
|
640
|
-
const entityUpdateResult = await entityMutatorFactory
|
|
641
|
-
.forUpdate(fakeEntity, queryContext)
|
|
642
|
-
.updateAsync();
|
|
643
|
-
(0, globals_1.expect)(entityUpdateResult.ok).toBe(false);
|
|
644
|
-
(0, globals_1.expect)(entityUpdateResult.reason).toEqual(rejectionError);
|
|
645
|
-
(0, globals_1.expect)(entityUpdateResult.value).toBe(undefined);
|
|
646
|
-
const entityDeleteResult = await entityMutatorFactory
|
|
647
|
-
.forDelete(fakeEntity, queryContext)
|
|
648
|
-
.deleteAsync();
|
|
649
|
-
(0, globals_1.expect)(entityDeleteResult.ok).toBe(false);
|
|
650
|
-
(0, globals_1.expect)(entityDeleteResult.reason).toEqual(rejectionError);
|
|
651
|
-
(0, globals_1.expect)(entityDeleteResult.value).toBe(undefined);
|
|
652
|
-
});
|
|
653
|
-
(0, globals_1.it)('throws error when db adapter throws', async () => {
|
|
654
|
-
const entityCompanionProviderMock = (0, ts_mockito_1.mock)(EntityCompanionProvider_1.EntityCompanionProvider);
|
|
655
|
-
(0, ts_mockito_1.when)(entityCompanionProviderMock.getCompanionForEntity(SimpleTestEntity_1.SimpleTestEntity)).thenReturn({
|
|
656
|
-
entityCompanionDefinition: SimpleTestEntity_1.SimpleTestEntity.defineCompanionDefinition(),
|
|
657
|
-
});
|
|
658
|
-
const entityCompanionProvider = (0, ts_mockito_1.instance)(entityCompanionProviderMock);
|
|
659
|
-
const viewerContext = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)(ViewerContext_1.ViewerContext));
|
|
660
|
-
const queryContext = new StubQueryContextProvider_1.StubQueryContextProvider().getQueryContext();
|
|
661
|
-
const privacyPolicy = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)(SimpleTestEntity_1.SimpleTestEntityPrivacyPolicy));
|
|
662
|
-
const databaseAdapterMock = (0, ts_mockito_1.mock)();
|
|
663
|
-
const metricsAdapter = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)());
|
|
664
|
-
const id1 = (0, uuid_1.v4)();
|
|
665
|
-
const fakeEntity = new SimpleTestEntity_1.SimpleTestEntity({
|
|
666
|
-
viewerContext,
|
|
667
|
-
id: id1,
|
|
668
|
-
selectedFields: {
|
|
669
|
-
id: id1,
|
|
670
|
-
},
|
|
671
|
-
databaseFields: {
|
|
672
|
-
id: id1,
|
|
673
|
-
},
|
|
674
|
-
});
|
|
675
|
-
const entityLoaderMock = (0, ts_mockito_1.mock)(AuthorizationResultBasedEntityLoader_1.AuthorizationResultBasedEntityLoader);
|
|
676
|
-
const entityLoaderUtilsMock = (0, ts_mockito_1.mock)(EntityLoaderUtils_1.EntityLoaderUtils);
|
|
677
|
-
(0, ts_mockito_1.when)(entityLoaderUtilsMock.constructEntity((0, ts_mockito_1.anything)())).thenReturn(fakeEntity);
|
|
678
|
-
(0, ts_mockito_1.when)(entityLoaderMock.utils).thenReturn((0, ts_mockito_1.instance)(entityLoaderUtilsMock));
|
|
679
|
-
const entityLoader = (0, ts_mockito_1.instance)(entityLoaderMock);
|
|
680
|
-
const entityLoaderFactoryMock = (0, ts_mockito_1.mock)(EntityLoaderFactory_1.EntityLoaderFactory);
|
|
681
|
-
(0, ts_mockito_1.when)(entityLoaderFactoryMock.forLoad(viewerContext, (0, ts_mockito_1.anyOfClass)(EntityQueryContext_1.EntityTransactionalQueryContext), (0, ts_mockito_1.anything)())).thenReturn(entityLoader);
|
|
682
|
-
const entityLoaderFactory = (0, ts_mockito_1.instance)(entityLoaderFactoryMock);
|
|
683
|
-
const rejectionError = new Error();
|
|
684
|
-
(0, ts_mockito_1.when)(databaseAdapterMock.insertAsync((0, ts_mockito_1.anyOfClass)(EntityQueryContext_1.EntityTransactionalQueryContext), (0, ts_mockito_1.anything)())).thenReject(rejectionError);
|
|
685
|
-
(0, ts_mockito_1.when)(databaseAdapterMock.updateAsync((0, ts_mockito_1.anyOfClass)(EntityQueryContext_1.EntityTransactionalQueryContext), (0, ts_mockito_1.anything)(), (0, ts_mockito_1.anything)(), (0, ts_mockito_1.anything)())).thenReject(rejectionError);
|
|
686
|
-
(0, ts_mockito_1.when)(databaseAdapterMock.deleteAsync((0, ts_mockito_1.anyOfClass)(EntityQueryContext_1.EntityTransactionalQueryContext), (0, ts_mockito_1.anything)(), (0, ts_mockito_1.anything)())).thenReject(rejectionError);
|
|
687
|
-
const entityMutatorFactory = new EntityMutatorFactory_1.EntityMutatorFactory(entityCompanionProvider, SimpleTestEntity_1.simpleTestEntityConfiguration, SimpleTestEntity_1.SimpleTestEntity, privacyPolicy, [], {}, entityLoaderFactory, (0, ts_mockito_1.instance)(databaseAdapterMock), metricsAdapter);
|
|
688
|
-
await (0, globals_1.expect)(entityMutatorFactory.forCreate(viewerContext, queryContext).createAsync()).rejects.toEqual(rejectionError);
|
|
689
|
-
await (0, globals_1.expect)(entityMutatorFactory.forUpdate(fakeEntity, queryContext).updateAsync()).rejects.toEqual(rejectionError);
|
|
690
|
-
await (0, globals_1.expect)(entityMutatorFactory.forDelete(fakeEntity, queryContext).deleteAsync()).rejects.toEqual(rejectionError);
|
|
691
|
-
});
|
|
692
|
-
(0, globals_1.it)('records metrics appropriately', async () => {
|
|
693
|
-
const viewerContext = (0, ts_mockito_1.mock)();
|
|
694
|
-
const queryContext = new StubQueryContextProvider_1.StubQueryContextProvider().getQueryContext();
|
|
695
|
-
const { entityMutatorFactory, metricsAdapter } = createEntityMutatorFactory([]);
|
|
696
|
-
const spiedMetricsAdapter = (0, ts_mockito_1.spy)(metricsAdapter);
|
|
697
|
-
const newEntity = await (0, results_1.enforceAsyncResult)(entityMutatorFactory
|
|
698
|
-
.forCreate(viewerContext, queryContext)
|
|
699
|
-
.setField('stringField', 'huh')
|
|
700
|
-
.createAsync());
|
|
701
|
-
await (0, results_1.enforceAsyncResult)(entityMutatorFactory
|
|
702
|
-
.forUpdate(newEntity, queryContext)
|
|
703
|
-
.setField('stringField', 'wat')
|
|
704
|
-
.updateAsync());
|
|
705
|
-
await (0, results_1.enforceAsyncResult)(entityMutatorFactory.forDelete(newEntity, queryContext).deleteAsync());
|
|
706
|
-
(0, ts_mockito_1.verify)(spiedMetricsAdapter.logMutatorMutationEvent((0, ts_mockito_1.objectContaining)({
|
|
707
|
-
type: IEntityMetricsAdapter_1.EntityMetricsMutationType.CREATE,
|
|
708
|
-
entityClassName: TestEntity_1.TestEntity.name,
|
|
709
|
-
}))).once();
|
|
710
|
-
(0, ts_mockito_1.verify)(spiedMetricsAdapter.logMutatorMutationEvent((0, ts_mockito_1.objectContaining)({
|
|
711
|
-
type: IEntityMetricsAdapter_1.EntityMetricsMutationType.UPDATE,
|
|
712
|
-
entityClassName: TestEntity_1.TestEntity.name,
|
|
713
|
-
}))).once();
|
|
714
|
-
(0, ts_mockito_1.verify)(spiedMetricsAdapter.logMutatorMutationEvent((0, ts_mockito_1.objectContaining)({
|
|
715
|
-
type: IEntityMetricsAdapter_1.EntityMetricsMutationType.DELETE,
|
|
716
|
-
entityClassName: TestEntity_1.TestEntity.name,
|
|
717
|
-
}))).once();
|
|
718
|
-
(0, ts_mockito_1.verify)(spiedMetricsAdapter.logMutatorMutationEvent((0, ts_mockito_1.anything)())).thrice();
|
|
719
|
-
});
|
|
720
|
-
});
|
|
721
|
-
//# sourceMappingURL=EntityMutator-test.js.map
|