keiro-dsl-0.2.0.0: test/conformance-router-full/Main.hs
{-# LANGUAGE OverloadedRecordDot #-}
module Main (main) where
import Control.Monad (unless)
import Effectful (runPureEff)
import Generated.IncidentPaging.PagingRouter.RouterHarness (routerHarnessValues)
import IncidentPaging.PagingRouter.RouterValue (IncidentRaised (..), pagingRouter)
import Keiro.ProcessManager (PMCommand (..))
import Keiro.Router (Router (..))
import Keiro.Stream (stream)
import System.Exit (exitFailure)
main :: IO ()
main = do
let input = IncidentRaised{incidentId = "incident-1", service = "cardiology"}
commands = runPureEff (pagingRouter.resolve input)
targets = map target commands
checks =
[ ("router name", pagingRouter.name == "jitsurei-paging")
, ("router key", pagingRouter.key input == "incident-1")
, ("resolver returns the expected targets", targets == [stream "page-incident-1-responder-a", stream "page-incident-1-responder-b"])
, ("harness policy", lookup "rejectedPolicy" routerHarnessValues == Just "deadLetter")
]
mapM_ (\(label, ok) -> putStrLn (label <> ": " <> show ok)) checks
unless (all snd checks) exitFailure