mirror of
https://github.com/django/django.git
synced 2025-10-24 06:06:09 +00:00
Fixed #23620 -- Used more specific assertions in the Django test suite.
This commit is contained in:
committed by
Tim Graham
parent
c0c78f1b70
commit
f7969b0920
@@ -133,7 +133,7 @@ class AggregationTests(TestCase):
|
||||
rating=3.0
|
||||
)
|
||||
# Different DB backends return different types for the extra select computation
|
||||
self.assertTrue(obj.manufacture_cost == 11.545 or obj.manufacture_cost == Decimal('11.545'))
|
||||
self.assertIn(obj.manufacture_cost, (11.545, Decimal('11.545')))
|
||||
|
||||
# Order of the annotate/extra in the query doesn't matter
|
||||
obj = Book.objects.extra(select={'manufacture_cost': 'price * .5'}).annotate(mean_auth_age=Avg('authors__age')).get(pk=2)
|
||||
@@ -150,12 +150,12 @@ class AggregationTests(TestCase):
|
||||
rating=3.0
|
||||
)
|
||||
# Different DB backends return different types for the extra select computation
|
||||
self.assertTrue(obj.manufacture_cost == 11.545 or obj.manufacture_cost == Decimal('11.545'))
|
||||
self.assertIn(obj.manufacture_cost, (11.545, Decimal('11.545')))
|
||||
|
||||
# Values queries can be combined with annotate and extra
|
||||
obj = Book.objects.annotate(mean_auth_age=Avg('authors__age')).extra(select={'manufacture_cost': 'price * .5'}).values().get(pk=2)
|
||||
manufacture_cost = obj['manufacture_cost']
|
||||
self.assertTrue(manufacture_cost == 11.545 or manufacture_cost == Decimal('11.545'))
|
||||
self.assertIn(manufacture_cost, (11.545, Decimal('11.545')))
|
||||
del obj['manufacture_cost']
|
||||
self.assertEqual(obj, {
|
||||
"contact_id": 3,
|
||||
@@ -174,7 +174,7 @@ class AggregationTests(TestCase):
|
||||
# matter
|
||||
obj = Book.objects.values().annotate(mean_auth_age=Avg('authors__age')).extra(select={'manufacture_cost': 'price * .5'}).get(pk=2)
|
||||
manufacture_cost = obj['manufacture_cost']
|
||||
self.assertTrue(manufacture_cost == 11.545 or manufacture_cost == Decimal('11.545'))
|
||||
self.assertIn(manufacture_cost, (11.545, Decimal('11.545')))
|
||||
del obj['manufacture_cost']
|
||||
self.assertEqual(obj, {
|
||||
'contact_id': 3,
|
||||
@@ -1156,15 +1156,15 @@ class JoinPromotionTests(TestCase):
|
||||
def test_existing_join_not_promoted(self):
|
||||
# No promotion for existing joins
|
||||
qs = Charlie.objects.filter(alfa__name__isnull=False).annotate(Count('alfa__name'))
|
||||
self.assertTrue(' INNER JOIN ' in str(qs.query))
|
||||
self.assertIn(' INNER JOIN ', str(qs.query))
|
||||
# Also, the existing join is unpromoted when doing filtering for already
|
||||
# promoted join.
|
||||
qs = Charlie.objects.annotate(Count('alfa__name')).filter(alfa__name__isnull=False)
|
||||
self.assertTrue(' INNER JOIN ' in str(qs.query))
|
||||
self.assertIn(' INNER JOIN ', str(qs.query))
|
||||
# But, as the join is nullable first use by annotate will be LOUTER
|
||||
qs = Charlie.objects.annotate(Count('alfa__name'))
|
||||
self.assertTrue(' LEFT OUTER JOIN ' in str(qs.query))
|
||||
self.assertIn(' LEFT OUTER JOIN ', str(qs.query))
|
||||
|
||||
def test_non_nullable_fk_not_promoted(self):
|
||||
qs = Book.objects.annotate(Count('contact__name'))
|
||||
self.assertTrue(' INNER JOIN ' in str(qs.query))
|
||||
self.assertIn(' INNER JOIN ', str(qs.query))
|
||||
|
||||
Reference in New Issue
Block a user