From 11ab7e18e13a68f3b846b514193f8b2d2a63be42 Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Sun, 7 Jul 2024 12:55:42 +0200 Subject: Add `deriveToGraphQL` MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit … for deriving `ToGraphQL` instances automatically. --- tests/Language/GraphQL/ClassSpec.hs | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) (limited to 'tests') diff --git a/tests/Language/GraphQL/ClassSpec.hs b/tests/Language/GraphQL/ClassSpec.hs index a5ed41f..9e98905 100644 --- a/tests/Language/GraphQL/ClassSpec.hs +++ b/tests/Language/GraphQL/ClassSpec.hs @@ -3,6 +3,7 @@ obtain one at https://mozilla.org/MPL/2.0/. -} {-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE TemplateHaskell #-} module Language.GraphQL.ClassSpec ( spec ) where @@ -11,8 +12,16 @@ 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(..)) +import Language.GraphQL.Class (FromGraphQL(..), ToGraphQL(..), deriveToGraphQL) import Test.Hspec (Spec, describe, it, shouldBe) +import qualified Data.HashMap.Strict as HashMap + +data TwoFieldRecord = TwoFieldRecord + { x :: Int + , y :: Bool + } + +$(deriveToGraphQL ''TwoFieldRecord) spec :: Spec spec = do @@ -65,3 +74,16 @@ spec = do } actual = fromGraphQL given in actual `shouldBe` expected + + describe "deriveToGraphQL" $ do + it "derives ToGraphQL for a record" $ do + let expected = Type.Object $ HashMap.fromList + [ ("x", Type.Int 1) + , ("y", Type.Boolean True) + , ("__typename", Type.String "TwoFieldRecord") + ] + given = TwoFieldRecord + { x = 1 + , y = True + } + in toGraphQL given `shouldBe` expected -- cgit v1.2.3