packages feed

hspec-golden-aeson-0.2.0.3: test/Test/Types/MismatchedToAndFromSerialization.hs

{-# LANGUAGE DeriveGeneric     #-}
{-# LANGUAGE OverloadedStrings #-}
module Test.Types.MismatchedToAndFromSerialization where

import           Data.Aeson
import           GHC.Generics
import           Test.QuickCheck
import           Test.QuickCheck.Arbitrary.ADT

data Person = Person {
  name :: String
, age  :: Int
} deriving (Eq,Show,Generic)

-- ToJSON and FromJSON use different strings, this should break.
instance ToJSON Person where
  toJSON (Person name age) = object [
       "personName" .= name
    ,  "personAge"  .= age
    ]

instance FromJSON Person where
  parseJSON = withObject "Expected a Person object" $ \o ->
    Person <$> o .: "name"
           <*> o .: "age"

instance ToADTArbitrary Person
instance Arbitrary Person where
  arbitrary = genericArbitrary