Sha256: f4e7a0e2e829517b79b8fca7dfe88f601f0e91c450715879a1f16bd7b618aec4

Contents?: true

Size: 1.99 KB

Versions: 4

Compression:

Stored size: 1.99 KB

Contents

require 'spec_helper'

describe GraphQL::InterfaceType do
  let(:interface) { EdibleInterface }
  it 'has possible types' do
    assert_equal([CheeseType, MilkType], interface.possible_types)
  end

  it 'resolves types for objects' do
    assert_equal(CheeseType, interface.resolve_type(CHEESES.values.first))
    assert_equal(MilkType, interface.resolve_type(MILKS.values.first))
  end

  it 'handles when interfaces are re-assigned' do
    iface = GraphQL::InterfaceType.define do
    end
    type = GraphQL::ObjectType.define do
      interfaces [iface]
    end
    assert_equal([type], iface.possible_types)

    type.interfaces = []
    assert_equal([], iface.possible_types)

    type.interfaces = [iface]
    assert_equal([type], iface.possible_types)

    type.interfaces = [iface]
    assert_equal([type], iface.possible_types)
  end

  describe 'query evaluation' do
    let(:result) { DummySchema.execute(query_string, context: {}, variables: {"cheeseId" => 2})}
    let(:query_string) {%|
      query fav {
        favoriteEdible { fatContent }
      }
    |}
    it 'gets fields from the type for the given object' do
      expected = {"data"=>{"favoriteEdible"=>{"fatContent"=>0.04}}}
      assert_equal(expected, result)
    end
  end

  describe 'mergable query evaluation' do
    let(:result) { DummySchema.execute(query_string, context: {}, variables: {"cheeseId" => 2})}
    let(:query_string) {%|
      query fav {
        favoriteEdible { fatContent }
        favoriteEdible { origin }
      }
    |}
    it 'gets fields from the type for the given object' do
      expected = {"data"=>{"favoriteEdible"=>{"fatContent"=>0.04, "origin"=>"Antiquity"}}}
      assert_equal(expected, result)
    end
  end

  describe '#resolve_type' do
    let(:interface) {
      GraphQL::InterfaceType.define do
        resolve_type -> (object) {
          :custom_resolve
        }
      end
    }

    it 'can be overriden in the definition' do
      assert_equal(interface.resolve_type(123), :custom_resolve)
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
graphql-0.12.0 spec/graphql/interface_type_spec.rb
graphql-0.11.1 spec/graphql/interface_type_spec.rb
graphql-0.11.0 spec/graphql/interface_type_spec.rb
graphql-0.10.9 spec/graphql/interface_type_spec.rb