Skip to content

Commit de26425

Browse files
authored
Merge pull request rmosolgo#2450 from chrisbutcher/add-extras-setter-to-graphql-schema-field
Add `extras` setter to GraphQL::Schema::Field
2 parents fce0e54 + 0ad1579 commit de26425

File tree

2 files changed

+33
-3
lines changed

2 files changed

+33
-3
lines changed

lib/graphql/schema/field.rb

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,6 @@ def resolver
4646

4747
alias :mutation :resolver
4848

49-
# @return [Array<Symbol>]
50-
attr_reader :extras
51-
5249
# @return [Boolean] Apply tracing to this field? (Default: skip scalars, this is the override value)
5350
attr_reader :trace
5451

@@ -318,6 +315,21 @@ def extension(extension, options = nil)
318315
extensions([{extension => options}])
319316
end
320317

318+
# Read extras (as symbols) from this field,
319+
# or add new extras to be opted into by this field's resolver.
320+
#
321+
# @param new_extras [Array<Symbol>] Add extras to this field
322+
# @return [Array<Symbol>]
323+
def extras(new_extras = nil)
324+
if new_extras.nil?
325+
# Read the value
326+
@extras
327+
else
328+
# Append to the set of extras on this field
329+
@extras.concat(new_extras)
330+
end
331+
end
332+
321333
def complexity(new_complexity)
322334
case new_complexity
323335
when Proc

spec/graphql/schema/field_spec.rb

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,24 @@
129129
assert_equal "TRUE", res["data"]["upcaseCheck3"]
130130
assert_equal "\"WHY NOT?\"", res["data"]["upcaseCheck4"]
131131
end
132+
133+
it "can be read via #extras" do
134+
field = Jazz::Musician.fields["addError"]
135+
assert_equal [:execution_errors], field.extras
136+
end
137+
138+
it "can be added by passing an array of symbols to #extras" do
139+
object = Class.new(Jazz::BaseObject) do
140+
graphql_name "JustAName"
141+
142+
field :test, String, null: true, extras: [:lookahead]
143+
end
144+
145+
field = object.fields['test']
146+
147+
field.extras([:ast_node])
148+
assert_equal [:lookahead, :ast_node], field.extras
149+
end
132150
end
133151

134152
it "is the #owner of its arguments" do

0 commit comments

Comments
 (0)