class GraphQL::StaticValidation::VariablesAreInputTypes

Public Instance Methods

validate(context) click to toggle source
# File lib/graphql/static_validation/rules/variables_are_input_types.rb, line 7
def validate(context)
  context.visitor[GraphQL::Language::Nodes::VariableDefinition] << ->(node, parent) {
    validate_is_input_type(node, context)
  }
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 26
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
validate_is_input_type(node, context) click to toggle source
# File lib/graphql/static_validation/rules/variables_are_input_types.rb, line 15
def validate_is_input_type(node, context)
  type_name = get_type_name(node.type)
  type = context.warden.get_type(type_name)

  if type.nil?
    context.errors << message("#{type_name} isn't a defined input type (on $#{node.name})", node, context: context)
  elsif !type.kind.input?
    context.errors << message("#{type.name} isn't a valid input type (on $#{node.name})", node, context: context)
  end
end