Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Expectations on JSON Value
s
Semantics:
Assertion that fails on: | extra Object keys | wrong Array order |
---|---|---|
shouldBeJson | Yes | Yes |
shouldBeUnorderedJson | Yes | No |
shouldMatchJson | No | No |
shouldMatchOrderedJson | No | Yes |
Synopsis
- shouldMatchJson :: HasCallStack => Value -> Value -> IO ()
- shouldBeJson :: HasCallStack => Value -> Value -> IO ()
- shouldBeJsonNormalized :: HasCallStack => Normalizer -> Value -> Value -> IO ()
- data Normalizer
- defaultNormalizer :: Normalizer
- treatNullsAsMissing :: Normalizer
- ignoreArrayOrdering :: Normalizer
- subsetActualToExpected :: Normalizer
- expandHeterogenousArrays :: Normalizer
- shouldBeUnorderedJson :: HasCallStack => Value -> Value -> IO ()
- shouldMatchOrderedJson :: HasCallStack => Value -> Value -> IO ()
- matchesJson :: Value -> Value -> Bool
Documentation
shouldMatchJson :: HasCallStack => Value -> Value -> IO () infix 1 Source #
shouldBeJson
, ignoring extra Object keys or Array ordering
>>>
:{
catchFailure $ [aesonQQ| { "a": [true, false], "b": false, "c": true } |] `shouldMatchJson` [aesonQQ| { "a": [false, true], "b": false } |] :} <passed>
>>>
:{
catchFailure $ [aesonQQ| { "a": [true, false], "b": false, "c": true } |] `shouldMatchJson` [aesonQQ| { "a": [false, true], "b": true } |] :} { "a": [ false, true ], --- "b": true +++ "b": false }
shouldBeJson :: HasCallStack => Value -> Value -> IO () infix 1 Source #
Compare two JSON values, with a useful diff
>>>
:{
catchFailure $ [aesonQQ| { "a": true, "b": false } |] `shouldBeJson` [aesonQQ| { "a": true, "b": false } |] :} <passed>
>>>
:{
catchFailure $ [aesonQQ| { "a": true, "b": false } |] `shouldBeJson` [aesonQQ| { "a": true, "b": true } |] :} { "a": true, --- "b": true +++ "b": false }
shouldBeJsonNormalized :: HasCallStack => Normalizer -> Value -> Value -> IO () Source #
data Normalizer Source #
Instances
Monoid Normalizer Source # | |
Defined in Test.Hspec.Expectations.Json mempty :: Normalizer # mappend :: Normalizer -> Normalizer -> Normalizer # mconcat :: [Normalizer] -> Normalizer # | |
Semigroup Normalizer Source # | |
Defined in Test.Hspec.Expectations.Json (<>) :: Normalizer -> Normalizer -> Normalizer # sconcat :: NonEmpty Normalizer -> Normalizer # stimes :: Integral b => b -> Normalizer -> Normalizer # |
Legacy API
Prefer to use shouldBeJsonNormalized with the appropriate Normalizer
shouldBeUnorderedJson :: HasCallStack => Value -> Value -> IO () infix 1 Source #
shouldBeJson
, ignoring Array ordering
>>>
:{
catchFailure $ [aesonQQ| { "a": [true, false], "b": false } |] `shouldBeUnorderedJson` [aesonQQ| { "a": [false, true], "b": false } |] :} <passed>
>>>
:{
catchFailure $ [aesonQQ| { "a": [true, false], "b": false, "c": true } |] `shouldBeUnorderedJson` [aesonQQ| { "a": [false, true], "b": true } |] :} { "a": [ false, true ], --- "b": true +++ "b": false, +++ "c": true }
shouldMatchOrderedJson :: HasCallStack => Value -> Value -> IO () infix 1 Source #
shouldBeJson
, ignoring extra Object keys
>>>
:{
catchFailure $ [aesonQQ| { "a": [true, false], "b": false, "c": true } |] `shouldMatchOrderedJson` [aesonQQ| { "a": [true, false], "b": false } |] :} <passed>
>>>
:{
catchFailure $ [aesonQQ| { "a": [true, false], "b": false, "c": true } |] `shouldMatchOrderedJson` [aesonQQ| { "a": [false, true], "b": true } |] :} { "a": [ --- false, --- true +++ true, +++ false ], --- "b": true +++ "b": false }
As predicates
These are only created when a specific need arises
matchesJson :: Value -> Value -> Bool Source #
Compare JSON values with the same semantics as shouldMatchJson