Merge pull request #635 from jkimbo/error-missing-type

Raise better error if type is missing from schema
This commit is contained in:
Syrus Akbary 2017-12-23 10:17:06 -08:00 committed by GitHub
commit 94d5e345a1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 25 additions and 2 deletions

View File

@ -1,3 +1,4 @@
import pytest
from graphql.type import (GraphQLArgument, GraphQLEnumType, GraphQLEnumValue, from graphql.type import (GraphQLArgument, GraphQLEnumType, GraphQLEnumValue,
GraphQLField, GraphQLInputObjectField, GraphQLField, GraphQLInputObjectField,
@ -13,7 +14,7 @@ from ..inputobjecttype import InputObjectType
from ..interface import Interface from ..interface import Interface
from ..objecttype import ObjectType from ..objecttype import ObjectType
from ..scalars import String, Int from ..scalars import String, Int
from ..typemap import TypeMap from ..typemap import TypeMap, resolve_type
def test_enum(): def test_enum():
@ -232,3 +233,22 @@ def test_objecttype_with_possible_types():
assert graphql_type.is_type_of assert graphql_type.is_type_of
assert graphql_type.is_type_of({}, None) is True assert graphql_type.is_type_of({}, None) is True
assert graphql_type.is_type_of(MyObjectType(), None) is False assert graphql_type.is_type_of(MyObjectType(), None) is False
def test_resolve_type_with_missing_type():
class MyObjectType(ObjectType):
foo_bar = String()
class MyOtherObjectType(ObjectType):
fizz_buzz = String()
def resolve_type_func(root, info):
return MyOtherObjectType
typemap = TypeMap([MyObjectType])
with pytest.raises(AssertionError) as excinfo:
resolve_type(
resolve_type_func, typemap, 'MyOtherObjectType', {}, {}
)
assert 'MyOtherObjectTyp' in str(excinfo.value)

View File

@ -46,7 +46,10 @@ def resolve_type(resolve_type_func, map, type_name, root, info):
if inspect.isclass(_type) and issubclass(_type, ObjectType): if inspect.isclass(_type) and issubclass(_type, ObjectType):
graphql_type = map.get(_type._meta.name) graphql_type = map.get(_type._meta.name)
assert graphql_type and graphql_type.graphene_type == _type, ( assert graphql_type, "Can't find type {} in schema".format(
_type._meta.name
)
assert graphql_type.graphene_type == _type, (
'The type {} does not match with the associated graphene type {}.' 'The type {} does not match with the associated graphene type {}.'
).format(_type, graphql_type.graphene_type) ).format(_type, graphql_type.graphene_type)
return graphql_type return graphql_type