1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- from django.test import TestCase
- from .models import DumbCategory, NamedCategory, ProxyCategory
- class ContainsTests(TestCase):
- @classmethod
- def setUpTestData(cls):
- cls.category = DumbCategory.objects.create()
- cls.proxy_category = ProxyCategory.objects.create()
- def test_unsaved_obj(self):
- msg = 'QuerySet.contains() cannot be used on unsaved objects.'
- with self.assertRaisesMessage(ValueError, msg):
- DumbCategory.objects.contains(DumbCategory())
- def test_obj_type(self):
- msg = "'obj' must be a model instance."
- with self.assertRaisesMessage(TypeError, msg):
- DumbCategory.objects.contains(object())
- def test_values(self):
- msg = 'Cannot call QuerySet.contains() after .values() or .values_list().'
- with self.assertRaisesMessage(TypeError, msg):
- DumbCategory.objects.values_list('pk').contains(self.category)
- with self.assertRaisesMessage(TypeError, msg):
- DumbCategory.objects.values('pk').contains(self.category)
- def test_basic(self):
- with self.assertNumQueries(1):
- self.assertIs(DumbCategory.objects.contains(self.category), True)
- # QuerySet.contains() doesn't evaluate a queryset.
- with self.assertNumQueries(1):
- self.assertIs(DumbCategory.objects.contains(self.category), True)
- def test_evaluated_queryset(self):
- qs = DumbCategory.objects.all()
- proxy_qs = ProxyCategory.objects.all()
- # Evaluate querysets.
- list(qs)
- list(proxy_qs)
- with self.assertNumQueries(0):
- self.assertIs(qs.contains(self.category), True)
- self.assertIs(qs.contains(self.proxy_category), True)
- self.assertIs(proxy_qs.contains(self.category), True)
- self.assertIs(proxy_qs.contains(self.proxy_category), True)
- def test_proxy_model(self):
- with self.assertNumQueries(1):
- self.assertIs(DumbCategory.objects.contains(self.proxy_category), True)
- with self.assertNumQueries(1):
- self.assertIs(ProxyCategory.objects.contains(self.category), True)
- def test_wrong_model(self):
- qs = DumbCategory.objects.all()
- named_category = NamedCategory(name='category')
- with self.assertNumQueries(0):
- self.assertIs(qs.contains(named_category), False)
- # Evaluate the queryset.
- list(qs)
- with self.assertNumQueries(0):
- self.assertIs(qs.contains(named_category), False)
|