forked from OSS/graphql
		
	Fix values not being coerced to lists
This commit is contained in:
		| @@ -106,4 +106,6 @@ test-suite graphql-test | ||||
|     unordered-containers, | ||||
|     containers, | ||||
|     vector | ||||
|   build-tool-depends: | ||||
|     hspec-discover:hspec-discover | ||||
|   default-language: Haskell2010 | ||||
|   | ||||
| @@ -556,33 +556,24 @@ coerceArgumentValues argumentDefinitions argumentValues = | ||||
|                     $ Just inputValue | ||||
|                 | otherwise -> throwM | ||||
|                     $ InputCoercionException (Text.unpack argumentName) variableType Nothing | ||||
|  | ||||
|     matchFieldValues' = matchFieldValues coerceArgumentValue | ||||
|         $ Full.node <$> argumentValues | ||||
|     coerceArgumentValue inputType (Transform.Int integer) = | ||||
|         coerceInputLiteral inputType (Type.Int integer) | ||||
|     coerceArgumentValue inputType (Transform.Boolean boolean) = | ||||
|         coerceInputLiteral inputType (Type.Boolean boolean) | ||||
|     coerceArgumentValue inputType (Transform.String string) = | ||||
|         coerceInputLiteral inputType (Type.String string) | ||||
|     coerceArgumentValue inputType (Transform.Float float) = | ||||
|         coerceInputLiteral inputType (Type.Float float) | ||||
|     coerceArgumentValue inputType (Transform.Enum enum) = | ||||
|         coerceInputLiteral inputType (Type.Enum enum) | ||||
|     coerceArgumentValue inputType Transform.Null | ||||
|         | In.isNonNullType inputType = Nothing | ||||
|         | otherwise = coerceInputLiteral inputType Type.Null | ||||
|     coerceArgumentValue (In.ListBaseType inputType) (Transform.List list) = | ||||
|         let coerceItem = coerceArgumentValue inputType | ||||
|          in Type.List <$> traverse coerceItem list | ||||
|     coerceArgumentValue (In.InputObjectBaseType inputType) (Transform.Object object) | ||||
|         | In.InputObjectType _ _ inputFields <- inputType =  | ||||
|             let go = forEachField object | ||||
|                 resultMap = HashMap.foldrWithKey go (pure mempty) inputFields | ||||
|              in Type.Object <$> resultMap | ||||
|     coerceArgumentValue _ (Transform.Variable variable) = pure variable | ||||
|     coerceArgumentValue _ _ = Nothing | ||||
|     forEachField object variableName (In.InputField _ variableType defaultValue) = | ||||
|         matchFieldValues coerceArgumentValue object variableName variableType defaultValue | ||||
|  | ||||
|     coerceArgumentValue inputType transform = | ||||
|       coerceInputLiteral inputType $ extractArgumentValue transform  | ||||
|  | ||||
|     extractArgumentValue (Transform.Int integer) = Type.Int integer | ||||
|     extractArgumentValue (Transform.Boolean boolean) = Type.Boolean boolean | ||||
|     extractArgumentValue (Transform.String string) = Type.String string | ||||
|     extractArgumentValue (Transform.Float float) = Type.Float float | ||||
|     extractArgumentValue (Transform.Enum enum) = Type.Enum enum | ||||
|     extractArgumentValue Transform.Null = Type.Null | ||||
|     extractArgumentValue (Transform.List list) =  | ||||
|       Type.List $ extractArgumentValue <$> list | ||||
|     extractArgumentValue (Transform.Object object) = | ||||
|       Type.Object $ extractArgumentValue <$> object | ||||
|     extractArgumentValue (Transform.Variable variable) = variable | ||||
|  | ||||
| collectFields :: Monad m | ||||
|     => Out.ObjectType m | ||||
|   | ||||
		Reference in New Issue
	
	Block a user