This commit is contained in:
Aviv Eyal 2019-04-12 17:04:46 -07:00
parent 9f3d386b89
commit c36bcb35bb
5 changed files with 13 additions and 3 deletions

View File

@ -10,8 +10,10 @@ class Episode(Enum):
EMPIRE = 5
JEDI = 6
GrapheneEpisode = graphene.Enum.from_enum(Episode, legacy_enum_resolver=False)
class Character(graphene.Interface):
id = graphene.ID()
name = graphene.String()

View File

@ -65,7 +65,9 @@ class EnumMeta(SubclassWithMeta_Meta):
return cls.from_enum(PyEnum(*args, **kwargs), description=description)
return super(EnumMeta, cls).__call__(*args, **kwargs)
def from_enum(cls, enum, description=None, deprecation_reason=None, legacy_enum_resolver=True): # noqa: N805
def from_enum(
cls, enum, description=None, deprecation_reason=None, legacy_enum_resolver=True
): # noqa: N805
description = description or enum.__doc__
meta_dict = {
"enum": enum,

View File

@ -182,6 +182,7 @@ def test_enum_value_as_unmounted_argument():
assert isinstance(unmounted_field, Argument)
assert unmounted_field.type == RGB
def test_legacy_enum_can_be_compared():
class RGB(Enum):
RED = 1
@ -192,11 +193,13 @@ def test_legacy_enum_can_be_compared():
assert RGB.GREEN == 2
assert RGB.BLUE == 3
def test_new_enum_only_compare_to_enum_instances():
class RGBBase(PyEnum):
RED = 1
GREEN = 2
BLUE = 3
RGB = Enum.from_enum(RGBBase, legacy_enum_resolver=False)
assert RGB.RED == RGBBase.RED
@ -206,6 +209,7 @@ def test_new_enum_only_compare_to_enum_instances():
assert RGB.GREEN != 2
assert RGB.BLUE != 3
def test_enum_can_be_initialzied():
class RGB(Enum):
RED = 1

View File

@ -43,7 +43,6 @@ def _call_and_get_arg(mocker, resolver_name, query):
return resolver.call_args[1]["v"]
def test_resolve_enum_python(mocker):
arg = _call_and_get_arg(mocker, "resolve_python", "{python(v:P2)}")
assert arg is PythonBaseEnum.P2

View File

@ -57,6 +57,7 @@ def test_enum_legacy():
GraphQLEnumValue(name="bar", value=2, description="Description bar=2"),
]
def test_enum_new():
class MyEnumBase(PyEnum):
"""Description"""
@ -89,7 +90,9 @@ def test_enum_new():
description="Description foo=1",
deprecation_reason="Is deprecated",
),
GraphQLEnumValue(name="bar", value=MyEnumBase.bar, description="Description bar=2"),
GraphQLEnumValue(
name="bar", value=MyEnumBase.bar, description="Description bar=2"
),
]