{-# LANGUAGE OverloadedStrings #-} module Main where import MiniGenericJson.Manifest ( ReleaseManifest (..) , Environment (Production) , RolloutStrategy (Stable, Canary) , decodeManifest , encodeManifest , renderManifest ) import System.Exit (die) sampleManifest :: ReleaseManifest sampleManifest = ReleaseManifest { 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 generic JSON result"