{-# LANGUAGE TemplateHaskell, OverloadedStrings, MultiParamTypeClasses, FunctionalDependencies, TypeSynonymInstances, FlexibleInstances #-} import Data.Aeson.APIFieldJsonTH import Test.HUnit import Data.Aeson import Control.Lens data SomeQuery = SomeQuery { _someQueryPage :: Int , _someQueryText :: String } deriving (Eq, Show) makeFields ''SomeQuery deriveApiFieldJSON ''SomeQuery fromJson = "fromJson example" ~: dec ~?= (Just $ SomeQuery 1 "hoge") where dec = decode "{\"page\": 1, \"text\": \"hoge\"}" lensExample = "lens makeFields example" ~: (r ^. page) ~?= 3 where r = SomeQuery 3 "hoge" -- main :: IO () main = runTestTT $ TestList [fromJson, lensExample]