22import unittest
33import warnings
44
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 )
98from mongoengine .connection import get_db
9+ from tests .fixtures import Base
1010
1111__all__ = ('InheritanceTest' , )
1212
@@ -23,6 +23,27 @@ def tearDown(self):
2323 continue
2424 self .db .drop_collection (collection )
2525
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+
2647 def test_superclasses (self ):
2748 """Ensure that the correct list of superclasses is assembled.
2849 """
0 commit comments