diff options
| author | Eugen Wissner <belka@caraus.de> | 2020-06-10 11:42:00 +0200 |
|---|---|---|
| committer | Eugen Wissner <belka@caraus.de> | 2020-06-10 11:42:00 +0200 |
| commit | c37b9c88b1f64d842ad837a18bfbe01026324abb (patch) | |
| tree | 729da648f29f6db9062e654ee159d610d418fe17 /tests | |
| parent | fdb1268213f9ea6da33d82fc57e1b0c7874c3fe2 (diff) | |
| download | graphql-c37b9c88b1f64d842ad837a18bfbe01026324abb.tar.gz | |
Skip unknown fields
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/Language/GraphQL/ExecuteSpec.hs | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/tests/Language/GraphQL/ExecuteSpec.hs b/tests/Language/GraphQL/ExecuteSpec.hs new file mode 100644 index 0000000..d0e7a66 --- /dev/null +++ b/tests/Language/GraphQL/ExecuteSpec.hs @@ -0,0 +1,42 @@ +{-# LANGUAGE OverloadedStrings #-} +module Language.GraphQL.ExecuteSpec + ( spec + ) where + +import Data.Aeson ((.=)) +import qualified Data.Aeson as Aeson +import Data.Functor.Identity (Identity(..)) +import Data.HashMap.Strict (HashMap) +import qualified Data.HashMap.Strict as HashMap +import Language.GraphQL.AST (Name) +import Language.GraphQL.AST.Parser (document) +import Language.GraphQL.Error +import Language.GraphQL.Execute +import Language.GraphQL.Type +import Language.GraphQL.Type.Out as Out +import Test.Hspec (Spec, describe, it, shouldBe) +import Text.Megaparsec (parse) + +schema :: Schema Identity +schema = Schema {query = queryType, mutation = Nothing} + +queryType :: Out.ObjectType Identity +queryType = Out.ObjectType "Query" Nothing [] + $ HashMap.singleton "count" + $ Out.Resolver countField + $ pure + $ Int 8 + where + countField = Out.Field Nothing (Out.NonNullScalarType int) HashMap.empty + +spec :: Spec +spec = + describe "execute" $ + it "skips unknown fields" $ + let expected = Aeson.object + ["data" .= Aeson.object ["count" .= (8 :: Int)]] + execute' = execute schema (mempty :: HashMap Name Aeson.Value) + actual = runIdentity + $ either parseError execute' + $ parse document "" "{ count number }" + in actual `shouldBe` expected |
