packages feed

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
      }