summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/expressions_case/tests.py25
1 files changed, 25 insertions, 0 deletions
diff --git a/tests/expressions_case/tests.py b/tests/expressions_case/tests.py
index 2a101eeee1..54c53ef4de 100644
--- a/tests/expressions_case/tests.py
+++ b/tests/expressions_case/tests.py
@@ -1148,6 +1148,31 @@ class CaseExpressionTests(TestCase):
lambda x: x[1:]
)
+ def test_aggregation_empty_cases(self):
+ tests = [
+ # Empty cases and default.
+ (Case(output_field=IntegerField()), None),
+ # Empty cases and a constant default.
+ (Case(default=Value('empty')), 'empty'),
+ # Empty cases and column in the default.
+ (Case(default=F('url')), ''),
+ ]
+ for case, value in tests:
+ with self.subTest(case=case):
+ self.assertQuerysetEqual(
+ CaseTestModel.objects.values('string').annotate(
+ case=case,
+ integer_sum=Sum('integer'),
+ ).order_by('string'),
+ [
+ ('1', value, 1),
+ ('2', value, 4),
+ ('3', value, 9),
+ ('4', value, 4),
+ ],
+ transform=itemgetter('string', 'case', 'integer_sum'),
+ )
+
class CaseDocumentationExamples(TestCase):
@classmethod