Fixed mutation input inheritance

This commit is contained in:
Syrus Akbary 2016-08-16 23:43:10 -07:00
parent 8e5555a044
commit 135a171fe4
3 changed files with 13 additions and 8 deletions

View File

@ -4,7 +4,7 @@ from functools import partial
import six
from promise import Promise
from ..types import Argument, Field, InputObjectType, String
from ..types import Argument, Field, InputObjectType, String, AbstractType
from ..types.objecttype import ObjectType, ObjectTypeMeta
from ..utils.is_base_type import is_base_type
from ..utils.props import props
@ -27,9 +27,14 @@ class ClientIDMutationMeta(ObjectTypeMeta):
"{}.mutate_and_get_payload method is required"
" in a ClientIDMutation."
).format(name)
input_attrs = props(input_class) if input_class else {}
input_attrs = {}
bases = ()
if not issubclass(input_class, AbstractType):
input_attrs = props(input_class) if input_class else {}
else:
bases += (input_class, )
input_attrs['client_mutation_id'] = String(name='clientMutationId')
cls.Input = type('{}Input'.format(base_name), (InputObjectType,), input_attrs)
cls.Input = type('{}Input'.format(base_name), bases + (InputObjectType,), input_attrs)
cls.Field = partial(Field, cls, resolver=cls.mutate, input=Argument(cls.Input))
return cls

View File

@ -1,12 +1,12 @@
import pytest
from ...types import (Argument, Field, InputField, InputObjectType, ObjectType,
Schema)
Schema, AbstractType)
from ...types.scalars import String
from ..mutation import ClientIDMutation
class SharedFields(object):
class SharedFields(AbstractType):
shared = String()

View File

@ -10,9 +10,6 @@ from ..node import Node
class SharedNodeFields(AbstractType):
class Meta:
interfaces = (Node, )
shared = String()
something_else = String()
@ -34,6 +31,9 @@ class MyNode(ObjectType):
class MyOtherNode(SharedNodeFields, ObjectType):
extra_field = String()
class Meta:
interfaces = (Node, )
def resolve_extra_field(self, *_):
return 'extra field info.'