From 568718d573f161ebde2cabf4a8879714dd941ff8 Mon Sep 17 00:00:00 2001 From: Syrus Akbary Date: Tue, 21 Jun 2016 12:01:03 -0700 Subject: [PATCH] Added support for Enum descriptions --- graphene/types/enum.py | 7 ++++++- graphene/types/tests/test_enum.py | 9 +++++++++ graphene/types/tests/test_objecttype.py | 5 +---- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/graphene/types/enum.py b/graphene/types/enum.py index 2fda8412..fe733577 100644 --- a/graphene/types/enum.py +++ b/graphene/types/enum.py @@ -22,7 +22,12 @@ class GrapheneEnumType(GrapheneGraphQLType, GraphQLEnumType): def values_from_enum(enum): _values = OrderedDict() 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 diff --git a/graphene/types/tests/test_enum.py b/graphene/types/tests/test_enum.py index 4813d902..4abd185e 100644 --- a/graphene/types/tests/test_enum.py +++ b/graphene/types/tests/test_enum.py @@ -11,6 +11,10 @@ def test_enum_construction(): GREEN = 2 BLUE = 3 + @property + def description(self): + return "Description {}".format(self.name) + assert isinstance(RGB._meta.graphql_type, GraphQLEnumType) values = RGB._meta.graphql_type.get_values() assert sorted([v.name for v in values]) == [ @@ -18,6 +22,11 @@ def test_enum_construction(): 'GREEN', '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_argument(), Argument) diff --git a/graphene/types/tests/test_objecttype.py b/graphene/types/tests/test_objecttype.py index a3970b52..12901456 100644 --- a/graphene/types/tests/test_objecttype.py +++ b/graphene/types/tests/test_objecttype.py @@ -206,11 +206,8 @@ def test_objecttype_graphene_inherit_interface(): assert graphql_type.get_interfaces() == (GrapheneInterface._meta.graphql_type, ) assert graphql_type.is_type_of(GrapheneObjectType(), None, None) fields = graphql_type.get_fields() - assert 'field' in fields - assert 'extended' in fields - assert 'name' in fields + fields = graphql_type.get_fields().keys() == ['name', 'extended', 'field'] assert issubclass(GrapheneObjectType, GrapheneInterface) - assert fields['field'] > fields['extended'] > fields['name'] # def test_objecttype_graphene_interface_extended():