36 lines
910 B
Haskell
36 lines
910 B
Haskell
{-# LANGUAGE OverloadedStrings #-}
|
|
|
|
module Main where
|
|
|
|
import MiniManifest.Json
|
|
( DeploymentManifest (..)
|
|
, Environment (Production)
|
|
, RolloutStrategy (Canary)
|
|
, decodeManifest
|
|
, encodeManifest
|
|
, renderManifest
|
|
)
|
|
import System.Exit (die)
|
|
|
|
sampleManifest :: DeploymentManifest
|
|
sampleManifest =
|
|
DeploymentManifest
|
|
{ manifestService = "api"
|
|
, manifestEnvironment = Production
|
|
, manifestReplicas = 3
|
|
, manifestOwners = ["platform", "security"]
|
|
, manifestStrategy = Canary 10
|
|
}
|
|
|
|
main :: IO ()
|
|
main =
|
|
case
|
|
( decodeManifest (encodeManifest sampleManifest)
|
|
, decodeManifest "{\"service\":\"api\"}"
|
|
) of
|
|
( Right decodedManifest
|
|
, Left _
|
|
) | renderManifest decodedManifest == "service api, env production, replicas 3, owners platform/security, strategy canary 10%" ->
|
|
putStrLn "test passed"
|
|
_ -> die "unexpected JSON round-trip result"
|