Skip to content
This repository was archived by the owner on Jul 25, 2024. It is now read-only.

Commit 0b6c805

Browse files
author
Josh Price
committed
Handle lists as argument types
Fixes #45
1 parent d7abd3d commit 0b6c805

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

lib/graphql/execution/executor.ex

+6
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,12 @@ defmodule GraphQL.Execution.Executor do
219219
GraphQL.Types.parse_value(type.type, variable_value)
220220
end
221221

222+
defp value_from_ast(%{kind: :Argument, value: %{kind: :ListValue, values: values_ast}}, type, variable_values) do
223+
GraphQL.Types.parse_value(type.type, Enum.map(values_ast, fn(value_ast) ->
224+
GraphQL.Types.parse_value(type.type, value_ast.value)
225+
end))
226+
end
227+
222228
defp value_from_ast(value_ast, type, _variable_values) do
223229
GraphQL.Types.parse_value(type.type, value_ast.value.value)
224230
end

test/graphql/execution/executor_test.exs

+19-1
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,6 @@ defmodule GraphQL.Execution.Executor.ExecutorTest do
109109
assert_execute {"{id, ...spreada ...spreadb} fragment spreadb on BType { b } fragment spreada on AType { a }", schema}, %{id: "1", b: "b"}
110110
end
111111

112-
113112
test "allow {module, function, args} style of resolve" do
114113
schema = %Schema{
115114
query: %ObjectType{
@@ -241,4 +240,23 @@ defmodule GraphQL.Execution.Executor.ExecutorTest do
241240
%{title: "B"}
242241
]}
243242
end
243+
244+
test "list arguments" do
245+
schema = %Schema{
246+
query: %ObjectType{
247+
name: "ListsAsArguments",
248+
fields: %{
249+
numbers: %{
250+
type: %List{ofType: %Int{}},
251+
args: %{
252+
nums: %{type: %List{ofType: %Int{}}}
253+
},
254+
resolve: fn(_, %{nums: nums}, _) -> nums end
255+
}
256+
}
257+
}
258+
}
259+
260+
assert_execute {"{numbers(nums: [1, 2])}", schema}, %{numbers: [1, 2]}
261+
end
244262
end

0 commit comments

Comments
 (0)