diff --git a/graphene/types/enum.py b/graphene/types/enum.py index 0f68236b4..58e65c69e 100644 --- a/graphene/types/enum.py +++ b/graphene/types/enum.py @@ -56,6 +56,9 @@ def __call__(cls, *args, **kwargs): # noqa: N805 return super(EnumMeta, cls).__call__(*args, **kwargs) # return cls._meta.enum(*args, **kwargs) + def __iter__(cls): + return cls._meta.enum.__iter__() + def from_enum( cls, enum, name=None, description=None, deprecation_reason=None ): # noqa: N805 diff --git a/graphene/types/tests/test_enum.py b/graphene/types/tests/test_enum.py index ab1e093e8..298cc233b 100644 --- a/graphene/types/tests/test_enum.py +++ b/graphene/types/tests/test_enum.py @@ -543,3 +543,25 @@ def test_hashable_instance_creation_enum(): assert trilogy_map[Episode.NEWHOPE] == "better" assert trilogy_map[Episode.EMPIRE] == "best" assert trilogy_map[5] == "foo" + + +def test_enum_iteration(): + class TestEnum(Enum): + FIRST = 1 + SECOND = 2 + + result = [] + expected_values = ["FIRST", "SECOND"] + for c in TestEnum: + result.append(c.name) + assert result == expected_values + + +def test_iterable_instance_creation_enum(): + TestEnum = Enum("TestEnum", [("FIRST", 1), ("SECOND", 2)]) + + result = [] + expected_values = ["FIRST", "SECOND"] + for c in TestEnum: + result.append(c.name) + assert result == expected_values