diff options
| author | Tom <tom@tomforb.es> | 2017-04-22 16:44:51 +0100 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2017-08-12 17:58:28 -0400 |
| commit | b78d100fa62cd4fbbc70f2bae77c192cb36c1ccd (patch) | |
| tree | be1f272298c15c6a261e33dff7486b0c3727b407 /tests/expressions | |
| parent | 489421b01562494ab506de5d30ea97d7b6b5df30 (diff) | |
Fixed #27849 -- Added filtering support to aggregates.
Diffstat (limited to 'tests/expressions')
| -rw-r--r-- | tests/expressions/tests.py | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/tests/expressions/tests.py b/tests/expressions/tests.py index 8952045002..7865492ed5 100644 --- a/tests/expressions/tests.py +++ b/tests/expressions/tests.py @@ -5,7 +5,7 @@ from copy import deepcopy from django.core.exceptions import FieldError from django.db import DatabaseError, connection, models, transaction -from django.db.models import CharField, TimeField, UUIDField +from django.db.models import CharField, Q, TimeField, UUIDField from django.db.models.aggregates import ( Avg, Count, Max, Min, StdDev, Sum, Variance, ) @@ -1369,3 +1369,16 @@ class ReprTests(TestCase): self.assertEqual(repr(StdDev('a')), "StdDev(F(a), sample=False)") self.assertEqual(repr(Sum('a')), "Sum(F(a))") self.assertEqual(repr(Variance('a', sample=True)), "Variance(F(a), sample=True)") + + def test_filtered_aggregates(self): + filter = Q(a=1) + self.assertEqual(repr(Avg('a', filter=filter)), "Avg(F(a), filter=(AND: ('a', 1)))") + self.assertEqual(repr(Count('a', filter=filter)), "Count(F(a), distinct=False, filter=(AND: ('a', 1)))") + self.assertEqual(repr(Max('a', filter=filter)), "Max(F(a), filter=(AND: ('a', 1)))") + self.assertEqual(repr(Min('a', filter=filter)), "Min(F(a), filter=(AND: ('a', 1)))") + self.assertEqual(repr(StdDev('a', filter=filter)), "StdDev(F(a), filter=(AND: ('a', 1)), sample=False)") + self.assertEqual(repr(Sum('a', filter=filter)), "Sum(F(a), filter=(AND: ('a', 1)))") + self.assertEqual( + repr(Variance('a', sample=True, filter=filter)), + "Variance(F(a), filter=(AND: ('a', 1)), sample=True)" + ) |
