Class: GraphQL::Modernize::Rules::RedundantRequiredTrue

Inherits:
Base
  • Object
show all
Defined in:
lib/graphql/modernize/rules/modernize.rb

Instance Attribute Summary

Attributes inherited from Base

#offenses

Instance Method Summary collapse

Methods inherited from Base

#initialize, node_pattern, node_types, rule, #visit

Constructor Details

This class inherits a constructor from GraphQL::Modernize::Rules::Base

Instance Method Details

#on_match(node, _captures) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/graphql/modernize/rules/modernize.rb', line 11

def on_match(node, _captures)
  return unless inside?(node, :object, :input_object, :interface, :resolver, :mutation, :subscription)

  arguments = keyword_arguments(node, :required)
  return if arguments.empty?

  if arguments.length > 1
    return unless arguments.any? { |argument| argument.value.is_a?(Prism::TrueNode) }

    return add_offense(arguments.first.location, safety: :manual,
                                                 message: "Resolve duplicate `required:` options manually")
  end
  return unless arguments.first.value.is_a?(Prism::TrueNode)

  argument = arguments.first
  if dynamic_keyword_arguments?(node)
    return add_offense(argument.location, safety: :manual,
                                          message: "Review `**` before removing `required: true` manually")
  end

  add_offense(argument.location, message: "Remove the default `required: true` option") do |rw|
    rw.remove_keyword_argument(node, :required)
  end
end