42 lines
1.1 KiB
Haskell
42 lines
1.1 KiB
Haskell
module Main where
|
|
|
|
import MiniReleaseRequest.Request
|
|
( Environment (Production, Staging)
|
|
, ReleaseRequest (ReleaseRequest)
|
|
, Strategy (Canary, Rolling)
|
|
, buildReleaseRequest
|
|
, renderReleaseRequest
|
|
)
|
|
import System.Exit (die)
|
|
|
|
main :: IO ()
|
|
main =
|
|
case
|
|
( buildReleaseRequest
|
|
[ "service=api"
|
|
, "env=production"
|
|
, "replicas=3"
|
|
, "strategy=canary"
|
|
, "canary=10"
|
|
]
|
|
, buildReleaseRequest
|
|
[ "service=worker"
|
|
, "env=staging"
|
|
, "replicas=2"
|
|
, "strategy=rolling"
|
|
, "owner=ops"
|
|
]
|
|
, buildReleaseRequest
|
|
[ "service=cache"
|
|
, "env=production"
|
|
, "replicas=2"
|
|
, "strategy=canary"
|
|
]
|
|
) of
|
|
( Right (ReleaseRequest "api" Production 3 (Canary 10) Nothing)
|
|
, Right rollingRequest@(ReleaseRequest "worker" Staging 2 Rolling (Just "ops"))
|
|
, Left _
|
|
) | renderReleaseRequest rollingRequest == "service worker, env staging, replicas 2, strategy rolling, owner ops" ->
|
|
putStrLn "test passed"
|
|
_ -> die "unexpected release request result"
|