Class: GraphQL::StaticValidation::RequiredArgumentsArePresent

Inherits:
ArgumentsValidator show all
Defined in:
lib/graphql/static_validation/rules/required_arguments_are_present.rb

Instance Method Summary collapse

Methods inherited from ArgumentsValidator

#validate

Methods included from Message::MessageHelper

#message

Instance Method Details

#validate_node(node, defn, context) ⇒ Object



2
3
4
5
6
7
8
9
10
11
12
# File 'lib/graphql/static_validation/rules/required_arguments_are_present.rb', line 2

def validate_node(node, defn, context)
  present_argument_names = node.arguments.map(&:name)
  required_argument_names = defn.arguments.values
    .select { |a| a.type.kind.non_null? }
    .map(&:name)

  missing_names = required_argument_names - present_argument_names
  if missing_names.any?
    context.errors << message("#{node.class.name.split("::").last} '#{node.name}' is missing required arguments: #{missing_names.join(", ")}", node)
  end
end