packages feed

conferer-1.1.0.0: test/Conferer/FromConfig/BoolSpec.hs

{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE AllowAmbiguousTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}

module Conferer.FromConfig.BoolSpec (spec) where

import Test.Hspec
import Conferer.FromConfig.Extended

spec :: Spec
spec = do
  context "Basic fetching" $ do
    describe "fetching a Bool from config" $ do
      ensureEmptyConfigThrows @Bool

      ensureUsingDefaultReturnsSameValue @Bool True
      ensureUsingDefaultReturnsSameValue @Bool False

      ensureSingleConfigParsesTheRightThing @Bool "true" True
      ensureSingleConfigParsesTheRightThing @Bool "false" False

      context "parsing is case insensitive" $ do
        ensureSingleConfigParsesTheRightThing @Bool "faLSe" False
        ensureSingleConfigParsesTheRightThing @Bool "TRUE" True

      ensureSingleConfigThrowsParserError @Bool "nope"