From cf029961e89c3835998725f9b69602a5edf161a0 Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Wed, 10 Jul 2024 13:22:48 +0200 Subject: Add deriveFromGraphQL For deriving FromGraphQL instances automatically. --- tests/Language/GraphQL/ClassSpec.hs | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) (limited to 'tests') diff --git a/tests/Language/GraphQL/ClassSpec.hs b/tests/Language/GraphQL/ClassSpec.hs index 9e98905..c14ca7b 100644 --- a/tests/Language/GraphQL/ClassSpec.hs +++ b/tests/Language/GraphQL/ClassSpec.hs @@ -12,16 +12,22 @@ import Data.Text (Text) import Data.Time (UTCTime(..)) import Data.Time.Calendar.OrdinalDate (fromOrdinalDate) import qualified Language.GraphQL.Type as Type -import Language.GraphQL.Class (FromGraphQL(..), ToGraphQL(..), deriveToGraphQL) +import Language.GraphQL.Class + ( FromGraphQL(..) + , ToGraphQL(..) + , deriveFromGraphQL + , deriveToGraphQL + ) import Test.Hspec (Spec, describe, it, shouldBe) import qualified Data.HashMap.Strict as HashMap data TwoFieldRecord = TwoFieldRecord { x :: Int , y :: Bool - } + } deriving (Eq, Show) $(deriveToGraphQL ''TwoFieldRecord) +$(deriveFromGraphQL ''TwoFieldRecord) spec :: Spec spec = do @@ -76,7 +82,7 @@ spec = do in actual `shouldBe` expected describe "deriveToGraphQL" $ do - it "derives ToGraphQL for a record" $ do + it "derives ToGraphQL for a record with multiple fields" $ do let expected = Type.Object $ HashMap.fromList [ ("x", Type.Int 1) , ("y", Type.Boolean True) @@ -87,3 +93,15 @@ spec = do , y = True } in toGraphQL given `shouldBe` expected + + describe "deriveFromGraphQL" $ do + it "derives FromGraphQL for a record with multiple fields" $ do + let given = Type.Object $ HashMap.fromList + [ ("x", Type.Int 1) + , ("y", Type.Boolean True) + ] + expected = TwoFieldRecord + { x = 1 + , y = True + } + in fromGraphQL given `shouldBe` Just expected -- cgit v1.2.3