packages feed

keiro-dsl-0.12.0.0: test/conformance-domain-outcomes/DomainOutcomes/Reservation/BehaviorHoles.hs

-- Consumer-owned behavioral witnesses. Created once; never overwritten.
module DomainOutcomes.Reservation.BehaviorHoles (behaviorWitnesses) where

import Generated.DomainOutcomes.Reservation.BehaviorContract
import Data.List.NonEmpty (NonEmpty (..))
import Data.Text (Text)
import Generated.DomainOutcomes.Nominals (ReservationNoOp (..), ReservationRejection (..))
import Generated.DomainOutcomes.Reservation.Domain

behaviorWitnesses :: [BehaviorWitness]
behaviorWitnesses =
  [ live "behavior-v1-0b1588f69a27bc77" [] firstRequest (Emits (cancelled "request-1" :| [])),
    live "behavior-v1-316c9e96fc1a94b1" cancelledHistory secondRequest (RejectedWith AlreadyCancelled),
    live "behavior-v1-fd391b55fbbfa640" cancelledHistory firstRequest (NoOpWith DuplicateRequest)
  ]

live :: Text -> [ReservationEvent] -> ReservationCommand -> LiveExpectation -> BehaviorWitness
live rawKey history command expectation =
  LiveWitness (BehaviorKey rawKey) history command expectation

cancelledHistory :: [ReservationEvent]
cancelledHistory = [cancelled "request-1"]

firstRequest :: ReservationCommand
firstRequest = Cancel (CancelData "request-1")

secondRequest :: ReservationCommand
secondRequest = Cancel (CancelData "request-2")

cancelled :: Text -> ReservationEvent
cancelled requestIdValue = Cancelled (CancelledData requestIdValue)