module GraphQL::StaticValidation::VariablesAreInputTypes

Public Instance Methods

on_variable_definition(node, parent) click to toggle source
Calls superclass method
# File lib/graphql/static_validation/rules/variables_are_input_types.rb, line 5
def on_variable_definition(node, parent)
  type_name = get_type_name(node.type)
  type = context.warden.get_type(type_name)

  if type.nil?
    add_error(GraphQL::StaticValidation::VariablesAreInputTypesError.new(
      "#{type_name} isn't a defined input type (on $#{node.name})",
      nodes: node,
      name: node.name,
      type: type_name
    ))
  elsif !type.kind.input?
    add_error(GraphQL::StaticValidation::VariablesAreInputTypesError.new(
      "#{type.graphql_name} isn't a valid input type (on $#{node.name})",
      nodes: node,
      name: node.name,
      type: type_name
    ))
  end

  super
end

Private Instance Methods

get_type_name(ast_type) click to toggle source
# File lib/graphql/static_validation/rules/variables_are_input_types.rb, line 30
def get_type_name(ast_type)
  if ast_type.respond_to?(:of_type)
    get_type_name(ast_type.of_type)
  else
    ast_type.name
  end
end