Class: GraphQL::Schema::SchemaValidation

Inherits:
Object
  • Object
show all
Defined in:
lib/graphql/schema/schema_validation.rb

Overview

Validates a schema (specifically, GraphQL::SCHEMA).

It checks:

  • All classes exposed by nodes actually exist

  • Field types requested by nodes actually exist

  • Fields’ corresponding methods actually exist

To validate a schema, use GraphQL::Schema::Schema#validate.

Instance Method Summary collapse

Instance Method Details

#validate(schema) ⇒ Object

Validates the schema



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

def validate(schema)
  schema.types.each do |type_name, type_class|

    type_class.exposes_class_names.each do |exposes_class_name|
      begin
        Object.const_get(exposes_class_name)
      rescue NameError
        raise GraphQL::ExposesClassMissingError.new(type_class)
      end
    end

    type_class.all_fields.each do |field_name, field_mapping|
      # Make sure the type exists
      field_mapping.type_class
      # Make sure the node can handle it
      if !type_class.respond_to_field?(field_mapping.name)
        raise GraphQL::FieldNotDefinedError.new(type_class, field_mapping.name)
      end
    end
  end
end