diff --git a/docs/changelog.rst b/docs/changelog.rst index 34e1c495..543cfce7 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -4,6 +4,7 @@ Changelog Development =========== +- Fix querying on List(EmbeddedDocument) subclasses fields #1961 - Fix querying on (Generic)EmbeddedDocument subclasses fields #475 - expose `mongoengine.connection.disconnect` and `mongoengine.connection.disconnect_all` - Fix disconnect function #566 #1599 #605 #607 #1213 #565 diff --git a/tests/fields/test_embedded_document_field.py b/tests/fields/test_embedded_document_field.py index e9fc79c8..b870f9f9 100644 --- a/tests/fields/test_embedded_document_field.py +++ b/tests/fields/test_embedded_document_field.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- from mongoengine import Document, StringField, ValidationError, EmbeddedDocument, EmbeddedDocumentField, \ - InvalidQueryError, LookUpError, IntField, GenericEmbeddedDocumentField, ListField + InvalidQueryError, LookUpError, IntField, GenericEmbeddedDocumentField, ListField, EmbeddedDocumentListField from tests.utils import MongoDBTestCase @@ -108,6 +108,22 @@ class TestEmbeddedDocumentField(MongoDBTestCase): self.assertEqual(only_p.settings.base_foo, 'basefoo') self.assertIsNone(only_p.settings.sub_foo) + def test_query_list_embedded_document_with_inheritance(self): + class BaseEmbeddedDoc(EmbeddedDocument): + s = StringField() + meta = {'allow_inheritance': True} + + class EmbeddedDoc(BaseEmbeddedDoc): + s2 = StringField() + + class MyDoc(Document): + embeds = EmbeddedDocumentListField(BaseEmbeddedDoc) + + doc = MyDoc(embeds=[EmbeddedDoc(s='foo', s2='bar')]).save() + + self.assertEqual(MyDoc.objects(embeds__s='foo').first(), doc) + self.assertEqual(MyDoc.objects(embeds__s2='bar').first(), doc) + class TestGenericEmbeddedDocumentField(MongoDBTestCase):