Improve tests for querying list(embedded) when using inheritance
This commit is contained in:
parent
d98f36ceff
commit
f7b7d0f79e
@ -4,7 +4,7 @@ Changelog
|
|||||||
|
|
||||||
Development
|
Development
|
||||||
===========
|
===========
|
||||||
- Fix querying on List(EmbeddedDocument) subclasses fields #1961
|
- Fix querying on List(EmbeddedDocument) subclasses fields #1961 #1492
|
||||||
- Fix querying on (Generic)EmbeddedDocument subclasses fields #475
|
- Fix querying on (Generic)EmbeddedDocument subclasses fields #475
|
||||||
- expose `mongoengine.connection.disconnect` and `mongoengine.connection.disconnect_all`
|
- expose `mongoengine.connection.disconnect` and `mongoengine.connection.disconnect_all`
|
||||||
- Fix disconnect function #566 #1599 #605 #607 #1213 #565
|
- Fix disconnect function #566 #1599 #605 #607 #1213 #565
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from mongoengine import Document, StringField, ValidationError, EmbeddedDocument, EmbeddedDocumentField, \
|
from mongoengine import Document, StringField, ValidationError, EmbeddedDocument, EmbeddedDocumentField, \
|
||||||
InvalidQueryError, LookUpError, IntField, GenericEmbeddedDocumentField, ListField, EmbeddedDocumentListField
|
InvalidQueryError, LookUpError, IntField, GenericEmbeddedDocumentField, ListField, EmbeddedDocumentListField, \
|
||||||
|
ReferenceField
|
||||||
|
|
||||||
from tests.utils import MongoDBTestCase
|
from tests.utils import MongoDBTestCase
|
||||||
|
|
||||||
@ -109,20 +110,31 @@ class TestEmbeddedDocumentField(MongoDBTestCase):
|
|||||||
self.assertIsNone(only_p.settings.sub_foo)
|
self.assertIsNone(only_p.settings.sub_foo)
|
||||||
|
|
||||||
def test_query_list_embedded_document_with_inheritance(self):
|
def test_query_list_embedded_document_with_inheritance(self):
|
||||||
class BaseEmbeddedDoc(EmbeddedDocument):
|
class Post(EmbeddedDocument):
|
||||||
s = StringField()
|
title = StringField(max_length=120, required=True)
|
||||||
meta = {'allow_inheritance': True}
|
meta = {'allow_inheritance': True}
|
||||||
|
|
||||||
class EmbeddedDoc(BaseEmbeddedDoc):
|
class TextPost(Post):
|
||||||
s2 = StringField()
|
content = StringField()
|
||||||
|
|
||||||
class MyDoc(Document):
|
class MoviePost(Post):
|
||||||
embeds = EmbeddedDocumentListField(BaseEmbeddedDoc)
|
author = StringField()
|
||||||
|
|
||||||
doc = MyDoc(embeds=[EmbeddedDoc(s='foo', s2='bar')]).save()
|
class Record(Document):
|
||||||
|
posts = ListField(EmbeddedDocumentField(Post))
|
||||||
|
|
||||||
self.assertEqual(MyDoc.objects(embeds__s='foo').first(), doc)
|
record_movie = Record(posts=[MoviePost(author='John', title='foo')]).save()
|
||||||
self.assertEqual(MyDoc.objects(embeds__s2='bar').first(), doc)
|
record_text = Record(posts=[TextPost(content='a', title='foo')]).save()
|
||||||
|
|
||||||
|
records = list(Record.objects(posts__author=record_movie.posts[0].author))
|
||||||
|
self.assertEqual(len(records), 1)
|
||||||
|
self.assertEqual(records[0].id, record_movie.id)
|
||||||
|
|
||||||
|
records = list(Record.objects(posts__content=record_text.posts[0].content))
|
||||||
|
self.assertEqual(len(records), 1)
|
||||||
|
self.assertEqual(records[0].id, record_text.id)
|
||||||
|
|
||||||
|
self.assertEqual(Record.objects(posts__title='foo').count(), 2)
|
||||||
|
|
||||||
|
|
||||||
class TestGenericEmbeddedDocumentField(MongoDBTestCase):
|
class TestGenericEmbeddedDocumentField(MongoDBTestCase):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user