packages feed

keiro-dsl-0.12.0.0: test/conformance-mapped-readmodel/Generated/MappedReadmodel/StructuralConformance.hs

-- @generated by keiro-dsl 0.12.0.0 (language keiro-dsl 5) from context mapped-readmodel structural conformance; do not edit.
module Generated.MappedReadmodel.StructuralConformance
  ( structuralConformanceAssertions
  ) where

import Data.List (nub)
import Data.List.NonEmpty qualified as NonEmpty
import Data.Maybe (isJust, isNothing)
import Data.Proxy (Proxy (..))
import Data.Text qualified as T
import Keiki.Core (fieldWitnessAgrees)
import Keiki.Shape (CanonicalTypeName (..))
import Keiro.Codec.Structural (FixtureCases (..), bindingDomainRoundTrip, bindingShapeRoundTrip, bindingToShape)
import Generated.MappedReadmodel.StructuralProjections qualified as StructuralProjections
import Conformance.MappedReadModel.Bindings qualified as Bindings
import Conformance.MappedReadModel.Domain (AccountLookup, AccountProfile, AccountSummary, TenantKey, UnusedFilter)
import Generated.MappedReadmodel.Structural.Shape.AccountLookup qualified as ShapeAccountLookup
import Generated.MappedReadmodel.Structural.Shape.AccountProfile qualified as ShapeAccountProfile
import Generated.MappedReadmodel.Structural.Shape.AccountSummary qualified as ShapeAccountSummary
import Generated.MappedReadmodel.Structural.Shape.TenantKey qualified as ShapeTenantKey
import Generated.MappedReadmodel.Structural.Shape.UnusedFilter qualified as ShapeUnusedFilter

structuralConformanceAssertions :: [(String, Bool)]
structuralConformanceAssertions =
  concat
    [ accountLookupBindingAssertions
    , accountProfileBindingAssertions
    , accountSummaryBindingAssertions
    , tenantKeyBindingAssertions
    , unusedFilterBindingAssertions
    , [("fixture coverage: conformance.mapped-readmodel.AccountLookup.v1", coverageAccountLookup)]
    , [("fixture coverage: conformance.mapped-readmodel.AccountProfile.v1", coverageAccountProfile)]
    , [("fixture coverage: conformance.mapped-readmodel.AccountSummary.v1", coverageAccountSummary)]
    , [("fixture coverage: conformance.mapped-readmodel.TenantKey.v1", coverageTenantKey)]
    , [("fixture coverage: conformance.mapped-readmodel.UnusedFilter.v1", coverageUnusedFilter)]
    , structuralProjectionAssertions
    ]

validFixtureLabels :: NonEmpty.NonEmpty (T.Text, value) -> Bool
validFixtureLabels cases =
  all (not . T.null) labels && length labels == length (nub labels)
  where
    labels = map fst (NonEmpty.toList cases)

accountLookupBindingAssertions :: [(String, Bool)]
accountLookupBindingAssertions =
  ("fixture labels: conformance.mapped-readmodel.AccountLookup.v1", validFixtureLabels cases) :
  ("canonical identity: conformance.mapped-readmodel.AccountLookup.v1", canonicalTypeName (Proxy @AccountLookup) == "conformance.mapped-readmodel.AccountLookup.v1") :
  concat
    [ [ ("binding domain round-trip: conformance.mapped-readmodel.AccountLookup.v1/" <> T.unpack label, bindingDomainRoundTrip Bindings.accountLookupBinding value)
      , ("binding shape round-trip: conformance.mapped-readmodel.AccountLookup.v1/" <> T.unpack label, bindingShapeRoundTrip Bindings.accountLookupBinding (bindingToShape Bindings.accountLookupBinding value))
      ]
    | (label, value) <- NonEmpty.toList cases
    ]
  where
    cases = fixtureCases Bindings.accountLookupCases

