hjsonschema-0.10.0.0: test/Local/Failure.hs
module Local.Failure where
import Data.Aeson
import qualified Data.Aeson.Pointer as P
import Data.Monoid
import Test.Tasty (TestTree)
import qualified Test.Tasty.HUnit as HU
import Data.JsonSchema.Draft4
import qualified Data.Validator.Draft4 as VA
correctPaths :: [TestTree]
correctPaths =
[ HU.testCase "Items object" itemsObject
, HU.testCase "Items array" itemsArray
]
itemsObject :: IO ()
itemsObject = HU.assertEqual "Path to invalid data"
(P.Pointer [P.Token "0"])
(_invalidOffendingData failure)
where
[failure] = runValidate (ReferencedSchemas schema mempty)
sw (toJSON [[True, True]])
schema :: Schema
schema = emptySchema
{ _schemaItems = Just (VA.ItemsObject (emptySchema { _schemaUniqueItems = Just True }))
}
sw :: SchemaWithURI Schema
sw = SchemaWithURI
{ _swSchema = schema
, _swURI = Nothing
}
itemsArray :: IO ()
itemsArray = HU.assertEqual "Path to invalid data"
(P.Pointer [P.Token "0"])
(_invalidOffendingData failure)
where
[failure] = runValidate (ReferencedSchemas schema mempty)
sw (toJSON [[True, True]])
schema :: Schema
schema = emptySchema
{ _schemaItems = Just (VA.ItemsArray [emptySchema { _schemaUniqueItems = Just True }])
}
sw :: SchemaWithURI Schema
sw = SchemaWithURI
{ _swSchema = schema
, _swURI = Nothing
}