Added support for Enum descriptions

This commit is contained in:
Syrus Akbary 2016-06-21 12:01:03 -07:00
parent 9a9d7f8873
commit 568718d573
3 changed files with 16 additions and 5 deletions

View File

@ -22,7 +22,12 @@ class GrapheneEnumType(GrapheneGraphQLType, GraphQLEnumType):
def values_from_enum(enum): def values_from_enum(enum):
_values = OrderedDict() _values = OrderedDict()
for name, value in enum.__members__.items(): for name, value in enum.__members__.items():
_values[name] = GraphQLEnumValue(name=name, value=value.value) _values[name] = GraphQLEnumValue(
name=name,
value=value.value,
description=getattr(value, 'description', None),
deprecation_reason=getattr(value, 'deprecation_reason', None)
)
return _values return _values

View File

@ -11,6 +11,10 @@ def test_enum_construction():
GREEN = 2 GREEN = 2
BLUE = 3 BLUE = 3
@property
def description(self):
return "Description {}".format(self.name)
assert isinstance(RGB._meta.graphql_type, GraphQLEnumType) assert isinstance(RGB._meta.graphql_type, GraphQLEnumType)
values = RGB._meta.graphql_type.get_values() values = RGB._meta.graphql_type.get_values()
assert sorted([v.name for v in values]) == [ assert sorted([v.name for v in values]) == [
@ -18,6 +22,11 @@ def test_enum_construction():
'GREEN', 'GREEN',
'RED' 'RED'
] ]
assert sorted([v.description for v in values]) == [
'Description BLUE',
'Description GREEN',
'Description RED'
]
assert isinstance(RGB(name='field_name').as_field(), Field) assert isinstance(RGB(name='field_name').as_field(), Field)
assert isinstance(RGB(name='field_name').as_argument(), Argument) assert isinstance(RGB(name='field_name').as_argument(), Argument)

View File

@ -206,11 +206,8 @@ def test_objecttype_graphene_inherit_interface():
assert graphql_type.get_interfaces() == (GrapheneInterface._meta.graphql_type, ) assert graphql_type.get_interfaces() == (GrapheneInterface._meta.graphql_type, )
assert graphql_type.is_type_of(GrapheneObjectType(), None, None) assert graphql_type.is_type_of(GrapheneObjectType(), None, None)
fields = graphql_type.get_fields() fields = graphql_type.get_fields()
assert 'field' in fields fields = graphql_type.get_fields().keys() == ['name', 'extended', 'field']
assert 'extended' in fields
assert 'name' in fields
assert issubclass(GrapheneObjectType, GrapheneInterface) assert issubclass(GrapheneObjectType, GrapheneInterface)
assert fields['field'] > fields['extended'] > fields['name']
# def test_objecttype_graphene_interface_extended(): # def test_objecttype_graphene_interface_extended():