module Spec.Get (allTests) where
import Data.Maybe (fromJust)
import LaunchDarkly.AesonCompat (lookupKey, mapValues)
import LaunchDarkly.Server.Store (PersistentDataStore (..), SerializedItemDescriptor (..))
import Test.HUnit
import Util (defaultPrefix, initialData, initialFlag, makeDefaultRedisBackend)
testCanExistingItem :: Test
testCanExistingItem = TestCase $ do
backend <- makeDefaultRedisBackend defaultPrefix
_ <- persistentDataStoreInitialize backend initialData
flag <- persistentDataStoreGetFeature backend "features" "first-flag"
assertEqual "" (Right $ Just expectedFlag) flag
where
expectedFlag = initialFlag {version = 0, deleted = False}
testHandlesNonExistentData :: Test
testHandlesNonExistentData = TestCase $ do
backend <- makeDefaultRedisBackend defaultPrefix
_ <- persistentDataStoreInitialize backend initialData
flag <- persistentDataStoreGetFeature backend "features" "does-not-exist"
assertEqual "" (Right Nothing) flag
testAllFlagsReturnsEveryFlag :: Test
testAllFlagsReturnsEveryFlag = TestCase $ do
backend <- makeDefaultRedisBackend defaultPrefix
_ <- persistentDataStoreInitialize backend initialData
flags <- persistentDataStoreAllFeatures backend "features"
assertEqual "" (Right expectedFlags) flags
where
expectedFlags = mapValues (\flag -> flag {version = 0, deleted = False}) $ fromJust $ lookupKey "features" initialData
allTests :: Test
allTests =
TestList
[ testCanExistingItem
, testHandlesNonExistentData
, testAllFlagsReturnsEveryFlag
]