@expo/entity 0.45.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/{AuthorizationResultBasedEntityAssociationLoader.d.ts → src/AuthorizationResultBasedEntityAssociationLoader.d.ts} +4 -4
- package/build/{AuthorizationResultBasedEntityAssociationLoader.js → src/AuthorizationResultBasedEntityAssociationLoader.js} +2 -1
- package/build/src/AuthorizationResultBasedEntityAssociationLoader.js.map +1 -0
- package/build/{AuthorizationResultBasedEntityLoader.d.ts → src/AuthorizationResultBasedEntityLoader.d.ts} +8 -8
- package/build/{AuthorizationResultBasedEntityLoader.js → src/AuthorizationResultBasedEntityLoader.js} +6 -5
- package/build/src/AuthorizationResultBasedEntityLoader.js.map +1 -0
- package/build/{AuthorizationResultBasedEntityMutator.d.ts → src/AuthorizationResultBasedEntityMutator.d.ts} +15 -13
- package/build/{AuthorizationResultBasedEntityMutator.js → src/AuthorizationResultBasedEntityMutator.js} +77 -39
- package/build/src/AuthorizationResultBasedEntityMutator.js.map +1 -0
- package/build/{ComposedEntityCacheAdapter.d.ts → src/ComposedEntityCacheAdapter.d.ts} +2 -2
- package/build/{ComposedEntityCacheAdapter.js → src/ComposedEntityCacheAdapter.js} +2 -1
- package/build/src/ComposedEntityCacheAdapter.js.map +1 -0
- package/build/{ComposedSecondaryEntityCache.d.ts → src/ComposedSecondaryEntityCache.d.ts} +1 -1
- package/build/{ComposedSecondaryEntityCache.js → src/ComposedSecondaryEntityCache.js} +2 -1
- package/build/src/ComposedSecondaryEntityCache.js.map +1 -0
- package/build/{EnforcingEntityAssociationLoader.d.ts → src/EnforcingEntityAssociationLoader.d.ts} +5 -5
- package/build/{EnforcingEntityAssociationLoader.js → src/EnforcingEntityAssociationLoader.js} +2 -1
- package/build/src/EnforcingEntityAssociationLoader.js.map +1 -0
- package/build/{EnforcingEntityCreator.d.ts → src/EnforcingEntityCreator.d.ts} +4 -4
- package/build/{EnforcingEntityCreator.js → src/EnforcingEntityCreator.js} +2 -1
- package/build/src/EnforcingEntityCreator.js.map +1 -0
- package/build/{EnforcingEntityDeleter.d.ts → src/EnforcingEntityDeleter.d.ts} +4 -4
- package/build/{EnforcingEntityDeleter.js → src/EnforcingEntityDeleter.js} +2 -1
- package/build/src/EnforcingEntityDeleter.js.map +1 -0
- package/build/{EnforcingEntityLoader.d.ts → src/EnforcingEntityLoader.d.ts} +5 -5
- package/build/{EnforcingEntityLoader.js → src/EnforcingEntityLoader.js} +2 -1
- package/build/src/EnforcingEntityLoader.js.map +1 -0
- package/build/{EnforcingEntityUpdater.d.ts → src/EnforcingEntityUpdater.d.ts} +4 -4
- package/build/{EnforcingEntityUpdater.js → src/EnforcingEntityUpdater.js} +2 -1
- package/build/src/EnforcingEntityUpdater.js.map +1 -0
- package/build/{Entity.d.ts → src/Entity.d.ts} +7 -7
- package/build/{Entity.js → src/Entity.js} +13 -15
- package/build/src/Entity.js.map +1 -0
- package/build/{EntityAssociationLoader.d.ts → src/EntityAssociationLoader.d.ts} +5 -5
- package/build/{EntityAssociationLoader.js → src/EntityAssociationLoader.js} +6 -8
- package/build/src/EntityAssociationLoader.js.map +1 -0
- package/build/{EntityCompanion.d.ts → src/EntityCompanion.d.ts} +10 -10
- package/build/{EntityCompanion.js → src/EntityCompanion.js} +6 -8
- package/build/src/EntityCompanion.js.map +1 -0
- package/build/{EntityCompanionProvider.d.ts → src/EntityCompanionProvider.d.ts} +12 -12
- package/build/{EntityCompanionProvider.js → src/EntityCompanionProvider.js} +6 -5
- package/build/src/EntityCompanionProvider.js.map +1 -0
- package/build/{EntityConfiguration.d.ts → src/EntityConfiguration.d.ts} +2 -2
- package/build/{EntityConfiguration.js → src/EntityConfiguration.js} +2 -2
- package/build/src/EntityConfiguration.js.map +1 -0
- package/build/{EntityCreator.d.ts → src/EntityCreator.d.ts} +5 -5
- package/build/{EntityCreator.js → src/EntityCreator.js} +4 -6
- package/build/{EntityCreator.js.map → src/EntityCreator.js.map} +1 -1
- package/build/{EntityDatabaseAdapter.d.ts → src/EntityDatabaseAdapter.d.ts} +2 -2
- package/build/{EntityDatabaseAdapter.js → src/EntityDatabaseAdapter.js} +2 -2
- package/build/src/EntityDatabaseAdapter.js.map +1 -0
- package/build/{EntityDeleter.d.ts → src/EntityDeleter.d.ts} +5 -5
- package/build/{EntityDeleter.js → src/EntityDeleter.js} +5 -7
- package/build/{EntityDeleter.js.map → src/EntityDeleter.js.map} +1 -1
- package/build/{EntityFieldDefinition.d.ts → src/EntityFieldDefinition.d.ts} +3 -3
- package/build/src/EntityFieldDefinition.js.map +1 -0
- package/build/{EntityFields.d.ts → src/EntityFields.d.ts} +7 -0
- package/build/{EntityFields.js → src/EntityFields.js} +11 -1
- package/build/src/EntityFields.js.map +1 -0
- package/build/{EntityLoader.d.ts → src/EntityLoader.d.ts} +7 -7
- package/build/{EntityLoader.js → src/EntityLoader.js} +4 -6
- package/build/{EntityLoader.js.map → src/EntityLoader.js.map} +1 -1
- package/build/{EntityLoaderFactory.d.ts → src/EntityLoaderFactory.d.ts} +8 -8
- package/build/src/EntityLoaderFactory.js +29 -0
- package/build/src/EntityLoaderFactory.js.map +1 -0
- package/build/{EntityLoaderUtils.d.ts → src/EntityLoaderUtils.d.ts} +7 -7
- package/build/{EntityLoaderUtils.js → src/EntityLoaderUtils.js} +2 -1
- package/build/src/EntityLoaderUtils.js.map +1 -0
- package/build/{EntityMutationInfo.d.ts → src/EntityMutationInfo.d.ts} +2 -2
- package/build/src/EntityMutationInfo.js.map +1 -0
- package/build/{EntityMutationTriggerConfiguration.d.ts → src/EntityMutationTriggerConfiguration.d.ts} +3 -3
- package/build/src/EntityMutationTriggerConfiguration.js.map +1 -0
- package/build/{EntityMutationValidator.d.ts → src/EntityMutationValidator.d.ts} +3 -3
- package/build/{EntityMutationValidator.js → src/EntityMutationValidator.js} +2 -1
- package/build/src/EntityMutationValidator.js.map +1 -0
- package/build/{EntityMutatorFactory.d.ts → src/EntityMutatorFactory.d.ts} +15 -14
- package/build/{EntityMutatorFactory.js → src/EntityMutatorFactory.js} +6 -5
- package/build/src/EntityMutatorFactory.js.map +1 -0
- package/build/{EntityPrivacyPolicy.d.ts → src/EntityPrivacyPolicy.d.ts} +6 -6
- package/build/{EntityPrivacyPolicy.js → src/EntityPrivacyPolicy.js} +8 -11
- package/build/{EntityPrivacyPolicy.js.map → src/EntityPrivacyPolicy.js.map} +1 -1
- package/build/{EntityQueryContext.d.ts → src/EntityQueryContext.d.ts} +1 -1
- package/build/src/EntityQueryContext.js.map +1 -0
- package/build/{EntityQueryContextProvider.d.ts → src/EntityQueryContextProvider.d.ts} +2 -2
- package/build/{EntityQueryContextProvider.js → src/EntityQueryContextProvider.js} +2 -1
- package/build/src/EntityQueryContextProvider.js.map +1 -0
- package/build/{EntitySecondaryCacheLoader.d.ts → src/EntitySecondaryCacheLoader.d.ts} +5 -5
- package/build/{EntitySecondaryCacheLoader.js → src/EntitySecondaryCacheLoader.js} +2 -1
- package/build/src/EntitySecondaryCacheLoader.js.map +1 -0
- package/build/{EntityUpdater.d.ts → src/EntityUpdater.d.ts} +5 -5
- package/build/{EntityUpdater.js → src/EntityUpdater.js} +5 -7
- package/build/{EntityUpdater.js.map → src/EntityUpdater.js.map} +1 -1
- package/build/{GenericEntityCacheAdapter.d.ts → src/GenericEntityCacheAdapter.d.ts} +3 -3
- package/build/{GenericEntityCacheAdapter.js → src/GenericEntityCacheAdapter.js} +2 -1
- package/build/src/GenericEntityCacheAdapter.js.map +1 -0
- package/build/{GenericSecondaryEntityCache.d.ts → src/GenericSecondaryEntityCache.d.ts} +2 -2
- package/build/{GenericSecondaryEntityCache.js → src/GenericSecondaryEntityCache.js} +2 -1
- package/build/src/GenericSecondaryEntityCache.js.map +1 -0
- package/build/{IEntityCacheAdapter.d.ts → src/IEntityCacheAdapter.d.ts} +1 -1
- package/build/src/IEntityCacheAdapter.js.map +1 -0
- package/build/{IEntityCacheAdapterProvider.d.ts → src/IEntityCacheAdapterProvider.d.ts} +3 -3
- package/build/src/IEntityCacheAdapterProvider.js.map +1 -0
- package/build/{IEntityDatabaseAdapterProvider.d.ts → src/IEntityDatabaseAdapterProvider.d.ts} +3 -3
- package/build/src/IEntityDatabaseAdapterProvider.js.map +1 -0
- package/build/{IEntityGenericCacher.d.ts → src/IEntityGenericCacher.d.ts} +1 -1
- package/build/src/IEntityGenericCacher.js.map +1 -0
- package/build/{ReadonlyEntity.d.ts → src/ReadonlyEntity.d.ts} +8 -8
- package/build/{ReadonlyEntity.js → src/ReadonlyEntity.js} +9 -8
- package/build/src/ReadonlyEntity.js.map +1 -0
- package/build/{ViewerContext.d.ts → src/ViewerContext.d.ts} +5 -5
- package/build/{ViewerContext.js → src/ViewerContext.js} +4 -6
- package/build/{ViewerContext.js.map → src/ViewerContext.js.map} +1 -1
- package/build/{ViewerScopedEntityCompanion.d.ts → src/ViewerScopedEntityCompanion.d.ts} +9 -9
- package/build/{ViewerScopedEntityCompanion.js → src/ViewerScopedEntityCompanion.js} +6 -8
- package/build/{ViewerScopedEntityCompanion.js.map → src/ViewerScopedEntityCompanion.js.map} +1 -1
- package/build/{ViewerScopedEntityCompanionProvider.d.ts → src/ViewerScopedEntityCompanionProvider.d.ts} +6 -6
- package/build/{ViewerScopedEntityCompanionProvider.js → src/ViewerScopedEntityCompanionProvider.js} +4 -6
- package/build/src/ViewerScopedEntityCompanionProvider.js.map +1 -0
- package/build/{ViewerScopedEntityLoaderFactory.d.ts → src/ViewerScopedEntityLoaderFactory.d.ts} +6 -6
- package/build/{ViewerScopedEntityLoaderFactory.js → src/ViewerScopedEntityLoaderFactory.js} +2 -1
- package/build/src/ViewerScopedEntityLoaderFactory.js.map +1 -0
- package/build/{ViewerScopedEntityMutatorFactory.d.ts → src/ViewerScopedEntityMutatorFactory.d.ts} +9 -8
- package/build/{ViewerScopedEntityMutatorFactory.js → src/ViewerScopedEntityMutatorFactory.js} +6 -5
- package/build/src/ViewerScopedEntityMutatorFactory.js.map +1 -0
- package/build/src/entityUtils.js.map +1 -0
- package/build/{errors → src/errors}/EntityCacheAdapterError.d.ts +2 -2
- package/build/src/errors/EntityCacheAdapterError.js +13 -0
- package/build/src/errors/EntityCacheAdapterError.js.map +1 -0
- package/build/{errors → src/errors}/EntityDatabaseAdapterError.d.ts +2 -2
- package/build/{errors → src/errors}/EntityDatabaseAdapterError.js +4 -37
- package/build/src/errors/EntityDatabaseAdapterError.js.map +1 -0
- package/build/{errors → src/errors}/EntityError.d.ts +1 -1
- package/build/{errors → src/errors}/EntityError.js +2 -2
- package/build/src/errors/EntityError.js.map +1 -0
- package/build/{errors → src/errors}/EntityInvalidFieldValueError.d.ts +5 -5
- package/build/src/errors/EntityInvalidFieldValueError.js +13 -0
- package/build/src/errors/EntityInvalidFieldValueError.js.map +1 -0
- package/build/{errors → src/errors}/EntityNotAuthorizedError.d.ts +4 -4
- package/build/src/errors/EntityNotAuthorizedError.js +16 -0
- package/build/src/errors/EntityNotAuthorizedError.js.map +1 -0
- package/build/{errors → src/errors}/EntityNotFoundError.d.ts +5 -5
- package/build/src/errors/EntityNotFoundError.js +18 -0
- package/build/src/errors/EntityNotFoundError.js.map +1 -0
- package/build/src/index.d.ts +76 -0
- package/build/src/index.js +94 -0
- package/build/src/index.js.map +1 -0
- package/build/{internal → src/internal}/CompositeFieldHolder.d.ts +1 -1
- package/build/src/internal/CompositeFieldHolder.js.map +1 -0
- package/build/src/internal/CompositeFieldValueMap.js.map +1 -0
- package/build/{internal → src/internal}/EntityDataManager.d.ts +5 -5
- package/build/{internal → src/internal}/EntityDataManager.js +2 -1
- package/build/src/internal/EntityDataManager.js.map +1 -0
- package/build/{internal → src/internal}/EntityFieldTransformationUtils.d.ts +1 -1
- package/build/src/internal/EntityFieldTransformationUtils.js.map +1 -0
- package/build/{internal → src/internal}/EntityLoadInterfaces.d.ts +1 -1
- package/build/src/internal/EntityLoadInterfaces.js.map +1 -0
- package/build/{internal → src/internal}/EntityTableDataCoordinator.d.ts +9 -9
- package/build/{internal → src/internal}/EntityTableDataCoordinator.js +5 -7
- package/build/{internal → src/internal}/EntityTableDataCoordinator.js.map +1 -1
- package/build/{internal → src/internal}/ReadThroughEntityCache.d.ts +3 -3
- package/build/{internal → src/internal}/ReadThroughEntityCache.js +2 -2
- package/build/src/internal/ReadThroughEntityCache.js.map +1 -0
- package/build/{internal → src/internal}/SingleFieldHolder.d.ts +1 -1
- package/build/src/internal/SingleFieldHolder.js.map +1 -0
- package/build/{metrics → src/metrics}/EntityMetricsUtils.d.ts +1 -1
- package/build/src/metrics/EntityMetricsUtils.js.map +1 -0
- package/build/{metrics → src/metrics}/IEntityMetricsAdapter.d.ts +1 -1
- package/build/src/metrics/IEntityMetricsAdapter.js.map +1 -0
- package/build/{metrics → src/metrics}/NoOpEntityMetricsAdapter.d.ts +2 -2
- package/build/{metrics → src/metrics}/NoOpEntityMetricsAdapter.js +2 -1
- package/build/src/metrics/NoOpEntityMetricsAdapter.js.map +1 -0
- package/build/{rules → src/rules}/AlwaysAllowPrivacyPolicyRule.d.ts +4 -4
- package/build/src/rules/AlwaysAllowPrivacyPolicyRule.js +14 -0
- package/build/src/rules/AlwaysAllowPrivacyPolicyRule.js.map +1 -0
- package/build/{rules → src/rules}/AlwaysDenyPrivacyPolicyRule.d.ts +4 -4
- package/build/src/rules/AlwaysDenyPrivacyPolicyRule.js +14 -0
- package/build/src/rules/AlwaysDenyPrivacyPolicyRule.js.map +1 -0
- package/build/{rules → src/rules}/AlwaysSkipPrivacyPolicyRule.d.ts +4 -4
- package/build/src/rules/AlwaysSkipPrivacyPolicyRule.js +14 -0
- package/build/src/rules/AlwaysSkipPrivacyPolicyRule.js.map +1 -0
- package/build/{rules → src/rules}/PrivacyPolicyRule.d.ts +3 -3
- package/build/{rules → src/rules}/PrivacyPolicyRule.js +2 -2
- package/build/src/rules/PrivacyPolicyRule.js.map +1 -0
- package/build/{utils → src/utils}/EntityCreationUtils.d.ts +3 -3
- package/build/{utils → src/utils}/EntityCreationUtils.js +2 -5
- package/build/{utils → src/utils}/EntityCreationUtils.js.map +1 -1
- package/build/{utils → src/utils}/EntityPrivacyUtils.d.ts +4 -4
- package/build/{utils → src/utils}/EntityPrivacyUtils.js +4 -7
- package/build/{utils → src/utils}/EntityPrivacyUtils.js.map +1 -1
- package/build/src/utils/collections/SerializableKeyMap.js.map +1 -0
- package/build/src/utils/collections/maps.js.map +1 -0
- package/build/src/utils/collections/sets.js.map +1 -0
- package/build/{utils → src/utils}/mergeEntityMutationTriggerConfigurations.d.ts +3 -3
- package/build/src/utils/mergeEntityMutationTriggerConfigurations.js.map +1 -0
- package/package.json +14 -24
- package/src/AuthorizationResultBasedEntityAssociationLoader.ts +4 -4
- package/src/AuthorizationResultBasedEntityLoader.ts +13 -12
- package/src/AuthorizationResultBasedEntityMutator.ts +78 -63
- package/src/ComposedEntityCacheAdapter.ts +3 -3
- package/src/ComposedSecondaryEntityCache.ts +1 -1
- package/src/EnforcingEntityAssociationLoader.ts +6 -5
- package/src/EnforcingEntityCreator.ts +4 -4
- package/src/EnforcingEntityDeleter.ts +4 -4
- package/src/EnforcingEntityLoader.ts +5 -5
- package/src/EnforcingEntityUpdater.ts +4 -4
- package/src/Entity.ts +10 -10
- package/src/EntityAssociationLoader.ts +5 -5
- package/src/EntityCompanion.ts +10 -10
- package/src/EntityCompanionProvider.ts +13 -13
- package/src/EntityConfiguration.ts +3 -3
- package/src/EntityCreator.ts +5 -5
- package/src/EntityDatabaseAdapter.ts +3 -3
- package/src/EntityDeleter.ts +6 -6
- package/src/EntityFieldDefinition.ts +3 -3
- package/src/EntityFields.ts +13 -0
- package/src/EntityLoader.ts +7 -7
- package/src/EntityLoaderFactory.ts +9 -9
- package/src/EntityLoaderUtils.ts +7 -7
- package/src/EntityMutationInfo.ts +2 -2
- package/src/EntityMutationTriggerConfiguration.ts +3 -3
- package/src/EntityMutationValidator.ts +3 -3
- package/src/EntityMutatorFactory.ts +17 -12
- package/src/EntityPrivacyPolicy.ts +7 -6
- package/src/EntityQueryContext.ts +1 -1
- package/src/EntityQueryContextProvider.ts +3 -3
- package/src/EntitySecondaryCacheLoader.ts +5 -5
- package/src/EntityUpdater.ts +6 -6
- package/src/GenericEntityCacheAdapter.ts +3 -3
- package/src/GenericSecondaryEntityCache.ts +2 -2
- package/src/IEntityCacheAdapter.ts +1 -1
- package/src/IEntityCacheAdapterProvider.ts +3 -3
- package/src/IEntityDatabaseAdapterProvider.ts +3 -3
- package/src/IEntityGenericCacher.ts +1 -1
- package/src/ReadonlyEntity.ts +10 -10
- package/src/ViewerContext.ts +6 -6
- package/src/ViewerScopedEntityCompanion.ts +9 -9
- package/src/ViewerScopedEntityCompanionProvider.ts +6 -6
- package/src/ViewerScopedEntityLoaderFactory.ts +6 -6
- package/src/ViewerScopedEntityMutatorFactory.ts +11 -8
- package/src/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.ts +5 -4
- package/src/__tests__/AuthorizationResultBasedEntityLoader-constructor-test.ts +14 -18
- package/src/__tests__/AuthorizationResultBasedEntityLoader-test.ts +18 -16
- package/src/__tests__/ComposedCacheAdapter-test.ts +5 -3
- package/src/__tests__/ComposedSecondaryEntityCache-test.ts +2 -1
- package/src/__tests__/EnforcingEntityAssociationLoader-test.ts +4 -3
- package/src/__tests__/EnforcingEntityLoader-test.ts +4 -3
- package/src/__tests__/Entity-test.ts +8 -6
- package/src/__tests__/EntityAssociationLoader-test.ts +7 -5
- package/src/__tests__/EntityCommonUseCases-test.ts +10 -9
- package/src/__tests__/EntityCompanion-test.ts +13 -11
- package/src/__tests__/EntityCompanionProvider-test.ts +7 -5
- package/src/__tests__/EntityConfiguration-test.ts +3 -1
- package/src/__tests__/EntityDatabaseAdapter-test.ts +9 -7
- package/src/__tests__/EntityEdges-test.ts +10 -8
- package/src/__tests__/EntityFields-test.ts +15 -7
- package/src/__tests__/EntityLoader-test.ts +8 -6
- package/src/__tests__/EntityMutator-MutationCacheConsistency-test.ts +8 -6
- package/src/__tests__/EntityMutator-SingleCompositeFieldCacheConsistency-test.ts +5 -3
- package/src/__tests__/EntityMutator-test.ts +250 -45
- package/src/__tests__/EntityPrivacyPolicy-test.ts +19 -16
- package/src/__tests__/EntityQueryContext-test.ts +7 -6
- package/src/__tests__/EntitySecondaryCacheLoader-test.ts +5 -3
- package/src/__tests__/EntitySelfReferentialEdges-test.ts +7 -5
- package/src/__tests__/GenericEntityCacheAdapter-test.ts +4 -3
- package/src/__tests__/ReadonlyEntity-test.ts +10 -9
- package/src/__tests__/ViewerContext-test.ts +3 -1
- package/src/__tests__/ViewerScopedEntityCompanion-test.ts +10 -8
- package/src/__tests__/ViewerScopedEntityCompanionProvider-test.ts +7 -6
- package/src/__tests__/ViewerScopedEntityLoaderFactory-test.ts +5 -4
- package/src/__tests__/ViewerScopedEntityMutatorFactory-test.ts +8 -6
- package/src/__tests__/cases/TwoEntitySameTableDisjointRows-test.ts +15 -13
- package/src/__tests__/cases/TwoEntitySameTableOverlappingRows-test.ts +7 -5
- package/src/__tests__/entityUtils-test.ts +3 -2
- package/src/errors/EntityCacheAdapterError.ts +2 -2
- package/src/errors/EntityDatabaseAdapterError.ts +2 -2
- package/src/errors/EntityError.ts +1 -1
- package/src/errors/EntityInvalidFieldValueError.ts +5 -5
- package/src/errors/EntityNotAuthorizedError.ts +4 -4
- package/src/errors/EntityNotFoundError.ts +5 -5
- package/src/errors/__tests__/EntityDatabaseAdapterError-test.ts +6 -3
- package/src/index.ts +39 -54
- package/src/internal/CompositeFieldHolder.ts +2 -1
- package/src/internal/EntityDataManager.ts +7 -5
- package/src/internal/EntityFieldTransformationUtils.ts +1 -1
- package/src/internal/EntityLoadInterfaces.ts +1 -1
- package/src/internal/EntityTableDataCoordinator.ts +10 -10
- package/src/internal/ReadThroughEntityCache.ts +3 -3
- package/src/internal/SingleFieldHolder.ts +1 -1
- package/src/internal/__tests__/CompositeFieldHolder-test.ts +2 -0
- package/src/internal/__tests__/CompositeFieldValueMap-test.ts +2 -0
- package/src/internal/__tests__/EntityDataManager-test.ts +34 -31
- package/src/internal/__tests__/EntityFieldTransformationUtils-test.ts +5 -3
- package/src/internal/__tests__/ReadThroughEntityCache-test.ts +5 -4
- package/src/metrics/EntityMetricsUtils.ts +3 -2
- package/src/metrics/IEntityMetricsAdapter.ts +1 -1
- package/src/metrics/NoOpEntityMetricsAdapter.ts +3 -2
- package/src/rules/AlwaysAllowPrivacyPolicyRule.ts +4 -4
- package/src/rules/AlwaysDenyPrivacyPolicyRule.ts +4 -4
- package/src/rules/AlwaysSkipPrivacyPolicyRule.ts +4 -4
- package/src/rules/PrivacyPolicyRule.ts +3 -3
- package/src/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.ts +3 -3
- package/src/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.ts +3 -3
- package/src/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.ts +3 -3
- package/src/utils/EntityCreationUtils.ts +4 -4
- package/src/utils/EntityPrivacyUtils.ts +5 -5
- package/src/utils/__testfixtures__/PrivacyPolicyRuleTestUtils.ts +5 -3
- package/src/utils/__testfixtures__/SimpleTestEntity.ts +6 -6
- package/src/utils/__testfixtures__/StubCacheAdapter.ts +4 -4
- package/src/utils/__testfixtures__/StubDatabaseAdapter.ts +8 -7
- package/src/utils/__testfixtures__/StubDatabaseAdapterProvider.ts +5 -5
- package/src/utils/__testfixtures__/StubQueryContextProvider.ts +2 -2
- package/src/utils/__testfixtures__/TestEntity.ts +7 -7
- package/src/utils/__testfixtures__/TestEntity2.ts +6 -6
- package/src/utils/__testfixtures__/TestEntityWithMutationTriggers.ts +6 -10
- package/src/utils/__testfixtures__/TestViewerContext.ts +2 -2
- package/src/utils/__testfixtures__/createUnitTestEntityCompanionProvider.ts +5 -5
- package/src/utils/__testfixtures__/describeFieldTestCase.ts +3 -1
- package/src/utils/__tests__/EntityCreationUtils-test.ts +5 -3
- package/src/utils/__tests__/EntityPrivacyUtils-test.ts +15 -13
- package/src/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.ts +10 -8
- package/src/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.ts +2 -0
- package/src/utils/collections/__tests__/SerializableKeyMap-test.ts +2 -0
- package/src/utils/collections/__tests__/maps-test.ts +3 -1
- package/src/utils/collections/__tests__/sets-test.ts +2 -0
- package/src/utils/mergeEntityMutationTriggerConfigurations.ts +3 -3
- package/LICENSE +0 -21
- package/build/AuthorizationResultBasedEntityAssociationLoader.js.map +0 -1
- package/build/AuthorizationResultBasedEntityLoader.js.map +0 -1
- package/build/AuthorizationResultBasedEntityMutator.js.map +0 -1
- package/build/ComposedEntityCacheAdapter.js.map +0 -1
- package/build/ComposedSecondaryEntityCache.js.map +0 -1
- package/build/EnforcingEntityAssociationLoader.js.map +0 -1
- package/build/EnforcingEntityCreator.js.map +0 -1
- package/build/EnforcingEntityDeleter.js.map +0 -1
- package/build/EnforcingEntityLoader.js.map +0 -1
- package/build/EnforcingEntityUpdater.js.map +0 -1
- package/build/Entity.js.map +0 -1
- package/build/EntityAssociationLoader.js.map +0 -1
- package/build/EntityCompanion.js.map +0 -1
- package/build/EntityCompanionProvider.js.map +0 -1
- package/build/EntityConfiguration.js.map +0 -1
- package/build/EntityDatabaseAdapter.js.map +0 -1
- package/build/EntityFieldDefinition.js.map +0 -1
- package/build/EntityFields.js.map +0 -1
- package/build/EntityLoaderFactory.js +0 -31
- package/build/EntityLoaderFactory.js.map +0 -1
- package/build/EntityLoaderUtils.js.map +0 -1
- package/build/EntityMutationInfo.js.map +0 -1
- package/build/EntityMutationTriggerConfiguration.js.map +0 -1
- package/build/EntityMutationValidator.js.map +0 -1
- package/build/EntityMutatorFactory.js.map +0 -1
- package/build/EntityQueryContext.js.map +0 -1
- package/build/EntityQueryContextProvider.js.map +0 -1
- package/build/EntitySecondaryCacheLoader.js.map +0 -1
- package/build/GenericEntityCacheAdapter.js.map +0 -1
- package/build/GenericSecondaryEntityCache.js.map +0 -1
- package/build/IEntityCacheAdapter.js.map +0 -1
- package/build/IEntityCacheAdapterProvider.js.map +0 -1
- package/build/IEntityDatabaseAdapterProvider.js.map +0 -1
- package/build/IEntityGenericCacher.js.map +0 -1
- package/build/ReadonlyEntity.js.map +0 -1
- package/build/ViewerScopedEntityCompanionProvider.js.map +0 -1
- package/build/ViewerScopedEntityLoaderFactory.js.map +0 -1
- package/build/ViewerScopedEntityMutatorFactory.js.map +0 -1
- package/build/entityUtils.js.map +0 -1
- package/build/errors/EntityCacheAdapterError.js +0 -46
- package/build/errors/EntityCacheAdapterError.js.map +0 -1
- package/build/errors/EntityDatabaseAdapterError.js.map +0 -1
- package/build/errors/EntityError.js.map +0 -1
- package/build/errors/EntityInvalidFieldValueError.js +0 -45
- package/build/errors/EntityInvalidFieldValueError.js.map +0 -1
- package/build/errors/EntityNotAuthorizedError.js +0 -48
- package/build/errors/EntityNotAuthorizedError.js.map +0 -1
- package/build/errors/EntityNotFoundError.js +0 -50
- package/build/errors/EntityNotFoundError.js.map +0 -1
- package/build/index.d.ts +0 -91
- package/build/index.js +0 -155
- package/build/index.js.map +0 -1
- package/build/internal/CompositeFieldHolder.js.map +0 -1
- package/build/internal/CompositeFieldValueMap.js.map +0 -1
- package/build/internal/EntityDataManager.js.map +0 -1
- package/build/internal/EntityFieldTransformationUtils.js.map +0 -1
- package/build/internal/EntityLoadInterfaces.js.map +0 -1
- package/build/internal/ReadThroughEntityCache.js.map +0 -1
- package/build/internal/SingleFieldHolder.js.map +0 -1
- package/build/metrics/EntityMetricsUtils.js.map +0 -1
- package/build/metrics/IEntityMetricsAdapter.js.map +0 -1
- package/build/metrics/NoOpEntityMetricsAdapter.js.map +0 -1
- package/build/rules/AlwaysAllowPrivacyPolicyRule.js +0 -46
- package/build/rules/AlwaysAllowPrivacyPolicyRule.js.map +0 -1
- package/build/rules/AlwaysDenyPrivacyPolicyRule.js +0 -46
- package/build/rules/AlwaysDenyPrivacyPolicyRule.js.map +0 -1
- package/build/rules/AlwaysSkipPrivacyPolicyRule.js +0 -46
- package/build/rules/AlwaysSkipPrivacyPolicyRule.js.map +0 -1
- package/build/rules/PrivacyPolicyRule.js.map +0 -1
- package/build/tsconfig.build.tsbuildinfo +0 -1
- package/build/utils/collections/SerializableKeyMap.js.map +0 -1
- package/build/utils/collections/maps.js.map +0 -1
- package/build/utils/collections/sets.js.map +0 -1
- package/build/utils/mergeEntityMutationTriggerConfigurations.js.map +0 -1
- /package/build/{EntityFieldDefinition.js → src/EntityFieldDefinition.js} +0 -0
- /package/build/{EntityMutationInfo.js → src/EntityMutationInfo.js} +0 -0
- /package/build/{EntityMutationTriggerConfiguration.js → src/EntityMutationTriggerConfiguration.js} +0 -0
- /package/build/{EntityQueryContext.js → src/EntityQueryContext.js} +0 -0
- /package/build/{IEntityCacheAdapter.js → src/IEntityCacheAdapter.js} +0 -0
- /package/build/{IEntityCacheAdapterProvider.js → src/IEntityCacheAdapterProvider.js} +0 -0
- /package/build/{IEntityDatabaseAdapterProvider.js → src/IEntityDatabaseAdapterProvider.js} +0 -0
- /package/build/{IEntityGenericCacher.js → src/IEntityGenericCacher.js} +0 -0
- /package/build/{entityUtils.d.ts → src/entityUtils.d.ts} +0 -0
- /package/build/{entityUtils.js → src/entityUtils.js} +0 -0
- /package/build/{internal → src/internal}/CompositeFieldHolder.js +0 -0
- /package/build/{internal → src/internal}/CompositeFieldValueMap.d.ts +0 -0
- /package/build/{internal → src/internal}/CompositeFieldValueMap.js +0 -0
- /package/build/{internal → src/internal}/EntityFieldTransformationUtils.js +0 -0
- /package/build/{internal → src/internal}/EntityLoadInterfaces.js +0 -0
- /package/build/{internal → src/internal}/SingleFieldHolder.js +0 -0
- /package/build/{metrics → src/metrics}/EntityMetricsUtils.js +0 -0
- /package/build/{metrics → src/metrics}/IEntityMetricsAdapter.js +0 -0
- /package/build/{utils → src/utils}/collections/SerializableKeyMap.d.ts +0 -0
- /package/build/{utils → src/utils}/collections/SerializableKeyMap.js +0 -0
- /package/build/{utils → src/utils}/collections/maps.d.ts +0 -0
- /package/build/{utils → src/utils}/collections/maps.js +0 -0
- /package/build/{utils → src/utils}/collections/sets.d.ts +0 -0
- /package/build/{utils → src/utils}/collections/sets.js +0 -0
- /package/build/{utils → src/utils}/mergeEntityMutationTriggerConfigurations.js +0 -0
package/src/ReadonlyEntity.ts
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import invariant from 'invariant';
|
|
2
2
|
|
|
3
|
-
import AuthorizationResultBasedEntityAssociationLoader from './AuthorizationResultBasedEntityAssociationLoader';
|
|
4
|
-
import AuthorizationResultBasedEntityLoader from './AuthorizationResultBasedEntityLoader';
|
|
5
|
-
import EnforcingEntityAssociationLoader from './EnforcingEntityAssociationLoader';
|
|
6
|
-
import EnforcingEntityLoader from './EnforcingEntityLoader';
|
|
3
|
+
import { AuthorizationResultBasedEntityAssociationLoader } from './AuthorizationResultBasedEntityAssociationLoader';
|
|
4
|
+
import { AuthorizationResultBasedEntityLoader } from './AuthorizationResultBasedEntityLoader';
|
|
5
|
+
import { EnforcingEntityAssociationLoader } from './EnforcingEntityAssociationLoader';
|
|
6
|
+
import { EnforcingEntityLoader } from './EnforcingEntityLoader';
|
|
7
7
|
import { IEntityClass } from './Entity';
|
|
8
|
-
import EntityAssociationLoader from './EntityAssociationLoader';
|
|
9
|
-
import EntityLoader from './EntityLoader';
|
|
10
|
-
import EntityLoaderUtils from './EntityLoaderUtils';
|
|
11
|
-
import EntityPrivacyPolicy from './EntityPrivacyPolicy';
|
|
8
|
+
import { EntityAssociationLoader } from './EntityAssociationLoader';
|
|
9
|
+
import { EntityLoader } from './EntityLoader';
|
|
10
|
+
import { EntityLoaderUtils } from './EntityLoaderUtils';
|
|
11
|
+
import { EntityPrivacyPolicy } from './EntityPrivacyPolicy';
|
|
12
12
|
import { EntityQueryContext } from './EntityQueryContext';
|
|
13
|
-
import ViewerContext from './ViewerContext';
|
|
13
|
+
import { ViewerContext } from './ViewerContext';
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
16
|
* A readonly entity exposes only the read functionality of an Entity. Used as the base
|
|
@@ -20,7 +20,7 @@ import ViewerContext from './ViewerContext';
|
|
|
20
20
|
* - Entities representing SQL views.
|
|
21
21
|
* - Entities representing immutable tables.
|
|
22
22
|
*/
|
|
23
|
-
export
|
|
23
|
+
export abstract class ReadonlyEntity<
|
|
24
24
|
TFields extends Record<string, any>,
|
|
25
25
|
TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>,
|
|
26
26
|
TViewerContext extends ViewerContext,
|
package/src/ViewerContext.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { IEntityClass } from './Entity';
|
|
2
|
-
import
|
|
3
|
-
import EntityPrivacyPolicy from './EntityPrivacyPolicy';
|
|
2
|
+
import { DatabaseAdapterFlavor, EntityCompanionProvider } from './EntityCompanionProvider';
|
|
3
|
+
import { EntityPrivacyPolicy } from './EntityPrivacyPolicy';
|
|
4
4
|
import {
|
|
5
5
|
EntityQueryContext,
|
|
6
6
|
EntityTransactionalQueryContext,
|
|
7
7
|
TransactionConfig,
|
|
8
8
|
} from './EntityQueryContext';
|
|
9
|
-
import ReadonlyEntity from './ReadonlyEntity';
|
|
10
|
-
import ViewerScopedEntityCompanion from './ViewerScopedEntityCompanion';
|
|
11
|
-
import ViewerScopedEntityCompanionProvider from './ViewerScopedEntityCompanionProvider';
|
|
9
|
+
import { ReadonlyEntity } from './ReadonlyEntity';
|
|
10
|
+
import { ViewerScopedEntityCompanion } from './ViewerScopedEntityCompanion';
|
|
11
|
+
import { ViewerScopedEntityCompanionProvider } from './ViewerScopedEntityCompanionProvider';
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* A viewer context encapsulates all information necessary to evaluate an EntityPrivacyPolicy.
|
|
@@ -16,7 +16,7 @@ import ViewerScopedEntityCompanionProvider from './ViewerScopedEntityCompanionPr
|
|
|
16
16
|
* In combination with an EntityCompanionProvider, a viewer context is the
|
|
17
17
|
* entry point into the Entity framework.
|
|
18
18
|
*/
|
|
19
|
-
export
|
|
19
|
+
export class ViewerContext {
|
|
20
20
|
private readonly viewerScopedEntityCompanionProvider: ViewerScopedEntityCompanionProvider;
|
|
21
21
|
|
|
22
22
|
constructor(public readonly entityCompanionProvider: EntityCompanionProvider) {
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import EntityCompanion from './EntityCompanion';
|
|
2
|
-
import EntityPrivacyPolicy from './EntityPrivacyPolicy';
|
|
3
|
-
import EntityQueryContextProvider from './EntityQueryContextProvider';
|
|
4
|
-
import ReadonlyEntity from './ReadonlyEntity';
|
|
5
|
-
import ViewerContext from './ViewerContext';
|
|
6
|
-
import ViewerScopedEntityLoaderFactory from './ViewerScopedEntityLoaderFactory';
|
|
7
|
-
import ViewerScopedEntityMutatorFactory from './ViewerScopedEntityMutatorFactory';
|
|
8
|
-
import IEntityMetricsAdapter from './metrics/IEntityMetricsAdapter';
|
|
1
|
+
import { EntityCompanion } from './EntityCompanion';
|
|
2
|
+
import { EntityPrivacyPolicy } from './EntityPrivacyPolicy';
|
|
3
|
+
import { EntityQueryContextProvider } from './EntityQueryContextProvider';
|
|
4
|
+
import { ReadonlyEntity } from './ReadonlyEntity';
|
|
5
|
+
import { ViewerContext } from './ViewerContext';
|
|
6
|
+
import { ViewerScopedEntityLoaderFactory } from './ViewerScopedEntityLoaderFactory';
|
|
7
|
+
import { ViewerScopedEntityMutatorFactory } from './ViewerScopedEntityMutatorFactory';
|
|
8
|
+
import { IEntityMetricsAdapter } from './metrics/IEntityMetricsAdapter';
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* Provides a simpler API for loading and mutating entities by injecting the ViewerContext
|
|
12
12
|
* from the viewer-scoped entity companion provider.
|
|
13
13
|
*/
|
|
14
|
-
export
|
|
14
|
+
export class ViewerScopedEntityCompanion<
|
|
15
15
|
TFields extends Record<string, any>,
|
|
16
16
|
TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>,
|
|
17
17
|
TViewerContext extends ViewerContext,
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { IEntityClass } from './Entity';
|
|
2
|
-
import EntityCompanionProvider from './EntityCompanionProvider';
|
|
3
|
-
import EntityPrivacyPolicy from './EntityPrivacyPolicy';
|
|
4
|
-
import ReadonlyEntity from './ReadonlyEntity';
|
|
5
|
-
import ViewerContext from './ViewerContext';
|
|
6
|
-
import ViewerScopedEntityCompanion from './ViewerScopedEntityCompanion';
|
|
2
|
+
import { EntityCompanionProvider } from './EntityCompanionProvider';
|
|
3
|
+
import { EntityPrivacyPolicy } from './EntityPrivacyPolicy';
|
|
4
|
+
import { ReadonlyEntity } from './ReadonlyEntity';
|
|
5
|
+
import { ViewerContext } from './ViewerContext';
|
|
6
|
+
import { ViewerScopedEntityCompanion } from './ViewerScopedEntityCompanion';
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Provides viewer-scoped entity companions providers for a simpler API.
|
|
10
10
|
*/
|
|
11
|
-
export
|
|
11
|
+
export class ViewerScopedEntityCompanionProvider {
|
|
12
12
|
constructor(
|
|
13
13
|
private readonly entityCompanionProvider: EntityCompanionProvider,
|
|
14
14
|
private readonly viewerContext: ViewerContext,
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import AuthorizationResultBasedEntityLoader from './AuthorizationResultBasedEntityLoader';
|
|
2
|
-
import EntityLoaderFactory from './EntityLoaderFactory';
|
|
3
|
-
import EntityPrivacyPolicy,
|
|
1
|
+
import { AuthorizationResultBasedEntityLoader } from './AuthorizationResultBasedEntityLoader';
|
|
2
|
+
import { EntityLoaderFactory } from './EntityLoaderFactory';
|
|
3
|
+
import { EntityPrivacyPolicy, EntityPrivacyPolicyEvaluationContext } from './EntityPrivacyPolicy';
|
|
4
4
|
import { EntityQueryContext } from './EntityQueryContext';
|
|
5
|
-
import ReadonlyEntity from './ReadonlyEntity';
|
|
6
|
-
import ViewerContext from './ViewerContext';
|
|
5
|
+
import { ReadonlyEntity } from './ReadonlyEntity';
|
|
6
|
+
import { ViewerContext } from './ViewerContext';
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Provides a cleaner API for loading entities by passing through the ViewerContext.
|
|
10
10
|
*/
|
|
11
|
-
export
|
|
11
|
+
export class ViewerScopedEntityLoaderFactory<
|
|
12
12
|
TFields extends Record<string, any>,
|
|
13
13
|
TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>,
|
|
14
14
|
TViewerContext extends ViewerContext,
|
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
import {
|
|
2
2
|
AuthorizationResultBasedCreateMutator,
|
|
3
|
-
AuthorizationResultBasedUpdateMutator,
|
|
4
3
|
AuthorizationResultBasedDeleteMutator,
|
|
4
|
+
AuthorizationResultBasedUpdateMutator,
|
|
5
5
|
} from './AuthorizationResultBasedEntityMutator';
|
|
6
|
-
import
|
|
7
|
-
import
|
|
6
|
+
import { EntityCascadingDeletionInfo } from './EntityMutationInfo';
|
|
7
|
+
import { EntityMutatorFactory } from './EntityMutatorFactory';
|
|
8
|
+
import { EntityPrivacyPolicy } from './EntityPrivacyPolicy';
|
|
8
9
|
import { EntityQueryContext } from './EntityQueryContext';
|
|
9
|
-
import ReadonlyEntity from './ReadonlyEntity';
|
|
10
|
-
import ViewerContext from './ViewerContext';
|
|
10
|
+
import { ReadonlyEntity } from './ReadonlyEntity';
|
|
11
|
+
import { ViewerContext } from './ViewerContext';
|
|
11
12
|
|
|
12
13
|
/**
|
|
13
14
|
* Provides a cleaner API for mutating entities by passing through the ViewerContext.
|
|
14
15
|
*/
|
|
15
|
-
export
|
|
16
|
+
export class ViewerScopedEntityMutatorFactory<
|
|
16
17
|
TFields extends Record<string, any>,
|
|
17
18
|
TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>,
|
|
18
19
|
TViewerContext extends ViewerContext,
|
|
@@ -54,6 +55,7 @@ export default class ViewerScopedEntityMutatorFactory<
|
|
|
54
55
|
forUpdate(
|
|
55
56
|
existingEntity: TEntity,
|
|
56
57
|
queryContext: EntityQueryContext,
|
|
58
|
+
cascadingDeleteCause: EntityCascadingDeletionInfo | null,
|
|
57
59
|
): AuthorizationResultBasedUpdateMutator<
|
|
58
60
|
TFields,
|
|
59
61
|
TIDField,
|
|
@@ -62,12 +64,13 @@ export default class ViewerScopedEntityMutatorFactory<
|
|
|
62
64
|
TPrivacyPolicy,
|
|
63
65
|
TSelectedFields
|
|
64
66
|
> {
|
|
65
|
-
return this.entityMutatorFactory.forUpdate(existingEntity, queryContext);
|
|
67
|
+
return this.entityMutatorFactory.forUpdate(existingEntity, queryContext, cascadingDeleteCause);
|
|
66
68
|
}
|
|
67
69
|
|
|
68
70
|
forDelete(
|
|
69
71
|
existingEntity: TEntity,
|
|
70
72
|
queryContext: EntityQueryContext,
|
|
73
|
+
cascadingDeleteCause: EntityCascadingDeletionInfo | null,
|
|
71
74
|
): AuthorizationResultBasedDeleteMutator<
|
|
72
75
|
TFields,
|
|
73
76
|
TIDField,
|
|
@@ -76,6 +79,6 @@ export default class ViewerScopedEntityMutatorFactory<
|
|
|
76
79
|
TPrivacyPolicy,
|
|
77
80
|
TSelectedFields
|
|
78
81
|
> {
|
|
79
|
-
return this.entityMutatorFactory.forDelete(existingEntity, queryContext);
|
|
82
|
+
return this.entityMutatorFactory.forDelete(existingEntity, queryContext, cascadingDeleteCause);
|
|
80
83
|
}
|
|
81
84
|
}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { enforceAsyncResult } from '@expo/results';
|
|
2
|
+
import { describe, expect, it } from '@jest/globals';
|
|
2
3
|
import { v4 as uuidv4 } from 'uuid';
|
|
3
4
|
|
|
4
|
-
import AuthorizationResultBasedEntityAssociationLoader from '../AuthorizationResultBasedEntityAssociationLoader';
|
|
5
|
+
import { AuthorizationResultBasedEntityAssociationLoader } from '../AuthorizationResultBasedEntityAssociationLoader';
|
|
5
6
|
import { enforceResultsAsync } from '../entityUtils';
|
|
6
|
-
import TestEntity from '../utils/__testfixtures__/TestEntity';
|
|
7
|
-
import TestEntity2 from '../utils/__testfixtures__/TestEntity2';
|
|
8
|
-
import TestViewerContext from '../utils/__testfixtures__/TestViewerContext';
|
|
7
|
+
import { TestEntity } from '../utils/__testfixtures__/TestEntity';
|
|
8
|
+
import { TestEntity2 } from '../utils/__testfixtures__/TestEntity2';
|
|
9
|
+
import { TestViewerContext } from '../utils/__testfixtures__/TestViewerContext';
|
|
9
10
|
import { createUnitTestEntityCompanionProvider } from '../utils/__testfixtures__/createUnitTestEntityCompanionProvider';
|
|
10
11
|
|
|
11
12
|
describe(AuthorizationResultBasedEntityAssociationLoader, () => {
|
|
@@ -1,20 +1,21 @@
|
|
|
1
|
+
import { describe, expect, it } from '@jest/globals';
|
|
1
2
|
import { instance, mock } from 'ts-mockito';
|
|
2
3
|
|
|
3
|
-
import AuthorizationResultBasedEntityLoader from '../AuthorizationResultBasedEntityLoader';
|
|
4
|
-
import Entity from '../Entity';
|
|
4
|
+
import { AuthorizationResultBasedEntityLoader } from '../AuthorizationResultBasedEntityLoader';
|
|
5
|
+
import { Entity } from '../Entity';
|
|
5
6
|
import { EntityCompanionDefinition } from '../EntityCompanionProvider';
|
|
6
|
-
import EntityConfiguration from '../EntityConfiguration';
|
|
7
|
+
import { EntityConfiguration } from '../EntityConfiguration';
|
|
7
8
|
import { StringField } from '../EntityFields';
|
|
8
|
-
import EntityLoaderUtils from '../EntityLoaderUtils';
|
|
9
|
-
import EntityPrivacyPolicy,
|
|
10
|
-
import ViewerContext from '../ViewerContext';
|
|
11
|
-
import EntityDataManager from '../internal/EntityDataManager';
|
|
12
|
-
import ReadThroughEntityCache from '../internal/ReadThroughEntityCache';
|
|
13
|
-
import IEntityMetricsAdapter from '../metrics/IEntityMetricsAdapter';
|
|
14
|
-
import AlwaysAllowPrivacyPolicyRule from '../rules/AlwaysAllowPrivacyPolicyRule';
|
|
9
|
+
import { EntityLoaderUtils } from '../EntityLoaderUtils';
|
|
10
|
+
import { EntityPrivacyPolicy, EntityPrivacyPolicyEvaluationContext } from '../EntityPrivacyPolicy';
|
|
11
|
+
import { ViewerContext } from '../ViewerContext';
|
|
12
|
+
import { EntityDataManager } from '../internal/EntityDataManager';
|
|
13
|
+
import { ReadThroughEntityCache } from '../internal/ReadThroughEntityCache';
|
|
14
|
+
import { IEntityMetricsAdapter } from '../metrics/IEntityMetricsAdapter';
|
|
15
|
+
import { AlwaysAllowPrivacyPolicyRule } from '../rules/AlwaysAllowPrivacyPolicyRule';
|
|
15
16
|
import { NoCacheStubCacheAdapterProvider } from '../utils/__testfixtures__/StubCacheAdapter';
|
|
16
|
-
import StubDatabaseAdapter from '../utils/__testfixtures__/StubDatabaseAdapter';
|
|
17
|
-
import StubQueryContextProvider from '../utils/__testfixtures__/StubQueryContextProvider';
|
|
17
|
+
import { StubDatabaseAdapter } from '../utils/__testfixtures__/StubDatabaseAdapter';
|
|
18
|
+
import { StubQueryContextProvider } from '../utils/__testfixtures__/StubQueryContextProvider';
|
|
18
19
|
|
|
19
20
|
export type TestFields = {
|
|
20
21
|
id: string;
|
|
@@ -83,12 +84,7 @@ export class TestEntityPrivacyPolicy extends EntityPrivacyPolicy<
|
|
|
83
84
|
const ID_SENTINEL_THROW_LITERAL = 'throw_literal';
|
|
84
85
|
const ID_SENTINEL_THROW_ERROR = 'throw_error';
|
|
85
86
|
|
|
86
|
-
export
|
|
87
|
-
TestFields,
|
|
88
|
-
'id',
|
|
89
|
-
ViewerContext,
|
|
90
|
-
TestFieldSelection
|
|
91
|
-
> {
|
|
87
|
+
export class TestEntity extends Entity<TestFields, 'id', ViewerContext, TestFieldSelection> {
|
|
92
88
|
constructor(constructorParams: {
|
|
93
89
|
viewerContext: ViewerContext;
|
|
94
90
|
id: string;
|
|
@@ -1,30 +1,32 @@
|
|
|
1
1
|
import { enforceAsyncResult } from '@expo/results';
|
|
2
|
-
import {
|
|
2
|
+
import { describe, expect, it } from '@jest/globals';
|
|
3
|
+
import { anyOfClass, anything, instance, mock, spy, verify, when } from 'ts-mockito';
|
|
3
4
|
import { v4 as uuidv4 } from 'uuid';
|
|
4
5
|
|
|
5
|
-
import AuthorizationResultBasedEntityLoader from '../AuthorizationResultBasedEntityLoader';
|
|
6
|
+
import { AuthorizationResultBasedEntityLoader } from '../AuthorizationResultBasedEntityLoader';
|
|
6
7
|
import { OrderByOrdering } from '../EntityDatabaseAdapter';
|
|
7
|
-
import EntityLoaderUtils from '../EntityLoaderUtils';
|
|
8
|
+
import { EntityLoaderUtils } from '../EntityLoaderUtils';
|
|
8
9
|
import { EntityPrivacyPolicyEvaluationContext } from '../EntityPrivacyPolicy';
|
|
9
|
-
import ViewerContext from '../ViewerContext';
|
|
10
|
+
import { ViewerContext } from '../ViewerContext';
|
|
10
11
|
import { enforceResultsAsync } from '../entityUtils';
|
|
11
|
-
import EntityNotFoundError from '../errors/EntityNotFoundError';
|
|
12
|
+
import { EntityNotFoundError } from '../errors/EntityNotFoundError';
|
|
12
13
|
import { CompositeFieldHolder, CompositeFieldValueHolder } from '../internal/CompositeFieldHolder';
|
|
13
|
-
import EntityDataManager from '../internal/EntityDataManager';
|
|
14
|
-
import ReadThroughEntityCache from '../internal/ReadThroughEntityCache';
|
|
14
|
+
import { EntityDataManager } from '../internal/EntityDataManager';
|
|
15
|
+
import { ReadThroughEntityCache } from '../internal/ReadThroughEntityCache';
|
|
15
16
|
import {
|
|
16
17
|
SingleFieldHolder,
|
|
17
18
|
SingleFieldValueHolder,
|
|
18
19
|
SingleFieldValueHolderMap,
|
|
19
20
|
} from '../internal/SingleFieldHolder';
|
|
20
|
-
import IEntityMetricsAdapter from '../metrics/IEntityMetricsAdapter';
|
|
21
|
+
import { IEntityMetricsAdapter } from '../metrics/IEntityMetricsAdapter';
|
|
21
22
|
import { NoCacheStubCacheAdapterProvider } from '../utils/__testfixtures__/StubCacheAdapter';
|
|
22
|
-
import StubDatabaseAdapter from '../utils/__testfixtures__/StubDatabaseAdapter';
|
|
23
|
-
import StubQueryContextProvider from '../utils/__testfixtures__/StubQueryContextProvider';
|
|
23
|
+
import { StubDatabaseAdapter } from '../utils/__testfixtures__/StubDatabaseAdapter';
|
|
24
|
+
import { StubQueryContextProvider } from '../utils/__testfixtures__/StubQueryContextProvider';
|
|
24
25
|
import { deepEqualEntityAware } from '../utils/__testfixtures__/TSMockitoExtensions';
|
|
25
|
-
import
|
|
26
|
-
|
|
26
|
+
import {
|
|
27
|
+
TestEntity,
|
|
27
28
|
TestEntityPrivacyPolicy,
|
|
29
|
+
TestFields,
|
|
28
30
|
testEntityConfiguration,
|
|
29
31
|
} from '../utils/__testfixtures__/TestEntity';
|
|
30
32
|
|
|
@@ -134,7 +136,7 @@ describe(AuthorizationResultBasedEntityLoader, () => {
|
|
|
134
136
|
id2,
|
|
135
137
|
]);
|
|
136
138
|
|
|
137
|
-
await expect(entityLoader.loadByFieldEqualingAsync('stringField', 'huh')).rejects.
|
|
139
|
+
await expect(entityLoader.loadByFieldEqualingAsync('stringField', 'huh')).rejects.toThrow(
|
|
138
140
|
'loadByFieldEqualing: Multiple entities of type TestEntity found for stringField=huh',
|
|
139
141
|
);
|
|
140
142
|
|
|
@@ -150,7 +152,7 @@ describe(AuthorizationResultBasedEntityLoader, () => {
|
|
|
150
152
|
EntityNotFoundError,
|
|
151
153
|
);
|
|
152
154
|
|
|
153
|
-
await expect(entityLoader.loadByIDAsync('not-a-uuid')).rejects.
|
|
155
|
+
await expect(entityLoader.loadByIDAsync('not-a-uuid')).rejects.toThrow(
|
|
154
156
|
'Entity field not valid: TestEntity (customIdField = not-a-uuid)',
|
|
155
157
|
);
|
|
156
158
|
});
|
|
@@ -295,7 +297,7 @@ describe(AuthorizationResultBasedEntityLoader, () => {
|
|
|
295
297
|
stringField: 'huh',
|
|
296
298
|
intField: 5,
|
|
297
299
|
}),
|
|
298
|
-
).rejects.
|
|
300
|
+
).rejects.toThrow(
|
|
299
301
|
'loadByCompositeFieldEqualing: Multiple entities of type TestEntity found for composite field (stringField,intField)={"stringField":"huh","intField":5}',
|
|
300
302
|
);
|
|
301
303
|
|
|
@@ -434,7 +436,7 @@ describe(AuthorizationResultBasedEntityLoader, () => {
|
|
|
434
436
|
entityLoader.loadManyByFieldEqualityConjunctionAsync([
|
|
435
437
|
{ fieldName: 'customIdField', fieldValue: 'not-a-uuid' },
|
|
436
438
|
]),
|
|
437
|
-
).rejects.
|
|
439
|
+
).rejects.toThrow('Entity field not valid: TestEntity (customIdField = not-a-uuid)');
|
|
438
440
|
});
|
|
439
441
|
|
|
440
442
|
it('loads entities with loadFirstByFieldEqualityConjunction', async () => {
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import { describe, expect, it } from '@jest/globals';
|
|
2
|
+
|
|
3
|
+
import { ComposedEntityCacheAdapter } from '../ComposedEntityCacheAdapter';
|
|
4
|
+
import { EntityConfiguration } from '../EntityConfiguration';
|
|
3
5
|
import { UUIDField } from '../EntityFields';
|
|
4
|
-
import IEntityCacheAdapter from '../IEntityCacheAdapter';
|
|
6
|
+
import { IEntityCacheAdapter } from '../IEntityCacheAdapter';
|
|
5
7
|
import { IEntityLoadKey, IEntityLoadValue } from '../internal/EntityLoadInterfaces';
|
|
6
8
|
import { CacheLoadResult, CacheStatus } from '../internal/ReadThroughEntityCache';
|
|
7
9
|
import { SingleFieldHolder, SingleFieldValueHolder } from '../internal/SingleFieldHolder';
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import { describe, expect, it } from '@jest/globals';
|
|
1
2
|
import invariant from 'invariant';
|
|
2
3
|
import nullthrows from 'nullthrows';
|
|
3
4
|
|
|
4
|
-
import ComposedSecondaryEntityCache from '../ComposedSecondaryEntityCache';
|
|
5
|
+
import { ComposedSecondaryEntityCache } from '../ComposedSecondaryEntityCache';
|
|
5
6
|
import { ISecondaryEntityCache } from '../EntitySecondaryCacheLoader';
|
|
6
7
|
|
|
7
8
|
type TestFields = { id: string };
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { result } from '@expo/results';
|
|
2
|
-
import {
|
|
2
|
+
import { describe, expect, it } from '@jest/globals';
|
|
3
|
+
import { anything, instance, mock, when } from 'ts-mockito';
|
|
3
4
|
|
|
4
|
-
import AuthorizationResultBasedEntityAssociationLoader from '../AuthorizationResultBasedEntityAssociationLoader';
|
|
5
|
-
import EnforcingEntityAssociationLoader from '../EnforcingEntityAssociationLoader';
|
|
5
|
+
import { AuthorizationResultBasedEntityAssociationLoader } from '../AuthorizationResultBasedEntityAssociationLoader';
|
|
6
|
+
import { EnforcingEntityAssociationLoader } from '../EnforcingEntityAssociationLoader';
|
|
6
7
|
|
|
7
8
|
describe(EnforcingEntityAssociationLoader, () => {
|
|
8
9
|
describe('loadAssociatedEntityAsync', () => {
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { result } from '@expo/results';
|
|
2
|
-
import {
|
|
2
|
+
import { describe, expect, it } from '@jest/globals';
|
|
3
|
+
import { anything, instance, mock, when } from 'ts-mockito';
|
|
3
4
|
|
|
4
|
-
import AuthorizationResultBasedEntityLoader from '../AuthorizationResultBasedEntityLoader';
|
|
5
|
-
import EnforcingEntityLoader from '../EnforcingEntityLoader';
|
|
5
|
+
import { AuthorizationResultBasedEntityLoader } from '../AuthorizationResultBasedEntityLoader';
|
|
6
|
+
import { EnforcingEntityLoader } from '../EnforcingEntityLoader';
|
|
6
7
|
import { CompositeFieldValueHolder } from '../internal/CompositeFieldHolder';
|
|
7
8
|
import { CompositeFieldValueMap } from '../internal/CompositeFieldValueMap';
|
|
8
9
|
|
|
@@ -1,14 +1,16 @@
|
|
|
1
|
+
import { describe, expect, it } from '@jest/globals';
|
|
2
|
+
|
|
1
3
|
import {
|
|
2
4
|
AuthorizationResultBasedCreateMutator,
|
|
3
5
|
AuthorizationResultBasedDeleteMutator,
|
|
4
6
|
AuthorizationResultBasedUpdateMutator,
|
|
5
7
|
} from '../AuthorizationResultBasedEntityMutator';
|
|
6
|
-
import EnforcingEntityCreator from '../EnforcingEntityCreator';
|
|
7
|
-
import EnforcingEntityDeleter from '../EnforcingEntityDeleter';
|
|
8
|
-
import EnforcingEntityUpdater from '../EnforcingEntityUpdater';
|
|
9
|
-
import Entity from '../Entity';
|
|
10
|
-
import ViewerContext from '../ViewerContext';
|
|
11
|
-
import SimpleTestEntity from '../utils/__testfixtures__/SimpleTestEntity';
|
|
8
|
+
import { EnforcingEntityCreator } from '../EnforcingEntityCreator';
|
|
9
|
+
import { EnforcingEntityDeleter } from '../EnforcingEntityDeleter';
|
|
10
|
+
import { EnforcingEntityUpdater } from '../EnforcingEntityUpdater';
|
|
11
|
+
import { Entity } from '../Entity';
|
|
12
|
+
import { ViewerContext } from '../ViewerContext';
|
|
13
|
+
import { SimpleTestEntity } from '../utils/__testfixtures__/SimpleTestEntity';
|
|
12
14
|
import { createUnitTestEntityCompanionProvider } from '../utils/__testfixtures__/createUnitTestEntityCompanionProvider';
|
|
13
15
|
|
|
14
16
|
describe(Entity, () => {
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
1
|
+
import { describe, expect, it } from '@jest/globals';
|
|
2
|
+
|
|
3
|
+
import { AuthorizationResultBasedEntityAssociationLoader } from '../AuthorizationResultBasedEntityAssociationLoader';
|
|
4
|
+
import { EnforcingEntityAssociationLoader } from '../EnforcingEntityAssociationLoader';
|
|
5
|
+
import { EntityAssociationLoader } from '../EntityAssociationLoader';
|
|
6
|
+
import { ViewerContext } from '../ViewerContext';
|
|
7
|
+
import { SimpleTestEntity } from '../utils/__testfixtures__/SimpleTestEntity';
|
|
6
8
|
import { createUnitTestEntityCompanionProvider } from '../utils/__testfixtures__/createUnitTestEntityCompanionProvider';
|
|
7
9
|
|
|
8
10
|
describe(EntityAssociationLoader, () => {
|
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
import { enforceAsyncResult } from '@expo/results';
|
|
2
|
+
import { expect, it } from '@jest/globals';
|
|
2
3
|
import { v4 as uuidv4 } from 'uuid';
|
|
3
4
|
|
|
4
|
-
import Entity from '../Entity';
|
|
5
|
-
import
|
|
6
|
-
import EntityConfiguration from '../EntityConfiguration';
|
|
5
|
+
import { Entity } from '../Entity';
|
|
6
|
+
import { EntityCompanionDefinition, EntityCompanionProvider } from '../EntityCompanionProvider';
|
|
7
|
+
import { EntityConfiguration } from '../EntityConfiguration';
|
|
7
8
|
import { UUIDField } from '../EntityFields';
|
|
8
|
-
import EntityPrivacyPolicy,
|
|
9
|
+
import { EntityPrivacyPolicy, EntityPrivacyPolicyEvaluationContext } from '../EntityPrivacyPolicy';
|
|
9
10
|
import { EntityQueryContext } from '../EntityQueryContext';
|
|
10
|
-
import ViewerContext from '../ViewerContext';
|
|
11
|
+
import { ViewerContext } from '../ViewerContext';
|
|
11
12
|
import { enforceResultsAsync } from '../entityUtils';
|
|
12
|
-
import EntityNotAuthorizedError from '../errors/EntityNotAuthorizedError';
|
|
13
|
-
import AlwaysAllowPrivacyPolicyRule from '../rules/AlwaysAllowPrivacyPolicyRule';
|
|
14
|
-
import AlwaysDenyPrivacyPolicyRule from '../rules/AlwaysDenyPrivacyPolicyRule';
|
|
15
|
-
import PrivacyPolicyRule,
|
|
13
|
+
import { EntityNotAuthorizedError } from '../errors/EntityNotAuthorizedError';
|
|
14
|
+
import { AlwaysAllowPrivacyPolicyRule } from '../rules/AlwaysAllowPrivacyPolicyRule';
|
|
15
|
+
import { AlwaysDenyPrivacyPolicyRule } from '../rules/AlwaysDenyPrivacyPolicyRule';
|
|
16
|
+
import { PrivacyPolicyRule, RuleEvaluationResult } from '../rules/PrivacyPolicyRule';
|
|
16
17
|
import { createUnitTestEntityCompanionProvider } from '../utils/__testfixtures__/createUnitTestEntityCompanionProvider';
|
|
17
18
|
|
|
18
19
|
class TestUserViewerContext extends ViewerContext {
|
|
@@ -1,17 +1,19 @@
|
|
|
1
|
+
import { describe, expect, it } from '@jest/globals';
|
|
1
2
|
import { instance, mock, when } from 'ts-mockito';
|
|
2
3
|
|
|
3
|
-
import EntityCompanion from '../EntityCompanion';
|
|
4
|
-
import EntityCompanionProvider from '../EntityCompanionProvider';
|
|
5
|
-
import EntityLoaderFactory from '../EntityLoaderFactory';
|
|
6
|
-
import EntityMutationTriggerConfiguration from '../EntityMutationTriggerConfiguration';
|
|
7
|
-
import EntityMutatorFactory from '../EntityMutatorFactory';
|
|
8
|
-
import ViewerContext from '../ViewerContext';
|
|
9
|
-
import EntityTableDataCoordinator from '../internal/EntityTableDataCoordinator';
|
|
10
|
-
import IEntityMetricsAdapter from '../metrics/IEntityMetricsAdapter';
|
|
11
|
-
import NoOpEntityMetricsAdapter from '../metrics/NoOpEntityMetricsAdapter';
|
|
12
|
-
import
|
|
13
|
-
TestMTFields,
|
|
4
|
+
import { EntityCompanion } from '../EntityCompanion';
|
|
5
|
+
import { EntityCompanionProvider } from '../EntityCompanionProvider';
|
|
6
|
+
import { EntityLoaderFactory } from '../EntityLoaderFactory';
|
|
7
|
+
import { EntityMutationTriggerConfiguration } from '../EntityMutationTriggerConfiguration';
|
|
8
|
+
import { EntityMutatorFactory } from '../EntityMutatorFactory';
|
|
9
|
+
import { ViewerContext } from '../ViewerContext';
|
|
10
|
+
import { EntityTableDataCoordinator } from '../internal/EntityTableDataCoordinator';
|
|
11
|
+
import { IEntityMetricsAdapter } from '../metrics/IEntityMetricsAdapter';
|
|
12
|
+
import { NoOpEntityMetricsAdapter } from '../metrics/NoOpEntityMetricsAdapter';
|
|
13
|
+
import {
|
|
14
14
|
testEntityMTConfiguration,
|
|
15
|
+
TestEntityWithMutationTriggers,
|
|
16
|
+
TestMTFields,
|
|
15
17
|
TestMutationTrigger,
|
|
16
18
|
} from '../utils/__testfixtures__/TestEntityWithMutationTriggers';
|
|
17
19
|
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
import
|
|
1
|
+
import { describe, expect, it } from '@jest/globals';
|
|
2
|
+
|
|
3
|
+
import { Entity } from '../Entity';
|
|
4
|
+
import { EntityCompanionDefinition, EntityCompanionProvider } from '../EntityCompanionProvider';
|
|
5
|
+
import { EntityConfiguration } from '../EntityConfiguration';
|
|
4
6
|
import { StringField } from '../EntityFields';
|
|
5
|
-
import EntityPrivacyPolicy from '../EntityPrivacyPolicy';
|
|
6
|
-
import ViewerContext from '../ViewerContext';
|
|
7
|
+
import { EntityPrivacyPolicy } from '../EntityPrivacyPolicy';
|
|
8
|
+
import { ViewerContext } from '../ViewerContext';
|
|
7
9
|
import { createUnitTestEntityCompanionProvider } from '../utils/__testfixtures__/createUnitTestEntityCompanionProvider';
|
|
8
10
|
|
|
9
11
|
type BlahFields = {
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { describe, expect, it, test } from '@jest/globals';
|
|
2
|
+
|
|
3
|
+
import { EntityConfiguration } from '../EntityConfiguration';
|
|
2
4
|
import { StringField, UUIDField } from '../EntityFields';
|
|
3
5
|
import { CompositeFieldHolder } from '../internal/CompositeFieldHolder';
|
|
4
6
|
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import { describe, expect, it } from '@jest/globals';
|
|
1
2
|
import { instance, mock } from 'ts-mockito';
|
|
2
3
|
|
|
3
|
-
import
|
|
4
|
-
|
|
4
|
+
import {
|
|
5
|
+
EntityDatabaseAdapter,
|
|
5
6
|
TableFieldMultiValueEqualityCondition,
|
|
7
|
+
TableFieldSingleValueEqualityCondition,
|
|
6
8
|
} from '../EntityDatabaseAdapter';
|
|
7
9
|
import { EntityQueryContext } from '../EntityQueryContext';
|
|
8
10
|
import { CompositeFieldHolder, CompositeFieldValueHolder } from '../internal/CompositeFieldHolder';
|
|
@@ -261,7 +263,7 @@ describe(EntityDatabaseAdapter, () => {
|
|
|
261
263
|
it('throws when insert result count zero', async () => {
|
|
262
264
|
const queryContext = instance(mock(EntityQueryContext));
|
|
263
265
|
const adapter = new TestEntityDatabaseAdapter({ insertResults: [] });
|
|
264
|
-
await expect(adapter.insertAsync(queryContext, {} as any)).rejects.
|
|
266
|
+
await expect(adapter.insertAsync(queryContext, {} as any)).rejects.toThrow(
|
|
265
267
|
'Empty results from database adapter insert',
|
|
266
268
|
);
|
|
267
269
|
});
|
|
@@ -271,7 +273,7 @@ describe(EntityDatabaseAdapter, () => {
|
|
|
271
273
|
const adapter = new TestEntityDatabaseAdapter({
|
|
272
274
|
insertResults: [{ string_field: 'hello' }, { string_field: 'hello2' }],
|
|
273
275
|
});
|
|
274
|
-
await expect(adapter.insertAsync(queryContext, {} as any)).rejects.
|
|
276
|
+
await expect(adapter.insertAsync(queryContext, {} as any)).rejects.toThrow(
|
|
275
277
|
'Excessive results from database adapter insert',
|
|
276
278
|
);
|
|
277
279
|
});
|
|
@@ -290,7 +292,7 @@ describe(EntityDatabaseAdapter, () => {
|
|
|
290
292
|
const adapter = new TestEntityDatabaseAdapter({ updateResults: [] });
|
|
291
293
|
await expect(
|
|
292
294
|
adapter.updateAsync(queryContext, 'customIdField', 'wat', {} as any),
|
|
293
|
-
).rejects.
|
|
295
|
+
).rejects.toThrow('Empty results from database adapter update');
|
|
294
296
|
});
|
|
295
297
|
|
|
296
298
|
it('throws when update result count greater than 1', async () => {
|
|
@@ -300,7 +302,7 @@ describe(EntityDatabaseAdapter, () => {
|
|
|
300
302
|
});
|
|
301
303
|
await expect(
|
|
302
304
|
adapter.updateAsync(queryContext, 'customIdField', 'wat', {} as any),
|
|
303
|
-
).rejects.
|
|
305
|
+
).rejects.toThrow('Excessive results from database adapter update');
|
|
304
306
|
});
|
|
305
307
|
});
|
|
306
308
|
|
|
@@ -308,7 +310,7 @@ describe(EntityDatabaseAdapter, () => {
|
|
|
308
310
|
it('throws when update result count greater than 1', async () => {
|
|
309
311
|
const queryContext = instance(mock(EntityQueryContext));
|
|
310
312
|
const adapter = new TestEntityDatabaseAdapter({ deleteCount: 2 });
|
|
311
|
-
await expect(adapter.deleteAsync(queryContext, 'customIdField', 'wat')).rejects.
|
|
313
|
+
await expect(adapter.deleteAsync(queryContext, 'customIdField', 'wat')).rejects.toThrow(
|
|
312
314
|
'Excessive deletions from database adapter delet',
|
|
313
315
|
);
|
|
314
316
|
});
|
|
@@ -1,22 +1,24 @@
|
|
|
1
|
+
import { describe, expect, it } from '@jest/globals';
|
|
1
2
|
import invariant from 'invariant';
|
|
2
3
|
|
|
3
|
-
import Entity from '../Entity';
|
|
4
|
+
import { Entity } from '../Entity';
|
|
4
5
|
import { EntityCompanionDefinition } from '../EntityCompanionProvider';
|
|
5
|
-
import EntityConfiguration from '../EntityConfiguration';
|
|
6
|
+
import { EntityConfiguration } from '../EntityConfiguration';
|
|
6
7
|
import { EntityEdgeDeletionBehavior } from '../EntityFieldDefinition';
|
|
7
8
|
import { UUIDField } from '../EntityFields';
|
|
8
|
-
import {
|
|
9
|
+
import { EntityMutationType, EntityTriggerMutationInfo } from '../EntityMutationInfo';
|
|
9
10
|
import { EntityMutationTrigger } from '../EntityMutationTriggerConfiguration';
|
|
10
|
-
import
|
|
11
|
-
EntityPrivacyPolicyEvaluationContext,
|
|
11
|
+
import {
|
|
12
12
|
EntityAuthorizationAction,
|
|
13
|
+
EntityPrivacyPolicy,
|
|
14
|
+
EntityPrivacyPolicyEvaluationContext,
|
|
13
15
|
} from '../EntityPrivacyPolicy';
|
|
14
|
-
import {
|
|
16
|
+
import { EntityQueryContext, EntityTransactionalQueryContext } from '../EntityQueryContext';
|
|
15
17
|
import { CacheStatus } from '../internal/ReadThroughEntityCache';
|
|
16
18
|
import { SingleFieldHolder, SingleFieldValueHolder } from '../internal/SingleFieldHolder';
|
|
17
|
-
import PrivacyPolicyRule,
|
|
19
|
+
import { PrivacyPolicyRule, RuleEvaluationResult } from '../rules/PrivacyPolicyRule';
|
|
18
20
|
import { InMemoryFullCacheStubCacheAdapter } from '../utils/__testfixtures__/StubCacheAdapter';
|
|
19
|
-
import TestViewerContext from '../utils/__testfixtures__/TestViewerContext';
|
|
21
|
+
import { TestViewerContext } from '../utils/__testfixtures__/TestViewerContext';
|
|
20
22
|
import { createUnitTestEntityCompanionProvider } from '../utils/__testfixtures__/createUnitTestEntityCompanionProvider';
|
|
21
23
|
|
|
22
24
|
interface OtherFields {
|