accountProfileBindingAssertions :: [(String, Bool)]
accountProfileBindingAssertions =
  ("fixture labels: conformance.mapped-readmodel.AccountProfile.v1", validFixtureLabels cases) :
  ("canonical identity: conformance.mapped-readmodel.AccountProfile.v1", canonicalTypeName (Proxy @AccountProfile) == "conformance.mapped-readmodel.AccountProfile.v1") :
  concat
    [ [ ("binding domain round-trip: conformance.mapped-readmodel.AccountProfile.v1/" <> T.unpack label, bindingDomainRoundTrip Bindings.accountProfileBinding value)
      , ("binding shape round-trip: conformance.mapped-readmodel.AccountProfile.v1/" <> T.unpack label, bindingShapeRoundTrip Bindings.accountProfileBinding (bindingToShape Bindings.accountProfileBinding value))
      ]
    | (label, value) <- NonEmpty.toList cases
    ]
  where
    cases = fixtureCases Bindings.accountProfileCases

accountSummaryBindingAssertions :: [(String, Bool)]
accountSummaryBindingAssertions =
  ("fixture labels: conformance.mapped-readmodel.AccountSummary.v1", validFixtureLabels cases) :
  ("canonical identity: conformance.mapped-readmodel.AccountSummary.v1", canonicalTypeName (Proxy @AccountSummary) == "conformance.mapped-readmodel.AccountSummary.v1") :
  concat
    [ [ ("binding domain round-trip: conformance.mapped-readmodel.AccountSummary.v1/" <> T.unpack label, bindingDomainRoundTrip Bindings.accountSummaryBinding value)
      , ("binding shape round-trip: conformance.mapped-readmodel.AccountSummary.v1/" <> T.unpack label, bindingShapeRoundTrip Bindings.accountSummaryBinding (bindingToShape Bindings.accountSummaryBinding value))
      ]
    | (label, value) <- NonEmpty.toList cases
    ]
  where
    cases = fixtureCases Bindings.accountSummaryCases

tenantKeyBindingAssertions :: [(String, Bool)]
tenantKeyBindingAssertions =
  ("fixture labels: conformance.mapped-readmodel.TenantKey.v1", validFixtureLabels cases) :
  ("canonical identity: conformance.mapped-readmodel.TenantKey.v1", canonicalTypeName (Proxy @TenantKey) == "conformance.mapped-readmodel.TenantKey.v1") :
  concat
    [ [ ("binding domain round-trip: conformance.mapped-readmodel.TenantKey.v1/" <> T.unpack label, bindingDomainRoundTrip Bindings.tenantKeyBinding value)
      , ("binding shape round-trip: conformance.mapped-readmodel.TenantKey.v1/" <> T.unpack label, bindingShapeRoundTrip Bindings.tenantKeyBinding (bindingToShape Bindings.tenantKeyBinding value))
      ]
    | (label, value) <- NonEmpty.toList cases
    ]
  where
    cases = fixtureCases Bindings.tenantKeyCases

unusedFilterBindingAssertions :: [(String, Bool)]
unusedFilterBindingAssertions =
  ("fixture labels: conformance.mapped-readmodel.UnusedFilter.v1", validFixtureLabels cases) :
  ("canonical identity: conformance.mapped-readmodel.UnusedFilter.v1", canonicalTypeName (Proxy @UnusedFilter) == "conformance.mapped-readmodel.UnusedFilter.v1") :
  concat
    [ [ ("binding domain round-trip: conformance.mapped-readmodel.UnusedFilter.v1/" <> T.unpack label, bindingDomainRoundTrip Bindings.unusedFilterBinding value)
      , ("binding shape round-trip: conformance.mapped-readmodel.UnusedFilter.v1/" <> T.unpack label, bindingShapeRoundTrip Bindings.unusedFilterBinding (bindingToShape Bindings.unusedFilterBinding value))
      ]
    | (label, value) <- NonEmpty.toList cases
    ]
  where
    cases = fixtureCases Bindings.unusedFilterCases

