diff options
| author | Eugen Wissner <belka@caraus.de> | 2024-07-07 12:55:42 +0200 |
|---|---|---|
| committer | Eugen Wissner <belka@caraus.de> | 2024-07-07 12:55:42 +0200 |
| commit | 11ab7e18e13a68f3b846b514193f8b2d2a63be42 (patch) | |
| tree | c1c28f1155616d17ec177a85e7a205f8af4541a2 /tests | |
| parent | 6590cfaae849bf92faa3dd5e96b8bfc8b303881d (diff) | |
| download | graphql-spice-11ab7e18e13a68f3b846b514193f8b2d2a63be42.tar.gz | |
Add `deriveToGraphQL`
… for deriving `ToGraphQL` instances automatically.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/Language/GraphQL/ClassSpec.hs | 24 |
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 |
