module Test.FeatureFlags.SelfDeletingMessages where import qualified Data.Aeson.Types as A import Test.FeatureFlags.Util import Testlib.Prelude feature :: (ToJSON timeout) => [A.Pair] -> timeout -> Value feature :: forall timeout. ToJSON timeout => [Pair] -> timeout -> Value feature [Pair] ps timeout timeout = [Pair] -> Value object ( [Pair] ps [Pair] -> [Pair] -> [Pair] forall a. Semigroup a => a -> a -> a <> [ String "ttl" String -> String -> Pair forall a. ToJSON a => String -> a -> Pair .= String "unlimited", String "config" String -> Value -> Pair forall a. ToJSON a => String -> a -> Pair .= [Pair] -> Value object [String "enforcedTimeoutSeconds" String -> Value -> Pair forall a. ToJSON a => String -> a -> Pair .= timeout -> Value forall a. ToJSON a => a -> Value toJSON timeout timeout] ] ) testSelfDeletingMessages :: (HasCallStack) => FeatureTable -> APIAccess -> App () testSelfDeletingMessages :: HasCallStack => FeatureTable -> APIAccess -> App () testSelfDeletingMessages FeatureTable table APIAccess access = String -> FeatureTests mkFeatureTests String "selfDeletingMessages" FeatureTests -> (FeatureTests -> FeatureTests) -> FeatureTests forall a b. a -> (a -> b) -> b & Value -> FeatureTests -> FeatureTests addUpdate ([Pair] -> Int -> Value forall timeout. ToJSON timeout => [Pair] -> timeout -> Value feature [String "status" String -> String -> Pair forall a. ToJSON a => String -> a -> Pair .= String "disabled"] (Int 0 :: Int)) FeatureTests -> (FeatureTests -> FeatureTests) -> FeatureTests forall a b. a -> (a -> b) -> b & Value -> FeatureTests -> FeatureTests addUpdate ([Pair] -> Int -> Value forall timeout. ToJSON timeout => [Pair] -> timeout -> Value feature [String "status" String -> String -> Pair forall a. ToJSON a => String -> a -> Pair .= String "enabled"] (Int 30 :: Int)) FeatureTests -> (FeatureTests -> FeatureTests) -> FeatureTests forall a b. a -> (a -> b) -> b & Value -> FeatureTests -> FeatureTests addInvalidUpdate ([Pair] -> String -> Value forall timeout. ToJSON timeout => [Pair] -> timeout -> Value feature [String "status" String -> String -> Pair forall a. ToJSON a => String -> a -> Pair .= String "enabled"] String "") FeatureTests -> (FeatureTests -> FeatureTests) -> FeatureTests forall a b. a -> (a -> b) -> b & FeatureTable -> FeatureTests -> FeatureTests setTable FeatureTable table FeatureTests -> (FeatureTests -> App ()) -> App () forall a b. a -> (a -> b) -> b & Domain -> APIAccess -> FeatureTests -> App () forall domain. (HasCallStack, MakesValue domain) => domain -> APIAccess -> FeatureTests -> App () runFeatureTests Domain OwnDomain APIAccess access testPatchSelfDeletingMessages :: (HasCallStack) => FeatureTable -> App () testPatchSelfDeletingMessages :: HasCallStack => FeatureTable -> App () testPatchSelfDeletingMessages FeatureTable table = do FeatureTable -> Domain -> String -> Value -> App () forall domain. (HasCallStack, MakesValue domain) => FeatureTable -> domain -> String -> Value -> App () checkPatchWithTable FeatureTable table Domain OwnDomain String "selfDeletingMessages" (Value -> App ()) -> Value -> App () forall a b. (a -> b) -> a -> b $ [Pair] -> Value object [String "lockStatus" String -> String -> Pair forall a. ToJSON a => String -> a -> Pair .= String "locked"] FeatureTable -> Domain -> String -> Value -> App () forall domain. (HasCallStack, MakesValue domain) => FeatureTable -> domain -> String -> Value -> App () checkPatchWithTable FeatureTable table Domain OwnDomain String "selfDeletingMessages" (Value -> App ()) -> Value -> App () forall a b. (a -> b) -> a -> b $ [Pair] -> Value object [String "status" String -> String -> Pair forall a. ToJSON a => String -> a -> Pair .= String "disabled"] FeatureTable -> Domain -> String -> Value -> App () forall domain. (HasCallStack, MakesValue domain) => FeatureTable -> domain -> String -> Value -> App () checkPatchWithTable FeatureTable table Domain OwnDomain String "selfDeletingMessages" (Value -> App ()) -> Value -> App () forall a b. (a -> b) -> a -> b $ [Pair] -> Value object [String "lockStatus" String -> String -> Pair forall a. ToJSON a => String -> a -> Pair .= String "locked", String "status" String -> String -> Pair forall a. ToJSON a => String -> a -> Pair .= String "disabled"] FeatureTable -> Domain -> String -> Value -> App () forall domain. (HasCallStack, MakesValue domain) => FeatureTable -> domain -> String -> Value -> App () checkPatchWithTable FeatureTable table Domain OwnDomain String "selfDeletingMessages" (Value -> App ()) -> Value -> App () forall a b. (a -> b) -> a -> b $ [Pair] -> Value object [String "lockStatus" String -> String -> Pair forall a. ToJSON a => String -> a -> Pair .= String "unlocked", String "config" String -> Value -> Pair forall a. ToJSON a => String -> a -> Pair .= [Pair] -> Value object [String "enforcedTimeoutSeconds" String -> Value -> Pair forall a. ToJSON a => String -> a -> Pair .= Scientific -> Value A.Number Scientific 30]] FeatureTable -> Domain -> String -> Value -> App () forall domain. (HasCallStack, MakesValue domain) => FeatureTable -> domain -> String -> Value -> App () checkPatchWithTable FeatureTable table Domain OwnDomain String "selfDeletingMessages" (Value -> App ()) -> Value -> App () forall a b. (a -> b) -> a -> b $ [Pair] -> Value object [String "config" String -> Value -> Pair forall a. ToJSON a => String -> a -> Pair .= [Pair] -> Value object [String "enforcedTimeoutSeconds" String -> Value -> Pair forall a. ToJSON a => String -> a -> Pair .= Scientific -> Value A.Number Scientific 60]]