Merge pull request #2406 from bagerard/improve_enumfield_doc

improve EnumField Doc and add quick test
This commit is contained in:
Bastien Gérard 2020-11-01 23:08:30 +01:00 committed by GitHub
commit ee664f0c90
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 1 deletions

View File

@ -1623,7 +1623,9 @@ class BinaryField(BaseField):
class EnumField(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: Example usage:
.. code-block:: python .. code-block:: python

View File

@ -1,5 +1,6 @@
from enum import Enum from enum import Enum
from bson import InvalidDocument
import pytest import pytest
from mongoengine import * from mongoengine import *
@ -105,3 +106,17 @@ class TestIntEnumField(MongoDBTestCase):
with pytest.raises(ValidationError, match="Value must be one of"): with pytest.raises(ValidationError, match="Value must be one of"):
ModelWithColor(color="wrong_type").validate() 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="[cC]annot encode object"):
m.save()