packages feed

conferer-0.1.0.4: test/Conferer/Provider/PropertiesFileSpec.hs

module Conferer.Provider.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.Provider.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 <- mkStandaloneProvider $ mkPropertiesFileProvider' "some.key=a value"
      res <- getKeyInProvider c "some.key"
      res `shouldBe` Just "a value"

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

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