implement BaseQuerySet.batch_size

This commit is contained in:
Stefan Wojcik
2016-12-04 19:28:26 -05:00
parent 15714ef855
commit 43668a93a2
2 changed files with 44 additions and 0 deletions

View File

@@ -337,6 +337,36 @@ class QuerySetTest(unittest.TestCase):
query = query.filter(boolfield=True)
self.assertEqual(query.count(), 1)
def test_batch_size(self):
"""Ensure that batch_size works."""
class A(Document):
s = StringField()
A.drop_collection()
for i in range(100):
A.objects.create(s=str(i))
# test iterating over the result set
cnt = 0
for a in A.objects.batch_size(10):
cnt += 1
self.assertEqual(cnt, 100)
# test chaining
qs = A.objects.all()
qs = qs.limit(10).batch_size(20).skip(91)
cnt = 0
for a in qs:
cnt += 1
self.assertEqual(cnt, 9)
# test invalid batch size
qs = A.objects.batch_size(-1)
self.assertRaises(ValueError, lambda: list(qs))
qs = A.objects.filter(s='1').batch_size('not a number')
self.assertRaises(TypeError, lambda: [doc for doc in qs])
def test_update_write_concern(self):
"""Test that passing write_concern works"""
self.Person.drop_collection()