Merge pull request #2406 from bagerard/improve_enumfield_doc
improve EnumField Doc and add quick test
This commit is contained in:
		| @@ -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 | ||||
|  | ||||
|   | ||||
| @@ -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="[cC]annot encode object"): | ||||
|             m.save() | ||||
|   | ||||
		Reference in New Issue
	
	Block a user