Skip to content

Commit dd0961f

Browse files
author
Robert Mosolgo
authored
Merge pull request rmosolgo#1543 from gauravtiwari/master
Use a default empty hash if no arguments supplied
2 parents 8d86640 + f0ee853 commit dd0961f

File tree

3 files changed

+37
-4
lines changed

3 files changed

+37
-4
lines changed

lib/graphql/schema/relay_classic_mutation.rb

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,14 @@ class RelayClassicMutation < GraphQL::Schema::Mutation
2727

2828
# Override {GraphQL::Schema::Mutation#resolve_mutation} to
2929
# delete `client_mutation_id` from the kwargs.
30-
def resolve_mutation(kwargs)
30+
def resolve_mutation(**kwargs)
3131
# This is handled by Relay::Mutation::Resolve, a bit hacky, but here we are.
3232
kwargs.delete(:client_mutation_id)
33-
resolve(**kwargs)
33+
if kwargs.any?
34+
resolve(**kwargs)
35+
else
36+
resolve
37+
end
3438
end
3539

3640
resolve_method(:resolve_mutation)

spec/graphql/schema/relay_classic_mutation_spec.rb

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,20 @@
3535
assert mutation.null
3636
end
3737
end
38+
39+
describe "execution" do
40+
it "works with no arguments" do
41+
res = Jazz::Schema.execute <<-GRAPHQL
42+
mutation {
43+
addSitar(input: {}) {
44+
instrument {
45+
name
46+
}
47+
}
48+
}
49+
GRAPHQL
50+
51+
assert_equal "Sitar", res["data"]["addSitar"]["instrument"]["name"]
52+
end
53+
end
3854
end

spec/support/jazz.rb

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,9 @@ def self.data
4545
end
4646

4747
class BaseArgument < GraphQL::Schema::Argument
48-
def initialize(name, type, desc = nil, custom: nil, **kwargs)
48+
def initialize(*args, custom: nil, **kwargs)
4949
@custom = custom
50-
super(name, type, desc, **kwargs)
50+
super(*args, **kwargs)
5151
end
5252

5353
def to_graphql
@@ -446,12 +446,25 @@ def resolve(name:, family:, execution_errors:)
446446
end
447447
end
448448

449+
class AddSitar < GraphQL::Schema::RelayClassicMutation
450+
null true
451+
description "Get Sitar to musical instrument"
452+
453+
field :instrument, InstrumentType, null: false
454+
455+
def resolve
456+
instrument = Models::Instrument.new("Sitar", :str)
457+
{ instrument: instrument }
458+
end
459+
end
460+
449461
class Mutation < BaseObject
450462
field :add_ensemble, Ensemble, null: false do
451463
argument :input, EnsembleInput, required: true
452464
end
453465

454466
field :add_instrument, mutation: AddInstrument
467+
field :add_sitar, mutation: AddSitar
455468

456469
def add_ensemble(input:)
457470
ens = Models::Ensemble.new(input.name)

0 commit comments

Comments
 (0)