From 037b579b5ed5ba75497230a26ca93156cf0cdc5c Mon Sep 17 00:00:00 2001 From: Karen Tracey Date: Fri, 10 Sep 2010 17:57:42 +0000 Subject: [PATCH] Fixed #14246: Modified aggregation_regress tests so that they will pass on a variety (sqlite, Postgres, MySQL/MyISAM) of DBs. git-svn-id: http://code.djangoproject.com/svn/django/trunk@13712 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- tests/regressiontests/aggregation_regress/tests.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/tests/regressiontests/aggregation_regress/tests.py b/tests/regressiontests/aggregation_regress/tests.py index 9a413ec60a..51f439c5a1 100644 --- a/tests/regressiontests/aggregation_regress/tests.py +++ b/tests/regressiontests/aggregation_regress/tests.py @@ -135,7 +135,6 @@ class AggregationTests(TestCase): contact_id=3, id=2, isbn=u'067232959', - manufacture_cost=11.545, mean_auth_age=45.0, name='Sams Teach Yourself Django in 24 Hours', pages=528, @@ -144,6 +143,8 @@ class AggregationTests(TestCase): publisher_id=2, 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')) # 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) @@ -151,7 +152,6 @@ class AggregationTests(TestCase): contact_id=3, id=2, isbn=u'067232959', - manufacture_cost=11.545, mean_auth_age=45.0, name=u'Sams Teach Yourself Django in 24 Hours', pages=528, @@ -160,14 +160,18 @@ class AggregationTests(TestCase): publisher_id=2, 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')) # 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')) + del obj['manufacture_cost'] self.assertEqual(obj, { "contact_id": 3, "id": 2, "isbn": u"067232959", - "manufacture_cost": 11.545, "mean_auth_age": 45.0, "name": u"Sams Teach Yourself Django in 24 Hours", "pages": 528, @@ -180,11 +184,13 @@ class AggregationTests(TestCase): # The order of the (empty) values, annotate and extra clauses doesn't # 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')) + del obj['manufacture_cost'] self.assertEqual(obj, { 'contact_id': 3, 'id': 2, 'isbn': u'067232959', - 'manufacture_cost': 11.545, 'mean_auth_age': 45.0, 'name': u'Sams Teach Yourself Django in 24 Hours', 'pages': 528,