From b78d100fa62cd4fbbc70f2bae77c192cb36c1ccd Mon Sep 17 00:00:00 2001 From: Tom Date: Sat, 22 Apr 2017 16:44:51 +0100 Subject: Fixed #27849 -- Added filtering support to aggregates. --- tests/expressions/tests.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'tests/expressions') 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)" + ) -- cgit v1.3