summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorEugen Wissner <belka@caraus.de>2024-07-07 12:55:42 +0200
committerEugen Wissner <belka@caraus.de>2024-07-07 12:55:42 +0200
commit11ab7e18e13a68f3b846b514193f8b2d2a63be42 (patch)
treec1c28f1155616d17ec177a85e7a205f8af4541a2 /tests
parent6590cfaae849bf92faa3dd5e96b8bfc8b303881d (diff)
downloadgraphql-spice-11ab7e18e13a68f3b846b514193f8b2d2a63be42.tar.gz
Add `deriveToGraphQL`
… for deriving `ToGraphQL` instances automatically.
Diffstat (limited to 'tests')
-rw-r--r--tests/Language/GraphQL/ClassSpec.hs24
1 files changed, 23 insertions, 1 deletions
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