dotenv-0.6.0.1: spec/Configuration/Dotenv/Scheme/ParseSpec.hs
{-# LANGUAGE OverloadedStrings #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
module Configuration.Dotenv.Scheme.ParseSpec (spec) where
import Data.Yaml (decodeFileEither)
import Test.Hspec
import Configuration.Dotenv.Scheme.Types
-- | Extract Right from Either
--
fromRight :: (Show a, Show b) => Either a b -> b
fromRight (Right v) = v
fromRight (Left v) = error ("Left " ++ show v ++ " constructor instead" )
-- |
--
spec :: Spec
spec =
describe "parse a config env file" $
it "parses the env config values from a file" $
let expected :: [Env]
expected =
[ Env "DOTENV" (EnvType "bool") True
, Env "OTHERENV" (EnvType "bool") False
, Env "PORT" (EnvType "integer") True
, Env "TOKEN" (EnvType "integer") False
, Env "URL" (EnvType "text") True
, Env "TWO" (EnvType "twoLetters") False
]
in do
actual <- decodeFileEither "spec/fixtures/.scheme.yml"
fromRight actual `shouldBe` expected