Skip to content

Commit f9b6227

Browse files
authored
Merge pull request rmosolgo#2379 from rmosolgo/generate-base-argument
Generate BaseArgument during install
2 parents da95025 + 67d9a2e commit f9b6227

File tree

7 files changed

+31
-3
lines changed

7 files changed

+31
-3
lines changed

lib/generators/graphql/install_generator.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ module Generators
1313
# - graphql/
1414
# - resolvers/
1515
# - types/
16+
# - base_argument.rb
1617
# - base_field.rb
1718
# - base_enum.rb
1819
# - base_input_object.rb
@@ -94,7 +95,7 @@ def create_folder_structure
9495
create_dir("#{options[:directory]}/types")
9596
template("schema.erb", schema_file_path)
9697

97-
["base_object", "base_field", "base_enum", "base_input_object", "base_interface", "base_scalar", "base_union"].each do |base_type|
98+
["base_object", "base_argument", "base_field", "base_enum", "base_input_object", "base_interface", "base_scalar", "base_union"].each do |base_type|
9899
template("#{base_type}.erb", "#{options[:directory]}/types/#{base_type}.rb")
99100
end
100101

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
module Types
2+
class BaseArgument < GraphQL::Schema::Argument
3+
end
4+
end

lib/generators/graphql/templates/base_field.erb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
module Types
22
class BaseField < GraphQL::Schema::Field
3+
argument_class Types::BaseArgument
4+
35
def resolve_field(obj, args, ctx)
46
resolve(obj, args, ctx)
57
end
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
module Types
22
class BaseInputObject < GraphQL::Schema::InputObject
3+
argument_class Types::BaseArgument
34
end
45
end

lib/graphql/schema/member/has_fields.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ def get_field(field_name)
5454
# @return [void]
5555
def add_field(field_defn)
5656
if CONFLICT_FIELD_NAMES.include?(field_defn.method_sym)
57-
warn "#{self.graphql_name}'s `field :#{field_defn.name}` conflicts with a built-in method, use `method:` to pick a different resolver method for this field (for example, `resolver_method: :resolve_#{field_defn.method_sym}` and `def resolve_#{field_defn.method_sym}`)"
57+
warn "#{self.graphql_name}'s `field :#{field_defn.name}` conflicts with a built-in method, use `resolver_method:` to pick a different resolver method for this field (for example, `resolver_method: :resolve_#{field_defn.method_sym}` and `def resolve_#{field_defn.method_sym}`)"
5858
end
5959
own_fields[field_defn.name] = field_defn
6060
nil

spec/graphql/schema/object_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -315,7 +315,7 @@ def call(o, a, c)
315315

316316
describe "when fields conflict with built-ins" do
317317
it "warns when no override" do
318-
expected_warning = "X's `field :method` conflicts with a built-in method, use `method:` to pick a different resolver method for this field (for example, `resolver_method: :resolve_method` and `def resolve_method`)\n"
318+
expected_warning = "X's `field :method` conflicts with a built-in method, use `resolver_method:` to pick a different resolver method for this field (for example, `resolver_method: :resolve_method` and `def resolve_method`)\n"
319319
assert_output "", expected_warning do
320320
Class.new(GraphQL::Schema::Object) do
321321
graphql_name "X"

spec/integration/rails/generators/graphql/install_generator_spec.rb

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,26 @@ def test_field
6565

6666
assert_file "app/graphql/types/query_type.rb", expected_query_type
6767
assert_file "app/controllers/graphql_controller.rb", EXPECTED_GRAPHQLS_CONTROLLER
68+
expected_base_field = <<-RUBY
69+
module Types
70+
class BaseField < GraphQL::Schema::Field
71+
argument_class Types::BaseArgument
72+
73+
def resolve_field(obj, args, ctx)
74+
resolve(obj, args, ctx)
75+
end
76+
end
77+
end
78+
RUBY
79+
assert_file "app/graphql/types/base_field.rb", expected_base_field
80+
81+
expected_base_argument = <<-RUBY
82+
module Types
83+
class BaseArgument < GraphQL::Schema::Argument
84+
end
85+
end
86+
RUBY
87+
assert_file "app/graphql/types/base_argument.rb", expected_base_argument
6888
end
6989

7090
test "it allows for a user-specified install directory" do

0 commit comments

Comments
 (0)