test_chunk_queryset.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536
  1. from django.test import TestCase
  2. from ...cache.models import CacheVersion
  3. from ..pgutils import chunk_queryset
  4. class ChunkQuerysetTest(TestCase):
  5. def setUp(self):
  6. # clear table
  7. CacheVersion.objects.all().delete()
  8. items_pks = []
  9. for i in range(50):
  10. obj = CacheVersion.objects.create(cache="test%s" % i)
  11. items_pks.append(obj.pk)
  12. self.items_pks = list(sorted(items_pks, reverse=True))
  13. def test_chunk_queryset(self):
  14. """chunk_queryset utility chunks queryset but returns all items"""
  15. chunked_pks = []
  16. with self.assertNumQueries(11):
  17. queryset = CacheVersion.objects.order_by("cache")
  18. for obj in chunk_queryset(queryset, chunk_size=5):
  19. chunked_pks.append(obj.pk)
  20. self.assertEqual(chunked_pks, self.items_pks)
  21. def test_chunk_shrinking_queryset(self):
  22. """chunk_queryset utility chunks queryset in delete action"""
  23. with self.assertNumQueries(61):
  24. queryset = CacheVersion.objects.all()
  25. for obj in chunk_queryset(queryset, chunk_size=5):
  26. obj.delete()
  27. self.assertEqual(CacheVersion.objects.count(), 0)