packages feed

conferer-0.4.0.0: test/Conferer/Source/PropertiesFileSpec.hs

module Conferer.Source.PropertiesFileSpec where

import           Test.Hspec
import           Data.Text (Text)
import qualified Data.Text as Text
import qualified Data.Map as Map

import Conferer
import Conferer.Core
import Conferer.Source.PropertiesFile

fakeLookupEnv :: [(String, String)] -> LookupEnvFunc
fakeLookupEnv fakeEnv = \envName ->
  return $ Map.lookup envName $ Map.fromList fakeEnv

spec :: Spec
spec = do
  describe "with a properties file config" $ do
    it "getting an existent key returns unwraps top level value (wihtout \
       \children)" $ do
      c <- mkStandaloneSource $ mkPropertiesFileSource' "some.key=a value"
      res <- getKeyInSource c "some.key"
      res `shouldBe` Just "a value"

    it "getting an existent key for a child gets that value" $ do
      c <- mkStandaloneSource $ mkPropertiesFileSource' $ Text.unlines
                               [ "some.key=a value"
                               , "some.key=b"
                               ]
      res <- getKeyInSource c "some.key"
      res `shouldBe` Just "b"

    it "keys should always be consistent as to how the words are separated" $ do
      c <- mkStandaloneSource $ mkPropertiesFileSource' $ Text.unlines
                               [ "some.key=a value"
                               , "some.key=b"
                               ]
      res <- getKeyInSource c "another.key"
      res `shouldBe` Nothing