Skip to content

Commit 77d8198

Browse files
committed
Immediately return empty array in multiplex if queries list is empty
1 parent cb92bf8 commit 77d8198

3 files changed

Lines changed: 47 additions & 0 deletions

File tree

lib/graphql/execution/interpreter.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ def run_all(schema, query_options, context: {}, max_complexity: schema.max_compl
3333
end
3434
end
3535

36+
return GraphQL::EmptyObjects::EMPTY_ARRAY if queries.empty?
3637

3738
multiplex = Execution::Multiplex.new(schema: schema, queries: queries, context: context, max_complexity: max_complexity)
3839
Fiber[:__graphql_current_multiplex] = multiplex

spec/graphql/execution/interpreter_spec.rb

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -949,4 +949,25 @@ def variant
949949
assert_equal(expected_result, res["data"])
950950
end
951951
end
952+
953+
describe "multiplex queries" do
954+
it "runs multiplex queries" do
955+
result = InterpreterTest::Schema.multiplex([
956+
{
957+
query: "query Card($name: String!) { card(name: $name) { colors } }",
958+
variables: { name: "Dark Confidant" },
959+
operation_name: "Card"
960+
},
961+
{
962+
query: "query Expansion($expansion: String!) { expansion(sym: $expansion) { cards { name } } }",
963+
variables: { expansion: "RAV" },
964+
operation_name: "Expansion"
965+
}
966+
])
967+
968+
assert_equal ["BLACK"], result[0]["data"]["card"]["colors"]
969+
assert_equal [{"name" => "Dark Confidant"}], result[1]["data"]["expansion"]["cards"]
970+
assert_nil Fiber[:__graphql_runtime_info]
971+
end
972+
end
952973
end

spec/graphql/tracing/new_relic_trace_spec.rb

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,4 +237,29 @@ class SchemaWithoutAuthorizedOrResolveType < GraphQL::Schema
237237
]
238238
assert_equal expected_steps, NewRelic::EXECUTION_SCOPES
239239
end
240+
241+
describe "multiplex queries" do
242+
it "handles multiplex" do
243+
NewRelicTraceTest::SchemaWithTransactionName.multiplex([
244+
{
245+
query: "query Q1 { int }",
246+
variables: {},
247+
operation_name: "Q1"
248+
},
249+
{
250+
query: "query Q2 { int }",
251+
variables: {},
252+
operation_name: "Q2"
253+
}
254+
])
255+
256+
assert_equal ["GraphQL/query.Q1"], NewRelic::TRANSACTION_NAMES
257+
end
258+
259+
it "handles empty multiplex" do
260+
NewRelicTraceTest::SchemaWithTransactionName.multiplex([])
261+
262+
assert_equal [], NewRelic::TRANSACTION_NAMES
263+
end
264+
end
240265
end

0 commit comments

Comments
 (0)