improve EnumField Doc and add quick test

This commit is contained in:
Bastien Gérard 2020-11-01 14:05:58 +01:00
parent 2f4464ead5
commit 8ef7213426
2 changed files with 18 additions and 1 deletions

View File

@ -1623,7 +1623,9 @@ class BinaryField(BaseField):
class EnumField(BaseField):
"""Enumeration Field. Values are stored underneath as strings.
"""Enumeration Field. Values are stored underneath as is,
so it will only work with simple types (str, int, etc) that
are bson encodable
Example usage:
.. code-block:: python

View File

@ -1,5 +1,6 @@
from enum import Enum
from bson import InvalidDocument
import pytest
from mongoengine import *
@ -105,3 +106,17 @@ class TestIntEnumField(MongoDBTestCase):
with pytest.raises(ValidationError, match="Value must be one of"):
ModelWithColor(color="wrong_type").validate()
class TestFunkyEnumField(MongoDBTestCase):
def test_enum_incompatible_bson_type_fails_during_save(self):
class FunkyColor(Enum):
YELLOW = object()
class ModelWithFunkyColor(Document):
color = EnumField(FunkyColor)
m = ModelWithFunkyColor(color=FunkyColor.YELLOW)
with pytest.raises(InvalidDocument, match="cannot encode object"):
m.save()