packages feed

etc-0.3.0.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 (assertBool, assertEqual, 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 result = getEnvMisspellingsPure spec ["GREEING"]

      assertBool "expecting to get a warning for typo" (not $ Vector.null result)

      assertEqual "expecting to get typo for key GREETING"
                  (EnvMisspell "GREEING" "GREETING")
                  (Vector.head result)
  ]