Added interfaces field into a ObjectType. Fixed #168

This commit is contained in:
Syrus Akbary 2016-05-18 21:00:50 -07:00
parent c260bd4181
commit 10304eb8cf
2 changed files with 19 additions and 1 deletions

View File

@ -1,7 +1,7 @@
from graphql.type import GraphQLObjectType from graphql.type import GraphQLObjectType
from mock import patch from mock import patch
from graphene import Schema from graphene import Schema, Interface
from graphene.contrib.django.types import DjangoNode, DjangoObjectType from graphene.contrib.django.types import DjangoNode, DjangoObjectType
from graphene.core.fields import Field from graphene.core.fields import Field
from graphene.core.types.scalars import Int from graphene.core.types.scalars import Int
@ -83,3 +83,20 @@ def test_object_type():
def test_node_notinterface(): def test_node_notinterface():
assert Human._meta.interface is False assert Human._meta.interface is False
assert DjangoNode in Human._meta.interfaces assert DjangoNode in Human._meta.interfaces
def test_django_objecttype_could_extend_interface():
schema = Schema()
@schema.register
class Customer(Interface):
id = Int()
@schema.register
class UserType(DjangoObjectType):
class Meta:
model = Reporter
interfaces = [Customer]
object_type = schema.T(UserType)
assert schema.T(Customer) in object_type.get_interfaces()

View File

@ -20,6 +20,7 @@ class ObjectTypeOptions(FieldsOptions):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super(ObjectTypeOptions, self).__init__(*args, **kwargs) super(ObjectTypeOptions, self).__init__(*args, **kwargs)
self.interface = False self.interface = False
self.valid_attrs += ['interfaces']
self.interfaces = [] self.interfaces = []