packages feed

jordan-0.2.0.0: test/Jordan/FromJSON/UnboxedReportingSpec.hs

{-# LANGUAGE LambdaCase #-}

module Jordan.FromJSON.UnboxedReportingSpec
  ( spec,
    prettyWhenError,
  )
where

import Data.Text (Text)
import Data.Text.Encoding (encodeUtf8)
import Jordan
import Jordan.FromJSON.Class (FromJSON (fromJSON))
import Jordan.SpecDefs (basicParsingSpec)
import Jordan.Types.JSONError
import Test.Hspec (Spec, describe, it, shouldBe)

prettyWhenError :: Either JSONError a -> Either Text a
prettyWhenError = \case
  Left je -> Left $ prettyPrintJSONError je
  Right a -> Right a

spec :: Spec
spec = describe "Jordan.FromJSON.Reporting" $ do
  basicParsingSpec $ \t v ->
    prettyWhenError (parseOrReport (encodeUtf8 t)) `shouldBe` Right v