keiro-dsl-0.2.0.0: test/conformance/Generated/HospitalCapacity/Reservation/Harness.hs
{-# LANGUAGE OverloadedStrings #-}
-- @generated by keiro-dsl; do not edit. Regenerated from the .keiro spec.
module Generated.HospitalCapacity.Reservation.Harness (harnessAssertions) where
import Generated.HospitalCapacity.Reservation.Codec (encodeReservationEvent, parseReservationEvent, reservationCodec)
import Generated.HospitalCapacity.Reservation.Domain
import HospitalCapacity.Reservation.Holes (reservationTransducer)
import Keiki.Core (defaultValidationOptions, step, validateTransducer)
import Keiro.Codec (eventType)
{- | (label, passed). A driver runs these and exits non-zero on any False,
naming the failing assertion. Filling a hole wrongly turns a specific
entry False; the scaffold cannot.
-}
harnessAssertions :: [(String, Bool)]
harnessAssertions =
[ ("validateTransducer is empty", null (validateTransducer defaultValidationOptions reservationTransducer))
, ("clock-free: spec samples no wall clock", True)
, ("golden round-trip: TransferReservationCreated", roundTrips sampleEventTransferReservationCreated)
, ("golden round-trip: TransferReservationConfirmed", roundTrips sampleEventTransferReservationConfirmed)
, ("accepts RequestTransferReservation from ReservationUnrequested", acceptRequestTransferReservation)
]
roundTrips :: ReservationEvent -> Bool
roundTrips e = parseReservationEvent (eventType reservationCodec e) (encodeReservationEvent e) == Right e
sampleEventTransferReservationCreated :: ReservationEvent
sampleEventTransferReservationCreated = (TransferReservationCreated (TransferReservationCreatedData (TransferReservationId "sample") (HospitalId "sample") (CommandId "sample") RedTag Open False))
sampleEventTransferReservationConfirmed :: ReservationEvent
sampleEventTransferReservationConfirmed = (TransferReservationConfirmed (TransferReservationConfirmedData (TransferReservationId "sample") (HospitalId "sample") (CommandId "sample")))
acceptRequestTransferReservation :: Bool
acceptRequestTransferReservation =
case step reservationTransducer (ReservationUnrequested, initialReservationRegs) ((RequestTransferReservation (RequestTransferReservationData (TransferReservationId "sample") (HospitalId "sample") (CommandId "sample") RedTag Open False))) of
Just (v, _, _) -> v == ReservationHeld
Nothing -> False