Commits

Anonymous committed f76da9d

[1.2.X] Fixed #14246: Modified aggregation_regress tests so that they will pass on a variety (sqlite, Postgres, MySQL/MyISAM) of DBs.

r13712 from trunk.

  • Participants
  • Parent commits e88b163
  • Branches releases/1.2.X

Comments (0)

Files changed (1)

File tests/regressiontests/aggregation_regress/tests.py

             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,
             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)
             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,
             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,
         # 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,