summaryrefslogtreecommitdiff
path: root/tests/Language
diff options
context:
space:
mode:
authorEugen Wissner <belka@caraus.de>2020-06-10 11:42:00 +0200
committerEugen Wissner <belka@caraus.de>2020-06-10 11:42:00 +0200
commitc37b9c88b1f64d842ad837a18bfbe01026324abb (patch)
tree729da648f29f6db9062e654ee159d610d418fe17 /tests/Language
parentfdb1268213f9ea6da33d82fc57e1b0c7874c3fe2 (diff)
downloadgraphql-c37b9c88b1f64d842ad837a18bfbe01026324abb.tar.gz
Skip unknown fields
Diffstat (limited to 'tests/Language')
-rw-r--r--tests/Language/GraphQL/ExecuteSpec.hs42
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