2
2
import unittest
3
3
import warnings
4
4
5
- from tests .fixtures import Base
6
-
7
- from mongoengine import Document , EmbeddedDocument , connect , ReferenceField ,\
8
- BooleanField , GenericReferenceField , IntField , StringField
5
+ from mongoengine import (BooleanField , Document , EmbeddedDocument ,
6
+ EmbeddedDocumentField , GenericReferenceField ,
7
+ IntField , ReferenceField , StringField , connect )
9
8
from mongoengine .connection import get_db
9
+ from tests .fixtures import Base
10
10
11
11
__all__ = ('InheritanceTest' , )
12
12
@@ -23,6 +23,27 @@ def tearDown(self):
23
23
continue
24
24
self .db .drop_collection (collection )
25
25
26
+ def test_constructor_cls (self ):
27
+ # Ensures _cls is properly set during construction
28
+ # and when object gets reloaded (prevent regression of #1950)
29
+ class EmbedData (EmbeddedDocument ):
30
+ data = StringField ()
31
+ meta = {'allow_inheritance' : True }
32
+
33
+ class DataDoc (Document ):
34
+ name = StringField ()
35
+ embed = EmbeddedDocumentField (EmbedData )
36
+ meta = {'allow_inheritance' : True }
37
+
38
+ test_doc = DataDoc (name = 'test' , embed = EmbedData (data = 'data' ))
39
+ assert test_doc ._cls == 'DataDoc'
40
+ assert test_doc .embed ._cls == 'EmbedData'
41
+ test_doc .save ()
42
+ saved_doc = DataDoc .objects .with_id (test_doc .id )
43
+ assert test_doc ._cls == saved_doc ._cls
44
+ assert test_doc .embed ._cls == saved_doc .embed ._cls
45
+ test_doc .delete ()
46
+
26
47
def test_superclasses (self ):
27
48
"""Ensure that the correct list of superclasses is assembled.
28
49
"""
0 commit comments