Query values may be processed before being used
This commit is contained in:
@@ -321,6 +321,8 @@ class DocumentTest(unittest.TestCase):
|
||||
comments = ListField(EmbeddedDocumentField(Comment))
|
||||
tags = ListField(StringField())
|
||||
|
||||
BlogPost.drop_collection()
|
||||
|
||||
post = BlogPost(content='Went for a walk today...')
|
||||
post.tags = tags = ['fun', 'leisure']
|
||||
comments = [Comment(content='Good for you'), Comment(content='Yay.')]
|
||||
|
||||
@@ -300,6 +300,32 @@ class QuerySetTest(unittest.TestCase):
|
||||
|
||||
BlogPost.drop_collection()
|
||||
|
||||
def test_query_value_conversion(self):
|
||||
"""Ensure that query values are properly converted when necessary.
|
||||
"""
|
||||
class BlogPost(Document):
|
||||
author = ReferenceField(self.Person)
|
||||
|
||||
BlogPost.drop_collection()
|
||||
|
||||
person = self.Person(name='test', age=30)
|
||||
person.save()
|
||||
|
||||
post = BlogPost(author=person)
|
||||
post.save()
|
||||
|
||||
# Test that query may be performed by providing a document as a value
|
||||
# while using a ReferenceField's name - the document should be
|
||||
# converted to an DBRef, which is legal, unlike a Document object
|
||||
post_obj = BlogPost.objects(author=person).first()
|
||||
self.assertEqual(post.id, post_obj.id)
|
||||
|
||||
# Test that lists of values work when using the 'in', 'nin' and 'all'
|
||||
post_obj = BlogPost.objects(author__in=[person]).first()
|
||||
self.assertEqual(post.id, post_obj.id)
|
||||
|
||||
BlogPost.drop_collection()
|
||||
|
||||
def tearDown(self):
|
||||
self.Person.drop_collection()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user