Fix merging fields with arguments

executeField shouldn't assume that a selection has only one field with a
given name, but it should take the first field. The underlying cause is
a wrong pattern, which (because of the laziness) is executed only if the
field has arguments.
This commit is contained in:
2021-06-18 06:51:14 +02:00
parent 2ce2be5d91
commit 6fe9eb72e4
3 changed files with 10 additions and 2 deletions

View File

@ -21,7 +21,9 @@ import Language.GraphQL.Error
import Language.GraphQL.Execute (execute)
import qualified Language.GraphQL.Type.Schema as Schema
import Language.GraphQL.Type
import qualified Language.GraphQL.Type.In as In
import qualified Language.GraphQL.Type.Out as Out
import Prelude hiding (id)
import Test.Hspec (Spec, context, describe, it, shouldBe)
import Text.Megaparsec (parse)
import Text.RawString.QQ (r)
@ -43,7 +45,9 @@ queryType = Out.ObjectType "Query" Nothing []
$ pure $ Object mempty
where
philosopherField =
Out.Field Nothing (Out.NonNullObjectType philosopherType) HashMap.empty
Out.Field Nothing (Out.NonNullObjectType philosopherType)
$ HashMap.singleton "id"
$ In.Argument Nothing (In.NamedScalarType id) Nothing
musicType :: Out.ObjectType (Either SomeException)
musicType = Out.ObjectType "Music" Nothing []