Added support for deprecated fields using deprecation_reason. Fixed #93

This commit is contained in:
Syrus Akbary 2016-01-28 10:22:25 -08:00
parent 6a38024340
commit 235a24e966
2 changed files with 17 additions and 1 deletions

View File

@ -18,7 +18,7 @@ class Field(NamedType, OrderedType):
def __init__( def __init__(
self, type, description=None, args=None, name=None, resolver=None, self, type, description=None, args=None, name=None, resolver=None,
required=False, default=None, *args_list, **kwargs): required=False, default=None, deprecation_reason=None, *args_list, **kwargs):
_creation_counter = kwargs.pop('_creation_counter', None) _creation_counter = kwargs.pop('_creation_counter', None)
if isinstance(name, (Argument, ArgumentType)): if isinstance(name, (Argument, ArgumentType)):
kwargs['name'] = name kwargs['name'] = name
@ -29,6 +29,7 @@ class Field(NamedType, OrderedType):
self.required = required self.required = required
self.type = type self.type = type
self.description = description self.description = description
self.deprecation_reason = deprecation_reason
args = OrderedDict(args or {}, **kwargs) args = OrderedDict(args or {}, **kwargs)
self.arguments = ArgumentsGroup(*args_list, **args) self.arguments = ArgumentsGroup(*args_list, **args)
self.object_type = None self.object_type = None
@ -103,6 +104,7 @@ class Field(NamedType, OrderedType):
assert type, 'Internal type for field %s is None' % str(self) assert type, 'Internal type for field %s is None' % str(self)
return GraphQLField(type, args=schema.T(arguments), return GraphQLField(type, args=schema.T(arguments),
resolver=self.decorate_resolver(resolver), resolver=self.decorate_resolver(resolver),
deprecation_reason=self.deprecation_reason,
description=description,) description=description,)
def __repr__(self): def __repr__(self):

View File

@ -166,3 +166,17 @@ def test_field_resolve_vars():
'hello': 'Hello Serkan' 'hello': 'Hello Serkan'
} }
assert result.data == expected assert result.data == expected
def test_field_internal_type_deprecated():
deprecation_reason = 'No more used'
field = Field(String(), description='My argument',
deprecation_reason=deprecation_reason)
class Query(ObjectType):
my_field = field
schema = Schema(query=Query)
type = schema.T(field)
assert isinstance(type, GraphQLField)
assert type.deprecation_reason == deprecation_reason