coverageAccountLookup :: Bool
coverageAccountLookup = True

coverageAccountProfile :: Bool
coverageAccountProfile = True

coverageAccountSummary :: Bool
coverageAccountSummary = any (isNothing . ShapeAccountSummary.profile) shapes && any (isJust . ShapeAccountSummary.profile) shapes
  where
    shapes = map (bindingToShape Bindings.accountSummaryBinding . snd) (NonEmpty.toList (fixtureCases Bindings.accountSummaryCases))

coverageTenantKey :: Bool
coverageTenantKey = True

coverageUnusedFilter :: Bool
coverageUnusedFilter = True

structuralProjectionAssertions :: [(String, Bool)]
structuralProjectionAssertions =
  [ ("projection witness agreement: conformance.mapped-readmodel.AccountLookup.v1/account_id", all (\(_, owner) -> fieldWitnessAgrees StructuralProjections.accountLookupAccountIdWitness (\referenceOwner -> ShapeAccountLookup.accountId (bindingToShape Bindings.accountLookupBinding referenceOwner)) owner) (NonEmpty.toList (fixtureCases Bindings.accountLookupCases)))
  , ("projection witness agreement: conformance.mapped-readmodel.AccountLookup.v1/tenant/tenant_id", all (\(_, owner) -> fieldWitnessAgrees StructuralProjections.accountLookupTenantTenantIdWitness (\referenceOwner -> ShapeTenantKey.tenantId (ShapeAccountLookup.tenant (bindingToShape Bindings.accountLookupBinding referenceOwner))) owner) (NonEmpty.toList (fixtureCases Bindings.accountLookupCases)))
  , ("projection witness agreement: conformance.mapped-readmodel.AccountProfile.v1/display_name", all (\(_, owner) -> fieldWitnessAgrees StructuralProjections.accountProfileDisplayNameWitness (\referenceOwner -> ShapeAccountProfile.displayName (bindingToShape Bindings.accountProfileBinding referenceOwner)) owner) (NonEmpty.toList (fixtureCases Bindings.accountProfileCases)))
  , ("projection witness agreement: conformance.mapped-readmodel.AccountSummary.v1/account_id", all (\(_, owner) -> fieldWitnessAgrees StructuralProjections.accountSummaryAccountIdWitness (\referenceOwner -> ShapeAccountSummary.accountId (bindingToShape Bindings.accountSummaryBinding referenceOwner)) owner) (NonEmpty.toList (fixtureCases Bindings.accountSummaryCases)))
  , ("projection witness agreement: conformance.mapped-readmodel.AccountSummary.v1/tenant/tenant_id", all (\(_, owner) -> fieldWitnessAgrees StructuralProjections.accountSummaryTenantTenantIdWitness (\referenceOwner -> ShapeTenantKey.tenantId (ShapeAccountSummary.tenant (bindingToShape Bindings.accountSummaryBinding referenceOwner))) owner) (NonEmpty.toList (fixtureCases Bindings.accountSummaryCases)))
  , ("projection witness agreement: conformance.mapped-readmodel.TenantKey.v1/tenant_id", all (\(_, owner) -> fieldWitnessAgrees StructuralProjections.tenantKeyTenantIdWitness (\referenceOwner -> ShapeTenantKey.tenantId (bindingToShape Bindings.tenantKeyBinding referenceOwner)) owner) (NonEmpty.toList (fixtureCases Bindings.tenantKeyCases)))
  , ("projection witness agreement: conformance.mapped-readmodel.UnusedFilter.v1/prefix", all (\(_, owner) -> fieldWitnessAgrees StructuralProjections.unusedFilterPrefixWitness (\referenceOwner -> ShapeUnusedFilter.prefix (bindingToShape Bindings.unusedFilterBinding referenceOwner)) owner) (NonEmpty.toList (fixtureCases Bindings.unusedFilterCases)))
  ]