packages feed

keiro-dsl-0.2.0.0: test/conformance-router/Main.hs

module Main (main) where

import Control.Monad (forM_, unless)
import Generated.IncidentPaging.PagingRouter.RouterHarness (routerHarnessValues)
import System.Exit (exitFailure)

expected :: [(String, String)]
expected =
    [ ("routerName", "jitsurei-paging")
    , ("keyField", "incidentId")
    , ("resolveSource", "read-model service_oncall")
    , ("resolveRow", "responderId")
    , ("dispatchCommand", "SendPage")
    , ("dispatchIdInputs", "(name, key, sourceEventId, targetStreamName, occurrence)")
    , ("onDuplicate", "AckOk")
    , ("onFailed", "Retry")
    , ("rejectedPolicy", "deadLetter")
    , ("poisonPolicy", "halt")
    ]

main :: IO ()
main = do
    let results = [(label, lookup label routerHarnessValues == Just value) | (label, value) <- expected]
        failed = [label | (label, ok) <- results, not ok]
    forM_ results $ \(label, ok) -> putStrLn ((if ok then "PASS  " else "FAIL  ") <> label)
    unless (null failed) $ do
        putStrLn ("router harness: " <> show (length failed) <> " assertion(s) failed: " <> show failed)
        exitFailure