packages feed

conferer-0.1.0.0: test/Conferer/Provider/MappingSpec.hs

module Conferer.Provider.MappingSpec where

import           Test.Hspec
import qualified Data.Map as Map
import           Data.Function ((&))

import           Conferer

spec :: Spec
spec = do
  describe "with a mapping provider" $ do
    it "getting an existent key in the original map but that's not mapped in the \
       \wrapper doesn't exist" $ do
      c <- emptyConfig
           & addProvider (mkMappingProvider Map.empty
                          $ mkMapProvider [("some.key", "some value")])
      res <- getKey "some.key" c
      res `shouldBe` Left "Key 'some.key' was not found"

    it "getting a non existent key isn't there" $ do
      c <- emptyConfig
           & addProvider (mkMappingProvider (Map.fromList [("k", "key")])
                          $ mkMapProvider [("key", "75")])

      res <- getKey "xxxx" c
      res `shouldBe` Left "Key 'xxxx' was not found"

    it "getting an existent key that's mapped but doesn't exist on the \
       \inner provider isn't there" $ do
      c <- emptyConfig
           & addProvider (mkMappingProvider (Map.fromList [("another.key", "some.key")])
                          $ mkMapProvider [])

      res <- getKey "another.key" c
      res `shouldBe` Left "Key 'another.key' was not found"

    it "getting an existent key that's mapped properly gets it and exists on \
       \the inner provider gets it" $ do
      c <- emptyConfig
           & addProvider (mkMappingProvider (Map.fromList [("another.key", "some.key")])
                          $ mkMapProvider [("some.key", "some value")])
      res <- getKey "another.key" c
      res `shouldBe` Right "some value"