module KVStoreSpec where import qualified Data.Map as M import Polysemy import Polysemy.KVStore import Test.Hspec program :: Member (KVStore Bool Int) r => Sem r (Maybe Int) program = do a <- lookupKV False b <- lookupKV True pure $ (+) <$> a <*> b spec :: Spec spec = do describe "KVStore" $ do let itShouldBe m v = run (fmap snd $ runKVStorePurely (M.fromList m) program) `shouldBe` v it "should fail to find missing keys" $ do itShouldBe [] Nothing it "should add if all the keys are there" $ do itShouldBe [(False, 5), (True, 10)] $ Just 15