Skip to content

Commit 521d9f4

Browse files
authored
Merge pull request #807 from marshmallow-code/fix_enum
Document Enum as list of values, not string
2 parents 7abbf7d + 5547941 commit 521d9f4

File tree

2 files changed

+7
-3
lines changed

2 files changed

+7
-3
lines changed

src/apispec/ext/marshmallow/field_converter.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -509,7 +509,11 @@ def enum2properties(self, field, **kwargs: typing.Any) -> dict:
509509
ret = {}
510510
if isinstance(field, marshmallow.fields.Enum):
511511
ret = self.field2property(field.field)
512-
ret["enum"] = field.choices_text
512+
if field.by_value is False:
513+
choices = (m for m in field.enum.__members__)
514+
else:
515+
choices = (m.value for m in field.enum)
516+
ret["enum"] = [field.field._serialize(v, None, None) for v in choices]
513517
return ret
514518

515519

tests/test_ext_marshmallow_field.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,7 @@ class MyEnum(Enum):
274274
field = fields.Enum(MyEnum)
275275
ret = spec_fixture.openapi.field2property(field)
276276
assert ret["type"] == "string"
277-
assert ret["enum"] == "one, two"
277+
assert ret["enum"] == ["one", "two"]
278278

279279

280280
@pytest.mark.parametrize("by_value", [fields.Integer, True])
@@ -289,7 +289,7 @@ class MyEnum(Enum):
289289
assert "type" not in ret
290290
else:
291291
assert ret["type"] == "integer"
292-
assert ret["enum"] == "1, 2"
292+
assert ret["enum"] == [1, 2]
293293

294294

295295
def test_field2property_nested_spec_metadatas(spec_fixture):

0 commit comments

Comments
 (0)