module Test.Hspec.Expectations.Json.Lifted
  ( shouldBeJson
  , shouldBeUnorderedJson
  , shouldMatchJson
  , shouldMatchOrderedJson
  ) where

import Prelude

import Control.Monad.IO.Class (MonadIO(..))
import Data.Aeson
import GHC.Stack
import qualified Test.Hspec.Expectations.Json as E

shouldBeJson :: (HasCallStack, MonadIO m) => Value -> Value -> m ()
shouldBeJson :: Value -> Value -> m ()
shouldBeJson Value
x = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> (Value -> IO ()) -> Value -> m ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. HasCallStack => Value -> Value -> IO ()
Value -> Value -> IO ()
E.shouldBeJson Value
x

shouldBeUnorderedJson :: (HasCallStack, MonadIO m) => Value -> Value -> m ()
shouldBeUnorderedJson :: Value -> Value -> m ()
shouldBeUnorderedJson Value
x = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> (Value -> IO ()) -> Value -> m ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. HasCallStack => Value -> Value -> IO ()
Value -> Value -> IO ()
E.shouldBeUnorderedJson Value
x

shouldMatchJson :: (HasCallStack, MonadIO m) => Value -> Value -> m ()
shouldMatchJson :: Value -> Value -> m ()
shouldMatchJson Value
x = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> (Value -> IO ()) -> Value -> m ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. HasCallStack => Value -> Value -> IO ()
Value -> Value -> IO ()
E.shouldMatchJson Value
x

shouldMatchOrderedJson :: (HasCallStack, MonadIO m) => Value -> Value -> m ()
shouldMatchOrderedJson :: Value -> Value -> m ()
shouldMatchOrderedJson Value
x = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> (Value -> IO ()) -> Value -> m ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. HasCallStack => Value -> Value -> IO ()
Value -> Value -> IO ()
E.shouldMatchOrderedJson Value
x