packages feed

etc-0.3.2.0: test/System/Etc/Extra/EnvMisspellTest.hs

{-# LANGUAGE NoImplicitPrelude   #-}
{-# LANGUAGE OverloadedLists     #-}
{-# LANGUAGE OverloadedStrings   #-}
{-# LANGUAGE ScopedTypeVariables #-}
module System.Etc.Extra.EnvMisspellTest where

import           RIO
import qualified RIO.Vector as Vector

import Test.Tasty       (TestTree, testGroup)
import Test.Tasty.HUnit (assertEqual, assertFailure, testCase)

import System.Etc

tests :: TestTree
tests = testGroup
  "env misspells"
  [ testCase "it warns when misspell is present" $ do
      let input = mconcat
            [ "{\"etc/entries\": {"
            , " \"greeting\": { \"etc/spec\": { \"env\": \"GREETING\" }}}}"
            ]

      (spec :: ConfigSpec ()) <- parseConfigSpec input

      let result0 = getEnvMisspellingsPure spec ["GREEING"]

      case result0 Vector.!? 0 of
        Nothing     -> assertFailure "expecting to get a warning for typo"
        Just result -> assertEqual "expecting to get typo for key GREETING"
                                   (EnvMisspell "GREEING" "GREETING")
                                   result
  ]