@expo/entity 0.39.0 → 0.40.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/AuthorizationResultBasedEntityAssociationLoader.d.ts +99 -0
- package/build/AuthorizationResultBasedEntityAssociationLoader.js +124 -0
- package/build/AuthorizationResultBasedEntityAssociationLoader.js.map +1 -0
- package/build/AuthorizationResultBasedEntityLoader.d.ts +1 -1
- package/build/AuthorizationResultBasedEntityLoader.js.map +1 -1
- package/build/{EntityMutator.d.ts → AuthorizationResultBasedEntityMutator.d.ts} +5 -17
- package/build/{EntityMutator.js → AuthorizationResultBasedEntityMutator.js} +22 -48
- package/build/AuthorizationResultBasedEntityMutator.js.map +1 -0
- package/build/EnforcingEntityAssociationLoader.d.ts +79 -0
- package/build/EnforcingEntityAssociationLoader.js +62 -0
- package/build/EnforcingEntityAssociationLoader.js.map +1 -0
- package/build/EnforcingEntityCreator.d.ts +24 -0
- package/build/EnforcingEntityCreator.js +32 -0
- package/build/EnforcingEntityCreator.js.map +1 -0
- package/build/EnforcingEntityDeleter.d.ts +17 -0
- package/build/EnforcingEntityDeleter.js +22 -0
- package/build/EnforcingEntityDeleter.js.map +1 -0
- package/build/EnforcingEntityUpdater.d.ts +24 -0
- package/build/EnforcingEntityUpdater.js +32 -0
- package/build/EnforcingEntityUpdater.js.map +1 -0
- package/build/Entity.d.ts +8 -12
- package/build/Entity.js +9 -34
- package/build/Entity.js.map +1 -1
- package/build/EntityAssociationLoader.d.ts +12 -91
- package/build/EntityAssociationLoader.js +20 -126
- package/build/EntityAssociationLoader.js.map +1 -1
- package/build/EntityCreator.d.ts +27 -0
- package/build/EntityCreator.js +39 -0
- package/build/EntityCreator.js.map +1 -0
- package/build/EntityDeleter.d.ts +27 -0
- package/build/EntityDeleter.js +40 -0
- package/build/EntityDeleter.js.map +1 -0
- package/build/EntityLoader.d.ts +4 -14
- package/build/EntityLoader.js +7 -20
- package/build/EntityLoader.js.map +1 -1
- package/build/EntityLoaderFactory.d.ts +2 -2
- package/build/EntityLoaderFactory.js +4 -2
- package/build/EntityLoaderFactory.js.map +1 -1
- package/build/EntityMutatorFactory.d.ts +4 -4
- package/build/EntityMutatorFactory.js +4 -4
- package/build/EntityMutatorFactory.js.map +1 -1
- package/build/EntitySecondaryCacheLoader.d.ts +3 -3
- package/build/EntitySecondaryCacheLoader.js +1 -3
- package/build/EntitySecondaryCacheLoader.js.map +1 -1
- package/build/EntityUpdater.d.ts +27 -0
- package/build/EntityUpdater.js +40 -0
- package/build/EntityUpdater.js.map +1 -0
- package/build/ReadonlyEntity.d.ts +2 -2
- package/build/ReadonlyEntity.js +4 -6
- package/build/ReadonlyEntity.js.map +1 -1
- package/build/ViewerScopedEntityLoaderFactory.d.ts +2 -2
- package/build/ViewerScopedEntityLoaderFactory.js.map +1 -1
- package/build/ViewerScopedEntityMutatorFactory.d.ts +4 -4
- package/build/ViewerScopedEntityMutatorFactory.js.map +1 -1
- package/build/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.d.ts +1 -0
- package/build/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.js +273 -0
- package/build/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.js.map +1 -0
- package/build/__tests__/{EntityLoader-constructor-test.js → AuthorizationResultBasedEntityLoader-constructor-test.js} +10 -10
- package/build/__tests__/AuthorizationResultBasedEntityLoader-constructor-test.js.map +1 -0
- package/build/__tests__/AuthorizationResultBasedEntityLoader-test.d.ts +1 -0
- package/build/__tests__/AuthorizationResultBasedEntityLoader-test.js +401 -0
- package/build/__tests__/AuthorizationResultBasedEntityLoader-test.js.map +1 -0
- package/build/__tests__/EnforcingEntityAssociationLoader-test.d.ts +1 -0
- package/build/__tests__/EnforcingEntityAssociationLoader-test.js +115 -0
- package/build/__tests__/EnforcingEntityAssociationLoader-test.js.map +1 -0
- package/build/__tests__/Entity-test.js +23 -5
- package/build/__tests__/Entity-test.js.map +1 -1
- package/build/__tests__/EntityAssociationLoader-test.js +14 -184
- package/build/__tests__/EntityAssociationLoader-test.js.map +1 -1
- package/build/__tests__/EntityCommonUseCases-test.js +34 -12
- package/build/__tests__/EntityCommonUseCases-test.js.map +1 -1
- package/build/__tests__/EntityCompanion-test.js +17 -7
- package/build/__tests__/EntityCompanion-test.js.map +1 -1
- package/build/__tests__/EntityEdges-test.js +41 -23
- package/build/__tests__/EntityEdges-test.js.map +1 -1
- package/build/__tests__/EntityLoader-test.js +22 -386
- package/build/__tests__/EntityLoader-test.js.map +1 -1
- package/build/__tests__/EntityMutator-MutationCacheConsistency-test.js +4 -3
- package/build/__tests__/EntityMutator-MutationCacheConsistency-test.js.map +1 -1
- package/build/__tests__/EntityMutator-test.js +67 -70
- package/build/__tests__/EntityMutator-test.js.map +1 -1
- package/build/__tests__/EntityPrivacyPolicy-test.js +17 -7
- package/build/__tests__/EntityPrivacyPolicy-test.js.map +1 -1
- package/build/__tests__/EntitySecondaryCacheLoader-test.js +7 -7
- package/build/__tests__/EntitySecondaryCacheLoader-test.js.map +1 -1
- package/build/__tests__/EntitySelfReferentialEdges-test.js +36 -24
- package/build/__tests__/EntitySelfReferentialEdges-test.js.map +1 -1
- package/build/__tests__/ReadonlyEntity-test.js +1 -1
- package/build/__tests__/ReadonlyEntity-test.js.map +1 -1
- package/build/__tests__/cases/TwoEntitySameTableDisjointRows-test.js +4 -2
- package/build/__tests__/cases/TwoEntitySameTableDisjointRows-test.js.map +1 -1
- package/build/__tests__/cases/TwoEntitySameTableOverlappingRows-test.js +7 -4
- package/build/__tests__/cases/TwoEntitySameTableOverlappingRows-test.js.map +1 -1
- package/build/errors/EntityCacheAdapterError.js +17 -7
- package/build/errors/EntityCacheAdapterError.js.map +1 -1
- package/build/errors/EntityDatabaseAdapterError.js +17 -7
- package/build/errors/EntityDatabaseAdapterError.js.map +1 -1
- package/build/errors/EntityInvalidFieldValueError.js +17 -7
- package/build/errors/EntityInvalidFieldValueError.js.map +1 -1
- package/build/errors/EntityNotAuthorizedError.js +17 -7
- package/build/errors/EntityNotAuthorizedError.js.map +1 -1
- package/build/errors/EntityNotFoundError.js +17 -7
- package/build/errors/EntityNotFoundError.js.map +1 -1
- package/build/index.d.ts +19 -11
- package/build/index.js +24 -7
- package/build/index.js.map +1 -1
- package/build/internal/__tests__/EntityDataManager-test.js +42 -32
- package/build/internal/__tests__/EntityDataManager-test.js.map +1 -1
- package/build/internal/__tests__/ReadThroughEntityCache-test.js +17 -7
- package/build/internal/__tests__/ReadThroughEntityCache-test.js.map +1 -1
- package/build/rules/AlwaysAllowPrivacyPolicyRule.js +17 -7
- package/build/rules/AlwaysAllowPrivacyPolicyRule.js.map +1 -1
- package/build/rules/AlwaysDenyPrivacyPolicyRule.js +17 -7
- package/build/rules/AlwaysDenyPrivacyPolicyRule.js.map +1 -1
- package/build/rules/AlwaysSkipPrivacyPolicyRule.js +17 -7
- package/build/rules/AlwaysSkipPrivacyPolicyRule.js.map +1 -1
- package/build/utils/EntityPrivacyUtils.js +4 -8
- package/build/utils/EntityPrivacyUtils.js.map +1 -1
- package/build/utils/__tests__/EntityPrivacyUtils-test.js +72 -28
- package/build/utils/__tests__/EntityPrivacyUtils-test.js.map +1 -1
- package/build/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.js +8 -5
- package/build/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.js.map +1 -1
- package/build/utils/testing/StubDatabaseAdapter.js +17 -7
- package/build/utils/testing/StubDatabaseAdapter.js.map +1 -1
- package/build/utils/testing/StubQueryContextProvider.d.ts +1 -3
- package/build/utils/testing/StubQueryContextProvider.js +1 -3
- package/build/utils/testing/StubQueryContextProvider.js.map +1 -1
- package/build/utils/testing/createUnitTestEntityCompanionProvider.js +2 -1
- package/build/utils/testing/createUnitTestEntityCompanionProvider.js.map +1 -1
- package/package.json +19 -3
- package/src/AuthorizationResultBasedEntityAssociationLoader.ts +492 -0
- package/src/AuthorizationResultBasedEntityLoader.ts +1 -1
- package/src/{EntityMutator.ts → AuthorizationResultBasedEntityMutator.ts} +62 -58
- package/src/EnforcingEntityAssociationLoader.ts +390 -0
- package/src/EnforcingEntityCreator.ts +55 -0
- package/src/EnforcingEntityDeleter.ts +44 -0
- package/src/EnforcingEntityUpdater.ts +55 -0
- package/src/Entity.ts +20 -65
- package/src/EntityAssociationLoader.ts +38 -495
- package/src/EntityCreator.ts +73 -0
- package/src/EntityDeleter.ts +73 -0
- package/src/EntityLoader.ts +10 -49
- package/src/EntityLoaderFactory.ts +20 -3
- package/src/EntityMutatorFactory.ts +32 -7
- package/src/EntitySecondaryCacheLoader.ts +5 -7
- package/src/EntityUpdater.ts +73 -0
- package/src/ReadonlyEntity.ts +14 -13
- package/src/ViewerScopedEntityLoaderFactory.ts +9 -2
- package/src/ViewerScopedEntityMutatorFactory.ts +29 -4
- package/src/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.ts +354 -0
- package/src/__tests__/{EntityLoader-constructor-test.ts → AuthorizationResultBasedEntityLoader-constructor-test.ts} +16 -9
- package/src/__tests__/AuthorizationResultBasedEntityLoader-test.ts +730 -0
- package/src/__tests__/EnforcingEntityAssociationLoader-test.ts +253 -0
- package/src/__tests__/Entity-test.ts +24 -5
- package/src/__tests__/EntityAssociationLoader-test.ts +16 -259
- package/src/__tests__/EntityCommonUseCases-test.ts +19 -7
- package/src/__tests__/EntityEdges-test.ts +24 -16
- package/src/__tests__/EntityLoader-test.ts +25 -675
- package/src/__tests__/EntityMutator-MutationCacheConsistency-test.ts +4 -3
- package/src/__tests__/EntityMutator-test.ts +116 -103
- package/src/__tests__/EntitySecondaryCacheLoader-test.ts +7 -7
- package/src/__tests__/EntitySelfReferentialEdges-test.ts +36 -24
- package/src/__tests__/ReadonlyEntity-test.ts +1 -1
- package/src/__tests__/cases/TwoEntitySameTableDisjointRows-test.ts +4 -2
- package/src/__tests__/cases/TwoEntitySameTableOverlappingRows-test.ts +7 -4
- package/src/index.ts +19 -11
- package/src/internal/__tests__/EntityDataManager-test.ts +25 -25
- package/src/utils/EntityPrivacyUtils.ts +10 -13
- package/src/utils/__tests__/EntityPrivacyUtils-test.ts +55 -29
- package/src/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.ts +8 -5
- package/src/utils/testing/StubQueryContextProvider.ts +1 -3
- package/src/utils/testing/createUnitTestEntityCompanionProvider.ts +3 -1
- package/build/EntityMutator.js.map +0 -1
- package/build/__tests__/EntityLoader-constructor-test.js.map +0 -1
- /package/build/__tests__/{EntityLoader-constructor-test.d.ts → AuthorizationResultBasedEntityLoader-constructor-test.d.ts} +0 -0
|
@@ -4,20 +4,22 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const Entity_1 = __importDefault(require("../Entity"));
|
|
7
|
-
const
|
|
7
|
+
const EntityCreator_1 = __importDefault(require("../EntityCreator"));
|
|
8
|
+
const EntityDeleter_1 = __importDefault(require("../EntityDeleter"));
|
|
9
|
+
const EntityUpdater_1 = __importDefault(require("../EntityUpdater"));
|
|
8
10
|
const ViewerContext_1 = __importDefault(require("../ViewerContext"));
|
|
9
11
|
const SimpleTestEntity_1 = __importDefault(require("../testfixtures/SimpleTestEntity"));
|
|
10
12
|
const createUnitTestEntityCompanionProvider_1 = require("../utils/testing/createUnitTestEntityCompanionProvider");
|
|
11
13
|
describe(Entity_1.default, () => {
|
|
12
14
|
describe('creator', () => {
|
|
13
|
-
it('creates a new
|
|
15
|
+
it('creates a new EntityCreator', () => {
|
|
14
16
|
const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
|
|
15
17
|
const viewerContext = new ViewerContext_1.default(companionProvider);
|
|
16
|
-
expect(SimpleTestEntity_1.default.creator(viewerContext)).toBeInstanceOf(
|
|
18
|
+
expect(SimpleTestEntity_1.default.creator(viewerContext)).toBeInstanceOf(EntityCreator_1.default);
|
|
17
19
|
});
|
|
18
20
|
});
|
|
19
21
|
describe('updater', () => {
|
|
20
|
-
it('creates a new
|
|
22
|
+
it('creates a new EntityUpdater', () => {
|
|
21
23
|
const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
|
|
22
24
|
const viewerContext = new ViewerContext_1.default(companionProvider);
|
|
23
25
|
const data = {
|
|
@@ -29,7 +31,23 @@ describe(Entity_1.default, () => {
|
|
|
29
31
|
databaseFields: data,
|
|
30
32
|
selectedFields: data,
|
|
31
33
|
});
|
|
32
|
-
expect(SimpleTestEntity_1.default.updater(testEntity)).toBeInstanceOf(
|
|
34
|
+
expect(SimpleTestEntity_1.default.updater(testEntity)).toBeInstanceOf(EntityUpdater_1.default);
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
describe('deleter', () => {
|
|
38
|
+
it('creates a new EntityDeleter', () => {
|
|
39
|
+
const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
|
|
40
|
+
const viewerContext = new ViewerContext_1.default(companionProvider);
|
|
41
|
+
const data = {
|
|
42
|
+
id: 'what',
|
|
43
|
+
};
|
|
44
|
+
const testEntity = new SimpleTestEntity_1.default({
|
|
45
|
+
viewerContext,
|
|
46
|
+
id: 'what',
|
|
47
|
+
databaseFields: data,
|
|
48
|
+
selectedFields: data,
|
|
49
|
+
});
|
|
50
|
+
expect(SimpleTestEntity_1.default.deleter(testEntity)).toBeInstanceOf(EntityDeleter_1.default);
|
|
33
51
|
});
|
|
34
52
|
});
|
|
35
53
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Entity-test.js","sourceRoot":"","sources":["../../src/__tests__/Entity-test.ts"],"names":[],"mappings":";;;;;AAAA,uDAA+B;AAC/B,
|
|
1
|
+
{"version":3,"file":"Entity-test.js","sourceRoot":"","sources":["../../src/__tests__/Entity-test.ts"],"names":[],"mappings":";;;;;AAAA,uDAA+B;AAC/B,qEAA6C;AAC7C,qEAA6C;AAC7C,qEAA6C;AAC7C,qEAA6C;AAC7C,wFAAgE;AAChE,kHAA+G;AAE/G,QAAQ,CAAC,gBAAM,EAAE,GAAG,EAAE;IACpB,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACvB,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;YACrC,MAAM,iBAAiB,GAAG,IAAA,6EAAqC,GAAE,CAAC;YAClE,MAAM,aAAa,GAAG,IAAI,uBAAa,CAAC,iBAAiB,CAAC,CAAC;YAC3D,MAAM,CAAC,0BAAgB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,uBAAa,CAAC,CAAC;QAChF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACvB,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;YACrC,MAAM,iBAAiB,GAAG,IAAA,6EAAqC,GAAE,CAAC;YAClE,MAAM,aAAa,GAAG,IAAI,uBAAa,CAAC,iBAAiB,CAAC,CAAC;YAC3D,MAAM,IAAI,GAAG;gBACX,EAAE,EAAE,MAAM;aACX,CAAC;YACF,MAAM,UAAU,GAAG,IAAI,0BAAgB,CAAC;gBACtC,aAAa;gBACb,EAAE,EAAE,MAAM;gBACV,cAAc,EAAE,IAAI;gBACpB,cAAc,EAAE,IAAI;aACrB,CAAC,CAAC;YACH,MAAM,CAAC,0BAAgB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,uBAAa,CAAC,CAAC;QAC7E,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACvB,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;YACrC,MAAM,iBAAiB,GAAG,IAAA,6EAAqC,GAAE,CAAC;YAClE,MAAM,aAAa,GAAG,IAAI,uBAAa,CAAC,iBAAiB,CAAC,CAAC;YAC3D,MAAM,IAAI,GAAG;gBACX,EAAE,EAAE,MAAM;aACX,CAAC;YACF,MAAM,UAAU,GAAG,IAAI,0BAAgB,CAAC;gBACtC,aAAa;gBACb,EAAE,EAAE,MAAM;gBACV,cAAc,EAAE,IAAI;gBACpB,cAAc,EAAE,IAAI;aACrB,CAAC,CAAC;YACH,MAAM,CAAC,0BAAgB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,uBAAa,CAAC,CAAC;QAC7E,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -3,197 +3,27 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const
|
|
7
|
-
const
|
|
6
|
+
const AuthorizationResultBasedEntityAssociationLoader_1 = __importDefault(require("../AuthorizationResultBasedEntityAssociationLoader"));
|
|
7
|
+
const EnforcingEntityAssociationLoader_1 = __importDefault(require("../EnforcingEntityAssociationLoader"));
|
|
8
8
|
const EntityAssociationLoader_1 = __importDefault(require("../EntityAssociationLoader"));
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const TestEntity2_1 = __importDefault(require("../testfixtures/TestEntity2"));
|
|
12
|
-
const TestViewerContext_1 = __importDefault(require("../testfixtures/TestViewerContext"));
|
|
9
|
+
const ViewerContext_1 = __importDefault(require("../ViewerContext"));
|
|
10
|
+
const SimpleTestEntity_1 = __importDefault(require("../testfixtures/SimpleTestEntity"));
|
|
13
11
|
const createUnitTestEntityCompanionProvider_1 = require("../utils/testing/createUnitTestEntityCompanionProvider");
|
|
14
12
|
describe(EntityAssociationLoader_1.default, () => {
|
|
15
|
-
describe('
|
|
16
|
-
it('
|
|
13
|
+
describe('enforcing', () => {
|
|
14
|
+
it('creates a new EnforcingEntityLoader', async () => {
|
|
17
15
|
const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
|
|
18
|
-
const viewerContext = new
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
.setField('stringField', testOtherEntity.getID())
|
|
22
|
-
.createAsync());
|
|
23
|
-
const loadedOther = await (0, results_1.enforceAsyncResult)(testEntity.associationLoader().loadAssociatedEntityAsync('stringField', TestEntity_1.default));
|
|
24
|
-
expect(loadedOther.getID()).toEqual(testOtherEntity.getID());
|
|
25
|
-
const loadedOther2 = await (0, results_1.enforceAsyncResult)(testEntity.associationLoader().loadAssociatedEntityAsync('nullableField', TestEntity_1.default));
|
|
26
|
-
expect(loadedOther2).toBeNull();
|
|
16
|
+
const viewerContext = new ViewerContext_1.default(companionProvider);
|
|
17
|
+
const testEntity = await SimpleTestEntity_1.default.creator(viewerContext).enforcing().createAsync();
|
|
18
|
+
expect(testEntity.associationLoader().enforcing()).toBeInstanceOf(EnforcingEntityAssociationLoader_1.default);
|
|
27
19
|
});
|
|
28
20
|
});
|
|
29
|
-
describe('
|
|
30
|
-
it('
|
|
21
|
+
describe('withAuthorizationResults', () => {
|
|
22
|
+
it('creates a new AuthorizationResultBasedEntityAssociationLoader', async () => {
|
|
31
23
|
const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
|
|
32
|
-
const viewerContext = new
|
|
33
|
-
const testEntity = await
|
|
34
|
-
|
|
35
|
-
const testOtherEntity2 = await (0, results_1.enforceAsyncResult)(TestEntity_1.default.creator(viewerContext).setField('stringField', testEntity.getID()).createAsync());
|
|
36
|
-
const loaded = await (0, entityUtils_1.enforceResultsAsync)(testEntity.associationLoader().loadManyAssociatedEntitiesAsync(TestEntity_1.default, 'stringField'));
|
|
37
|
-
expect(loaded).toHaveLength(2);
|
|
38
|
-
expect(loaded.find((e) => e.getID() === testOtherEntity1.getID())).not.toBeUndefined();
|
|
39
|
-
expect(loaded.find((e) => e.getID() === testOtherEntity2.getID())).not.toBeUndefined();
|
|
40
|
-
});
|
|
41
|
-
});
|
|
42
|
-
describe('loadAssociatedEntityByFieldEqualingAsync', () => {
|
|
43
|
-
it('loads associated entity by field equaling', async () => {
|
|
44
|
-
const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
|
|
45
|
-
const viewerContext = new TestViewerContext_1.default(companionProvider);
|
|
46
|
-
const testOtherEntity = await (0, results_1.enforceAsyncResult)(TestEntity_1.default.creator(viewerContext).createAsync());
|
|
47
|
-
const testEntity = await (0, results_1.enforceAsyncResult)(TestEntity_1.default.creator(viewerContext)
|
|
48
|
-
.setField('stringField', testOtherEntity.getID())
|
|
49
|
-
.createAsync());
|
|
50
|
-
const loadedOtherResult = await testEntity
|
|
51
|
-
.associationLoader()
|
|
52
|
-
.loadAssociatedEntityByFieldEqualingAsync('stringField', TestEntity_1.default, 'customIdField');
|
|
53
|
-
expect(loadedOtherResult?.enforceValue().getID()).toEqual(testOtherEntity.getID());
|
|
54
|
-
});
|
|
55
|
-
it('returns null when loading associated entities by field equaling a non existent association', async () => {
|
|
56
|
-
const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
|
|
57
|
-
const viewerContext = new TestViewerContext_1.default(companionProvider);
|
|
58
|
-
const testEntity = await (0, results_1.enforceAsyncResult)(TestEntity_1.default.creator(viewerContext).setField('stringField', (0, uuid_1.v4)()).createAsync());
|
|
59
|
-
const loadedOtherResult = await testEntity
|
|
60
|
-
.associationLoader()
|
|
61
|
-
.loadAssociatedEntityByFieldEqualingAsync('stringField', TestEntity_1.default, 'customIdField');
|
|
62
|
-
expect(loadedOtherResult).toBeNull();
|
|
63
|
-
});
|
|
64
|
-
it('returns null when load-by field is null', async () => {
|
|
65
|
-
const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
|
|
66
|
-
const viewerContext = new TestViewerContext_1.default(companionProvider);
|
|
67
|
-
const testEntity = await (0, results_1.enforceAsyncResult)(TestEntity_1.default.creator(viewerContext).setField('stringField', 'blah').createAsync());
|
|
68
|
-
const loadedOtherResult = await testEntity
|
|
69
|
-
.associationLoader()
|
|
70
|
-
.loadAssociatedEntityByFieldEqualingAsync('nullableField', TestEntity_1.default, 'customIdField');
|
|
71
|
-
expect(loadedOtherResult).toBeNull();
|
|
72
|
-
});
|
|
73
|
-
});
|
|
74
|
-
describe('loadManyAssociatedEntitiesByFieldEqualingAsync', () => {
|
|
75
|
-
it('loads many associated entities by field equaling', async () => {
|
|
76
|
-
const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
|
|
77
|
-
const viewerContext = new TestViewerContext_1.default(companionProvider);
|
|
78
|
-
const testEntity = await (0, results_1.enforceAsyncResult)(TestEntity_1.default.creator(viewerContext).createAsync());
|
|
79
|
-
const testOtherEntity1 = await (0, results_1.enforceAsyncResult)(TestEntity_1.default.creator(viewerContext).setField('stringField', testEntity.getID()).createAsync());
|
|
80
|
-
const testOtherEntity2 = await (0, results_1.enforceAsyncResult)(TestEntity_1.default.creator(viewerContext).setField('stringField', testEntity.getID()).createAsync());
|
|
81
|
-
const loaded = await (0, entityUtils_1.enforceResultsAsync)(testEntity
|
|
82
|
-
.associationLoader()
|
|
83
|
-
.loadManyAssociatedEntitiesByFieldEqualingAsync('customIdField', TestEntity_1.default, 'stringField'));
|
|
84
|
-
expect(loaded).toHaveLength(2);
|
|
85
|
-
expect(loaded.find((e) => e.getID() === testOtherEntity1.getID())).not.toBeUndefined();
|
|
86
|
-
expect(loaded.find((e) => e.getID() === testOtherEntity2.getID())).not.toBeUndefined();
|
|
87
|
-
});
|
|
88
|
-
it('returns empty results when field being queried by is null', async () => {
|
|
89
|
-
const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
|
|
90
|
-
const viewerContext = new TestViewerContext_1.default(companionProvider);
|
|
91
|
-
const testEntity = await (0, results_1.enforceAsyncResult)(TestEntity_1.default.creator(viewerContext).createAsync());
|
|
92
|
-
const loaded = await (0, entityUtils_1.enforceResultsAsync)(testEntity
|
|
93
|
-
.associationLoader()
|
|
94
|
-
.loadManyAssociatedEntitiesByFieldEqualingAsync('nullableField', TestEntity_1.default, 'stringField'));
|
|
95
|
-
expect(loaded).toHaveLength(0);
|
|
96
|
-
});
|
|
97
|
-
});
|
|
98
|
-
describe('loadAssociatedEntityThroughAsync', () => {
|
|
99
|
-
it('chain loads associated entities', async () => {
|
|
100
|
-
const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
|
|
101
|
-
const viewerContext = new TestViewerContext_1.default(companionProvider);
|
|
102
|
-
const testEntity4 = await (0, results_1.enforceAsyncResult)(TestEntity_1.default.creator(viewerContext).createAsync());
|
|
103
|
-
const testEntity3 = await (0, results_1.enforceAsyncResult)(TestEntity2_1.default.creator(viewerContext)
|
|
104
|
-
.setField('foreignKey', testEntity4.getID())
|
|
105
|
-
.createAsync());
|
|
106
|
-
const testEntity2 = await (0, results_1.enforceAsyncResult)(TestEntity_1.default.creator(viewerContext)
|
|
107
|
-
.setField('testIndexedField', testEntity3.getID())
|
|
108
|
-
.createAsync());
|
|
109
|
-
const testEntity = await (0, results_1.enforceAsyncResult)(TestEntity2_1.default.creator(viewerContext)
|
|
110
|
-
.setField('foreignKey', testEntity2.getID())
|
|
111
|
-
.createAsync());
|
|
112
|
-
const loaded2Result = await testEntity.associationLoader().loadAssociatedEntityThroughAsync([
|
|
113
|
-
{
|
|
114
|
-
associatedEntityClass: TestEntity_1.default,
|
|
115
|
-
fieldIdentifyingAssociatedEntity: 'foreignKey',
|
|
116
|
-
},
|
|
117
|
-
]);
|
|
118
|
-
expect(loaded2Result?.enforceValue().getID()).toEqual(testEntity2.getID());
|
|
119
|
-
const loaded3Result = await testEntity.associationLoader().loadAssociatedEntityThroughAsync([
|
|
120
|
-
{
|
|
121
|
-
associatedEntityClass: TestEntity_1.default,
|
|
122
|
-
fieldIdentifyingAssociatedEntity: 'foreignKey',
|
|
123
|
-
},
|
|
124
|
-
{
|
|
125
|
-
associatedEntityClass: TestEntity2_1.default,
|
|
126
|
-
fieldIdentifyingAssociatedEntity: 'testIndexedField',
|
|
127
|
-
},
|
|
128
|
-
]);
|
|
129
|
-
expect(loaded3Result?.enforceValue().getID()).toEqual(testEntity3.getID());
|
|
130
|
-
const loaded4Result = await testEntity.associationLoader().loadAssociatedEntityThroughAsync([
|
|
131
|
-
{
|
|
132
|
-
associatedEntityClass: TestEntity_1.default,
|
|
133
|
-
fieldIdentifyingAssociatedEntity: 'foreignKey',
|
|
134
|
-
},
|
|
135
|
-
{
|
|
136
|
-
associatedEntityClass: TestEntity2_1.default,
|
|
137
|
-
fieldIdentifyingAssociatedEntity: 'testIndexedField',
|
|
138
|
-
},
|
|
139
|
-
{
|
|
140
|
-
associatedEntityClass: TestEntity_1.default,
|
|
141
|
-
fieldIdentifyingAssociatedEntity: 'foreignKey',
|
|
142
|
-
},
|
|
143
|
-
]);
|
|
144
|
-
expect(loaded4Result?.enforceValue().getID()).toEqual(testEntity4.getID());
|
|
145
|
-
});
|
|
146
|
-
it('fails when chain loading associated entity fails', async () => {
|
|
147
|
-
const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
|
|
148
|
-
const viewerContext = new TestViewerContext_1.default(companionProvider);
|
|
149
|
-
const testEntity = await (0, results_1.enforceAsyncResult)(TestEntity2_1.default.creator(viewerContext).setField('foreignKey', (0, uuid_1.v4)()).createAsync());
|
|
150
|
-
const loadResult = await testEntity.associationLoader().loadAssociatedEntityThroughAsync([
|
|
151
|
-
{
|
|
152
|
-
associatedEntityClass: TestEntity_1.default,
|
|
153
|
-
fieldIdentifyingAssociatedEntity: 'foreignKey',
|
|
154
|
-
},
|
|
155
|
-
]);
|
|
156
|
-
expect(loadResult?.ok).toBe(false);
|
|
157
|
-
});
|
|
158
|
-
it('supports chain loading by field equality', async () => {
|
|
159
|
-
const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
|
|
160
|
-
const viewerContext = new TestViewerContext_1.default(companionProvider);
|
|
161
|
-
const fieldValue = (0, uuid_1.v4)();
|
|
162
|
-
const testEntity2 = await (0, results_1.enforceAsyncResult)(TestEntity_1.default.creator(viewerContext).setField('stringField', fieldValue).createAsync());
|
|
163
|
-
const testEntity = await (0, results_1.enforceAsyncResult)(TestEntity2_1.default.creator(viewerContext).setField('foreignKey', fieldValue).createAsync());
|
|
164
|
-
const loaded2Result = await testEntity.associationLoader().loadAssociatedEntityThroughAsync([
|
|
165
|
-
{
|
|
166
|
-
associatedEntityClass: TestEntity_1.default,
|
|
167
|
-
fieldIdentifyingAssociatedEntity: 'foreignKey',
|
|
168
|
-
associatedEntityLookupByField: 'stringField',
|
|
169
|
-
},
|
|
170
|
-
]);
|
|
171
|
-
expect(loaded2Result?.enforceValue().getID()).toEqual(testEntity2.getID());
|
|
172
|
-
});
|
|
173
|
-
it('returns null when chain loading by field equality returns null', async () => {
|
|
174
|
-
const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
|
|
175
|
-
const viewerContext = new TestViewerContext_1.default(companionProvider);
|
|
176
|
-
const testEntity = await (0, results_1.enforceAsyncResult)(TestEntity2_1.default.creator(viewerContext).setField('foreignKey', (0, uuid_1.v4)()).createAsync());
|
|
177
|
-
const loaded2Result = await testEntity.associationLoader().loadAssociatedEntityThroughAsync([
|
|
178
|
-
{
|
|
179
|
-
associatedEntityClass: TestEntity_1.default,
|
|
180
|
-
fieldIdentifyingAssociatedEntity: 'foreignKey',
|
|
181
|
-
associatedEntityLookupByField: 'stringField',
|
|
182
|
-
},
|
|
183
|
-
]);
|
|
184
|
-
expect(loaded2Result).toBeNull();
|
|
185
|
-
});
|
|
186
|
-
it('returns null when chain loading by field is null', async () => {
|
|
187
|
-
const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
|
|
188
|
-
const viewerContext = new TestViewerContext_1.default(companionProvider);
|
|
189
|
-
const testEntity = await (0, results_1.enforceAsyncResult)(TestEntity_1.default.creator(viewerContext).setField('nullableField', null).createAsync());
|
|
190
|
-
const loadedResult = await testEntity.associationLoader().loadAssociatedEntityThroughAsync([
|
|
191
|
-
{
|
|
192
|
-
associatedEntityClass: TestEntity_1.default,
|
|
193
|
-
fieldIdentifyingAssociatedEntity: 'nullableField',
|
|
194
|
-
},
|
|
195
|
-
]);
|
|
196
|
-
expect(loadedResult).toBeNull();
|
|
24
|
+
const viewerContext = new ViewerContext_1.default(companionProvider);
|
|
25
|
+
const testEntity = await SimpleTestEntity_1.default.creator(viewerContext).enforcing().createAsync();
|
|
26
|
+
expect(testEntity.associationLoader().withAuthorizationResults()).toBeInstanceOf(AuthorizationResultBasedEntityAssociationLoader_1.default);
|
|
197
27
|
});
|
|
198
28
|
});
|
|
199
29
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityAssociationLoader-test.js","sourceRoot":"","sources":["../../src/__tests__/EntityAssociationLoader-test.ts"],"names":[],"mappings":";;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"EntityAssociationLoader-test.js","sourceRoot":"","sources":["../../src/__tests__/EntityAssociationLoader-test.ts"],"names":[],"mappings":";;;;;AAAA,yIAAiH;AACjH,2GAAmF;AACnF,yFAAiE;AACjE,qEAA6C;AAC7C,wFAAgE;AAChE,kHAA+G;AAE/G,QAAQ,CAAC,iCAAuB,EAAE,GAAG,EAAE;IACrC,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QACzB,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACnD,MAAM,iBAAiB,GAAG,IAAA,6EAAqC,GAAE,CAAC;YAClE,MAAM,aAAa,GAAG,IAAI,uBAAa,CAAC,iBAAiB,CAAC,CAAC;YAC3D,MAAM,UAAU,GAAG,MAAM,0BAAgB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,SAAS,EAAE,CAAC,WAAW,EAAE,CAAC;YAC3F,MAAM,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,cAAc,CAC/D,0CAAgC,CACjC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACxC,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;YAC7E,MAAM,iBAAiB,GAAG,IAAA,6EAAqC,GAAE,CAAC;YAClE,MAAM,aAAa,GAAG,IAAI,uBAAa,CAAC,iBAAiB,CAAC,CAAC;YAC3D,MAAM,UAAU,GAAG,MAAM,0BAAgB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,SAAS,EAAE,CAAC,WAAW,EAAE,CAAC;YAC3F,MAAM,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,wBAAwB,EAAE,CAAC,CAAC,cAAc,CAC9E,yDAA+C,CAChD,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
15
15
|
}) : function(o, v) {
|
|
16
16
|
o["default"] = v;
|
|
17
17
|
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
};
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
25
35
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
37
|
};
|
|
@@ -103,9 +113,18 @@ it('runs through a common workflow', async () => {
|
|
|
103
113
|
const entityCompanionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
|
|
104
114
|
const vc1 = new TestUserViewerContext(entityCompanionProvider, (0, uuid_1.v4)());
|
|
105
115
|
const vc2 = new TestUserViewerContext(entityCompanionProvider, (0, uuid_1.v4)());
|
|
106
|
-
const blahOwner1 = await (0, results_1.enforceAsyncResult)(BlahEntity.creator(vc1)
|
|
107
|
-
|
|
108
|
-
|
|
116
|
+
const blahOwner1 = await (0, results_1.enforceAsyncResult)(BlahEntity.creator(vc1)
|
|
117
|
+
.withAuthorizationResults()
|
|
118
|
+
.setField('ownerID', vc1.getUserID())
|
|
119
|
+
.createAsync());
|
|
120
|
+
await (0, results_1.enforceAsyncResult)(BlahEntity.creator(vc1)
|
|
121
|
+
.withAuthorizationResults()
|
|
122
|
+
.setField('ownerID', vc1.getUserID())
|
|
123
|
+
.createAsync());
|
|
124
|
+
const blahOwner2 = await (0, results_1.enforceAsyncResult)(BlahEntity.creator(vc2)
|
|
125
|
+
.withAuthorizationResults()
|
|
126
|
+
.setField('ownerID', vc2.getUserID())
|
|
127
|
+
.createAsync());
|
|
109
128
|
// sanity check created objects
|
|
110
129
|
expect(blahOwner1.getField('ownerID')).toEqual(vc1.getUserID());
|
|
111
130
|
expect(blahOwner2.getField('ownerID')).toEqual(vc2.getUserID());
|
|
@@ -118,7 +137,10 @@ it('runs through a common workflow', async () => {
|
|
|
118
137
|
.loadManyByFieldEqualingAsync('ownerID', vc1.getUserID()));
|
|
119
138
|
expect(results).toHaveLength(2);
|
|
120
139
|
// check that two people can't create objects owned by others
|
|
121
|
-
await expect((0, results_1.enforceAsyncResult)(BlahEntity.creator(vc2)
|
|
140
|
+
await expect((0, results_1.enforceAsyncResult)(BlahEntity.creator(vc2)
|
|
141
|
+
.withAuthorizationResults()
|
|
142
|
+
.setField('ownerID', blahOwner1.getID())
|
|
143
|
+
.createAsync())).rejects.toBeInstanceOf(EntityNotAuthorizedError_1.default);
|
|
122
144
|
// check that empty load many returns nothing
|
|
123
145
|
const results2 = await BlahEntity.loader(vc1)
|
|
124
146
|
.withAuthorizationResults()
|
|
@@ -127,6 +149,6 @@ it('runs through a common workflow', async () => {
|
|
|
127
149
|
expect(value).toHaveLength(0);
|
|
128
150
|
}
|
|
129
151
|
// check that the user can't delete their own data (as specified by privacy rules)
|
|
130
|
-
await expect((0, results_1.enforceAsyncResult)(BlahEntity.
|
|
152
|
+
await expect((0, results_1.enforceAsyncResult)(BlahEntity.deleter(blahOwner2).withAuthorizationResults().deleteAsync())).rejects.toBeInstanceOf(EntityNotAuthorizedError_1.default);
|
|
131
153
|
});
|
|
132
154
|
//# sourceMappingURL=EntityCommonUseCases-test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityCommonUseCases-test.js","sourceRoot":"","sources":["../../src/__tests__/EntityCommonUseCases-test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"EntityCommonUseCases-test.js","sourceRoot":"","sources":["../../src/__tests__/EntityCommonUseCases-test.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
15
15
|
}) : function(o, v) {
|
|
16
16
|
o["default"] = v;
|
|
17
17
|
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
};
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
25
35
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
37
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityCompanion-test.js","sourceRoot":"","sources":["../../src/__tests__/EntityCompanion-test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"EntityCompanion-test.js","sourceRoot":"","sources":["../../src/__tests__/EntityCompanion-test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAAkD;AAElD,yEAAiD;AACjD,yFAAiE;AACjE,iFAAyD;AAEzD,mFAA2D;AAI3D,mGAA2E;AAC3E,iHAIwD;AAExD,QAAQ,CAAC,yBAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,uBAAuB,GAAG,IAAA,qBAAQ,EAAC,IAAA,iBAAI,GAA2B,CAAC,CAAC;QAE1E,MAAM,wBAAwB,GAAG,IAAA,iBAAI,GAA4C,CAAC;QAClF,IAAA,iBAAI,EAAC,wBAAwB,CAAC,mBAAmB,CAAC,CAAC,UAAU,CAAC,0DAAyB,CAAC,CAAC;QAEzF,MAAM,SAAS,GAAG,IAAI,yBAAe,CACnC,uBAAuB,EACvB,wCAA8B,CAAC,yBAAyB,EAAE,EAC1D,IAAA,qBAAQ,EAAC,wBAAwB,CAAC,EAClC,IAAA,qBAAQ,EAAC,IAAA,iBAAI,GAAyB,CAAC,CACxC,CAAC;QACF,MAAM,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC,CAAC,cAAc,CAAC,6BAAmB,CAAC,CAAC;QACzE,MAAM,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC,CAAC,cAAc,CAAC,8BAAoB,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,sBAAsB,GAMxB;YACF,WAAW,EAAE,CAAC,IAAI,oDAAmB,CAAC,mBAAmB,CAAC,CAAC;YAC3D,QAAQ,EAAE,CAAC,IAAI,oDAAmB,CAAC,gBAAgB,CAAC,CAAC;SACtD,CAAC;QAEF,MAAM,cAAc,GAAG,IAAI,kCAAwB,EAAE,CAAC;QAEtD,MAAM,uBAAuB,GAAG,IAAI,iCAAuB,CACzD,cAAc,EACd,IAAI,GAAG,EAAE,EACT,IAAI,GAAG,EAAE,EACT,sBAAsB,CACvB,CAAC;QAEF,MAAM,wBAAwB,GAAG,IAAA,iBAAI,GAA4C,CAAC;QAClF,IAAA,iBAAI,EAAC,wBAAwB,CAAC,mBAAmB,CAAC,CAAC,UAAU,CAAC,0DAAyB,CAAC,CAAC;QAEzF,MAAM,SAAS,GAAG,IAAI,yBAAe,CACnC,uBAAuB,EACvB,wCAA8B,CAAC,yBAAyB,EAAE,EAC1D,IAAA,qBAAQ,EAAC,wBAAwB,CAAC,EAClC,IAAA,qBAAQ,EAAC,IAAA,iBAAI,GAAyB,CAAC,CACxC,CAAC;QACF,MAAM,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC,CAAC,cAAc,CAAC,6BAAmB,CAAC,CAAC;QACzE,MAAM,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC,CAAC,cAAc,CAAC,8BAAoB,CAAC,CAAC;QAE3E,MAAM,cAAc,GAAG,SAAS,CAAC,iBAAiB,EAAE,CAAC,kBAAkB,CAAC,CAAC;QAEzE,MAAM,aAAa,GAAG,SAAS,CAAC,yBAAyB,CAAC,gBAAgB,CAAC;QAC3E,MAAM,CAAC,aAAa,CAAC,CAAC,UAAU,EAAE,CAAC;QAEnC,MAAM,CAAC,cAAc,CAAC,CAAC,aAAa,CAAC;YACnC,WAAW,EAAE,CAAC,aAAc,CAAC,WAAY,CAAC,CAAC,CAAC,EAAE,sBAAsB,CAAC,WAAY,CAAC,CAAC,CAAC,CAAC;YACrF,QAAQ,EAAE,CAAC,aAAc,CAAC,QAAS,CAAC,CAAC,CAAC,EAAE,sBAAsB,CAAC,QAAS,CAAC,CAAC,CAAC,CAAC;YAC5E,WAAW,EAAE,CAAC,aAAc,CAAC,WAAY,CAAC,CAAC,CAAC,CAAC;SAC9C,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
15
15
|
}) : function(o, v) {
|
|
16
16
|
o["default"] = v;
|
|
17
17
|
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
};
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
25
35
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
37
|
};
|
|
@@ -340,20 +350,22 @@ describe('EntityMutator.processEntityDeletionForInboundEdgesAsync', () => {
|
|
|
340
350
|
const { ParentEntity, ChildEntity, GrandChildEntity, triggerExecutionCounts, privacyPolicyEvaluationRecords, } = makeEntityClasses(EntityFieldDefinition_1.EntityEdgeDeletionBehavior.CASCADE_DELETE);
|
|
341
351
|
const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
|
|
342
352
|
const viewerContext = new TestViewerContext_1.default(companionProvider);
|
|
343
|
-
const parent = await ParentEntity.creator(viewerContext).
|
|
353
|
+
const parent = await ParentEntity.creator(viewerContext).enforcing().createAsync();
|
|
344
354
|
const child = await ChildEntity.creator(viewerContext)
|
|
355
|
+
.enforcing()
|
|
345
356
|
.setField('parent_id', parent.getID())
|
|
346
|
-
.
|
|
357
|
+
.createAsync();
|
|
347
358
|
const grandchild = await GrandChildEntity.creator(viewerContext)
|
|
359
|
+
.enforcing()
|
|
348
360
|
.setField('parent_id', child.getID())
|
|
349
|
-
.
|
|
361
|
+
.createAsync();
|
|
350
362
|
await expect(ParentEntity.loader(viewerContext).enforcing().loadByIDNullableAsync(parent.getID())).resolves.not.toBeNull();
|
|
351
363
|
await expect(ChildEntity.loader(viewerContext).enforcing().loadByIDNullableAsync(child.getID())).resolves.not.toBeNull();
|
|
352
364
|
await expect(GrandChildEntity.loader(viewerContext)
|
|
353
365
|
.enforcing()
|
|
354
366
|
.loadByIDNullableAsync(grandchild.getID())).resolves.not.toBeNull();
|
|
355
367
|
privacyPolicyEvaluationRecords.shouldRecord = true;
|
|
356
|
-
await ParentEntity.
|
|
368
|
+
await ParentEntity.deleter(parent).enforcing().deleteAsync();
|
|
357
369
|
privacyPolicyEvaluationRecords.shouldRecord = false;
|
|
358
370
|
await expect(ParentEntity.loader(viewerContext).enforcing().loadByIDNullableAsync(parent.getID())).resolves.toBeNull();
|
|
359
371
|
await expect(ChildEntity.loader(viewerContext).enforcing().loadByIDNullableAsync(child.getID())).resolves.toBeNull();
|
|
@@ -435,20 +447,22 @@ describe('EntityMutator.processEntityDeletionForInboundEdgesAsync', () => {
|
|
|
435
447
|
const { ParentEntity, ChildEntity, GrandChildEntity, triggerExecutionCounts, privacyPolicyEvaluationRecords, } = makeEntityClasses(EntityFieldDefinition_1.EntityEdgeDeletionBehavior.SET_NULL);
|
|
436
448
|
const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
|
|
437
449
|
const viewerContext = new TestViewerContext_1.default(companionProvider);
|
|
438
|
-
const parent = await ParentEntity.creator(viewerContext).
|
|
450
|
+
const parent = await ParentEntity.creator(viewerContext).enforcing().createAsync();
|
|
439
451
|
const child = await ChildEntity.creator(viewerContext)
|
|
452
|
+
.enforcing()
|
|
440
453
|
.setField('parent_id', parent.getID())
|
|
441
|
-
.
|
|
454
|
+
.createAsync();
|
|
442
455
|
const grandchild = await GrandChildEntity.creator(viewerContext)
|
|
456
|
+
.enforcing()
|
|
443
457
|
.setField('parent_id', child.getID())
|
|
444
|
-
.
|
|
458
|
+
.createAsync();
|
|
445
459
|
await expect(ParentEntity.loader(viewerContext).enforcing().loadByIDNullableAsync(parent.getID())).resolves.not.toBeNull();
|
|
446
460
|
await expect(ChildEntity.loader(viewerContext).enforcing().loadByIDNullableAsync(child.getID())).resolves.not.toBeNull();
|
|
447
461
|
await expect(GrandChildEntity.loader(viewerContext)
|
|
448
462
|
.enforcing()
|
|
449
463
|
.loadByIDNullableAsync(grandchild.getID())).resolves.not.toBeNull();
|
|
450
464
|
privacyPolicyEvaluationRecords.shouldRecord = true;
|
|
451
|
-
await ParentEntity.
|
|
465
|
+
await ParentEntity.deleter(parent).enforcing().deleteAsync();
|
|
452
466
|
privacyPolicyEvaluationRecords.shouldRecord = false;
|
|
453
467
|
await expect(ParentEntity.loader(viewerContext).enforcing().loadByIDNullableAsync(parent.getID())).resolves.toBeNull();
|
|
454
468
|
const loadedChild = await ChildEntity.loader(viewerContext)
|
|
@@ -522,13 +536,15 @@ describe('EntityMutator.processEntityDeletionForInboundEdgesAsync', () => {
|
|
|
522
536
|
const { ParentEntity, ChildEntity, GrandChildEntity, triggerExecutionCounts, privacyPolicyEvaluationRecords, } = makeEntityClasses(EntityFieldDefinition_1.EntityEdgeDeletionBehavior.SET_NULL_INVALIDATE_CACHE_ONLY);
|
|
523
537
|
const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
|
|
524
538
|
const viewerContext = new TestViewerContext_1.default(companionProvider);
|
|
525
|
-
const parent = await ParentEntity.creator(viewerContext).
|
|
539
|
+
const parent = await ParentEntity.creator(viewerContext).enforcing().createAsync();
|
|
526
540
|
const child = await ChildEntity.creator(viewerContext)
|
|
541
|
+
.enforcing()
|
|
527
542
|
.setField('parent_id', parent.getID())
|
|
528
|
-
.
|
|
543
|
+
.createAsync();
|
|
529
544
|
const grandchild = await GrandChildEntity.creator(viewerContext)
|
|
545
|
+
.enforcing()
|
|
530
546
|
.setField('parent_id', child.getID())
|
|
531
|
-
.
|
|
547
|
+
.createAsync();
|
|
532
548
|
await expect(ParentEntity.loader(viewerContext).enforcing().loadByIDNullableAsync(parent.getID())).resolves.not.toBeNull();
|
|
533
549
|
await expect(ChildEntity.loader(viewerContext)
|
|
534
550
|
.enforcing()
|
|
@@ -547,7 +563,7 @@ describe('EntityMutator.processEntityDeletionForInboundEdgesAsync', () => {
|
|
|
547
563
|
]);
|
|
548
564
|
expect(grandChildCachedBefore.get(child.getID())?.status).toEqual(ReadThroughEntityCache_1.CacheStatus.HIT);
|
|
549
565
|
privacyPolicyEvaluationRecords.shouldRecord = true;
|
|
550
|
-
await ParentEntity.
|
|
566
|
+
await ParentEntity.deleter(parent).enforcing().deleteAsync();
|
|
551
567
|
privacyPolicyEvaluationRecords.shouldRecord = false;
|
|
552
568
|
const childCachedAfter = await childCacheAdapter.loadManyAsync('parent_id', [parent.getID()]);
|
|
553
569
|
expect(childCachedAfter.get(parent.getID())?.status).toEqual(ReadThroughEntityCache_1.CacheStatus.MISS);
|
|
@@ -625,13 +641,15 @@ describe('EntityMutator.processEntityDeletionForInboundEdgesAsync', () => {
|
|
|
625
641
|
const { ParentEntity, ChildEntity, GrandChildEntity, triggerExecutionCounts, privacyPolicyEvaluationRecords, } = makeEntityClasses(EntityFieldDefinition_1.EntityEdgeDeletionBehavior.CASCADE_DELETE_INVALIDATE_CACHE_ONLY);
|
|
626
642
|
const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
|
|
627
643
|
const viewerContext = new TestViewerContext_1.default(companionProvider);
|
|
628
|
-
const parent = await ParentEntity.creator(viewerContext).
|
|
644
|
+
const parent = await ParentEntity.creator(viewerContext).enforcing().createAsync();
|
|
629
645
|
const child = await ChildEntity.creator(viewerContext)
|
|
646
|
+
.enforcing()
|
|
630
647
|
.setField('parent_id', parent.getID())
|
|
631
|
-
.
|
|
648
|
+
.createAsync();
|
|
632
649
|
const grandchild = await GrandChildEntity.creator(viewerContext)
|
|
650
|
+
.enforcing()
|
|
633
651
|
.setField('parent_id', child.getID())
|
|
634
|
-
.
|
|
652
|
+
.createAsync();
|
|
635
653
|
await expect(ParentEntity.loader(viewerContext).enforcing().loadByIDNullableAsync(parent.getID())).resolves.not.toBeNull();
|
|
636
654
|
await expect(ChildEntity.loader(viewerContext)
|
|
637
655
|
.enforcing()
|
|
@@ -650,7 +668,7 @@ describe('EntityMutator.processEntityDeletionForInboundEdgesAsync', () => {
|
|
|
650
668
|
]);
|
|
651
669
|
expect(grandChildCachedBefore.get(child.getID())?.status).toEqual(ReadThroughEntityCache_1.CacheStatus.HIT);
|
|
652
670
|
privacyPolicyEvaluationRecords.shouldRecord = true;
|
|
653
|
-
await ParentEntity.
|
|
671
|
+
await ParentEntity.deleter(parent).enforcing().deleteAsync();
|
|
654
672
|
privacyPolicyEvaluationRecords.shouldRecord = false;
|
|
655
673
|
const childCachedAfter = await childCacheAdapter.loadManyAsync('parent_id', [parent.getID()]);
|
|
656
674
|
expect(childCachedAfter.get(parent.getID())?.status).toEqual(ReadThroughEntityCache_1.CacheStatus.MISS);
|