Sha256: 9c7ce758131973894adcff5b5307565ee69a9f494125b5641f533bbc651b5bbe

Contents?: true

Size: 1.88 KB

Versions: 2

Compression:

Stored size: 1.88 KB

Contents

require 'spec_helper'

describe GraphQL::Schema::TypeValidator do
  let(:base_type_defn) {
    {
      name: "InvalidType",
      description: "...",
      deprecation_reason: nil,
      kind: GraphQL::TypeKinds::OBJECT,
      interfaces: [],
      fields: {},
    }
  }
  let(:object) {
    o = OpenStruct.new(type_defn)
    def o.to_s; "InvalidType"; end
    o
  }
  let(:validator) { GraphQL::Schema::TypeValidator.new }
  let(:errors) { e = []; validator.validate(object, e); e;}
  describe 'when name isnt defined' do
    let(:type_defn) { base_type_defn.delete_if {|k,v| k == :name }}
    it 'requires name' do
      assert_equal(
        ["InvalidType must respond to #name() to be a Type"],
        errors
      )
    end
  end

  describe 'when a method returns nil' do
    let(:type_defn) { base_type_defn.merge(interfaces: nil)}
    it 'requires name' do
      assert_equal(
        ["InvalidType must return a value for #interfaces() to be a OBJECT"],
        errors
      )
    end
  end

  describe "when a field name isnt a string" do
    let(:type_defn) { base_type_defn.merge(fields: {symbol_field: (GraphQL::Field.new {|f|}) }) }
    it "requires string names" do
      assert_equal(
        ["InvalidType.fields keys must be Strings, but some aren't: symbol_field"],
        errors
      )
    end
  end

  describe "when a Union isnt valid" do
    let(:object) {
      GraphQL::UnionType.define do
        name "Something"
        description "some union"
        possible_types [DairyProductInputType]
      end
    }
    let(:errors) { e = []; GraphQL::Schema::TypeValidator.new.validate(object, e); e;}
    it 'must be 2+ types, must be only object types' do
      expected = [
        "Something.possible_types must be objects, but some aren't: DairyProductInput",
        "Union Something must be defined with 2 or more types, not 1",
      ]
      assert_equal(expected, errors)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
graphql-0.6.2 spec/graphql/schema/type_validator_spec.rb
graphql-0.6.1 spec/graphql/schema/type_validator_spec.rb