Skip to content

Commit 9b17bfa

Browse files
authored
Merge pull request #5584 from rmosolgo/skip-did-you-mean-when-disabled
Skip `did_you_mean` suggestions when feature is disabled
2 parents 680b1d7 + 30a137c commit 9b17bfa

5 files changed

Lines changed: 35 additions & 22 deletions

File tree

lib/graphql/static_validation/rules/arguments_are_defined.rb

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,12 @@ def on_argument(node, parent)
1010
elsif parent_defn
1111
kind_of_node = node_type(parent)
1212
error_arg_name = parent_name(parent, parent_defn)
13-
arg_names = context.types.arguments(parent_defn).map(&:graphql_name)
13+
suggestion = if @schema.did_you_mean
14+
arg_names = context.types.arguments(parent_defn).map(&:graphql_name)
15+
context.did_you_mean_suggestion(node.name, arg_names)
16+
end
1417
add_error(GraphQL::StaticValidation::ArgumentsAreDefinedError.new(
15-
"#{kind_of_node} '#{error_arg_name}' doesn't accept argument '#{node.name}'#{context.did_you_mean_suggestion(node.name, arg_names)}",
18+
"#{kind_of_node} '#{error_arg_name}' doesn't accept argument '#{node.name}'#{suggestion}",
1619
nodes: node,
1720
name: error_arg_name,
1821
type: kind_of_node,

lib/graphql/static_validation/rules/directives_are_defined.rb

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,12 @@ def on_directive(node, parent)
1010
if !@types.directive_exists?(node.name)
1111
@directives_are_defined_errors_by_name ||= {}
1212
error = @directives_are_defined_errors_by_name[node.name] ||= begin
13-
@directive_names ||= @types.directives.map(&:graphql_name)
13+
suggestion = if @schema.did_you_mean
14+
@directive_names ||= @types.directives.map(&:graphql_name)
15+
context.did_you_mean_suggestion(node.name, @directive_names)
16+
end
1417
err = GraphQL::StaticValidation::DirectivesAreDefinedError.new(
15-
"Directive @#{node.name} is not defined#{context.did_you_mean_suggestion(node.name, @directive_names)}",
18+
"Directive @#{node.name} is not defined#{suggestion}",
1619
nodes: [],
1720
directive: node.name
1821
)

lib/graphql/static_validation/rules/fields_are_defined_on_type.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,9 @@ def on_field(node, parent)
1414
node_name: parent_type.graphql_name
1515
))
1616
else
17-
possible_fields = possible_fields(context, parent_type)
18-
suggestion = context.did_you_mean_suggestion(node.name, possible_fields)
17+
suggestion = if @schema.did_you_mean
18+
context.did_you_mean_suggestion(node.name, possible_fields(context, parent_type))
19+
end
1920
message = "Field '#{node.name}' doesn't exist on type '#{parent_type.graphql_name}'#{suggestion}"
2021
add_error(GraphQL::StaticValidation::FieldsAreDefinedOnTypeError.new(
2122
message,

lib/graphql/static_validation/rules/fragment_types_exist.rb

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,18 +23,21 @@ def validate_type_exists(fragment_node)
2323
type_name = fragment_node.type.name
2424
type = @types.type(type_name)
2525
if type.nil?
26-
@all_possible_fragment_type_names ||= begin
27-
names = []
28-
context.types.all_types.each do |type|
29-
if type.kind.fields?
30-
names << type.graphql_name
26+
suggestion = if @schema.did_you_mean
27+
@all_possible_fragment_type_names ||= begin
28+
names = []
29+
context.types.all_types.each do |type|
30+
if type.kind.fields?
31+
names << type.graphql_name
32+
end
3133
end
34+
names
3235
end
33-
names
36+
context.did_you_mean_suggestion(type_name, @all_possible_fragment_type_names)
3437
end
3538

3639
add_error(GraphQL::StaticValidation::FragmentTypesExistError.new(
37-
"No such type #{type_name}, so it can't be a fragment condition#{context.did_you_mean_suggestion(type_name, @all_possible_fragment_type_names)}",
40+
"No such type #{type_name}, so it can't be a fragment condition#{suggestion}",
3841
nodes: fragment_node,
3942
type: type_name
4043
))

lib/graphql/static_validation/rules/variables_are_input_types.rb

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,20 @@ def on_variable_definition(node, parent)
77
type = context.query.types.type(type_name)
88

99
if type.nil?
10-
@all_possible_input_type_names ||= begin
11-
names = []
12-
context.types.all_types.each { |(t)|
13-
if t.kind.input?
14-
names << t.graphql_name
15-
end
16-
}
17-
names
10+
suggestion = if @schema.did_you_mean
11+
@all_possible_input_type_names ||= begin
12+
names = []
13+
context.types.all_types.each { |(t)|
14+
if t.kind.input?
15+
names << t.graphql_name
16+
end
17+
}
18+
names
19+
end
20+
context.did_you_mean_suggestion(type_name, @all_possible_input_type_names)
1821
end
1922
add_error(GraphQL::StaticValidation::VariablesAreInputTypesError.new(
20-
"#{type_name} isn't a defined input type (on $#{node.name})#{context.did_you_mean_suggestion(type_name, @all_possible_input_type_names)}",
23+
"#{type_name} isn't a defined input type (on $#{node.name})#{suggestion}",
2124
nodes: node,
2225
name: node.name,
2326
type: type_name

0 commit comments

Comments
 (0)