summaryrefslogtreecommitdiff
path: root/tests/expressions_case
diff options
context:
space:
mode:
authorHannes Ljungberg <hannes.ljungberg@gmail.com>2020-10-19 22:36:24 +0200
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2020-10-21 07:22:52 +0200
commit0e7a45fca09623e7bad9408a838e522b3cca8d65 (patch)
treee621fc32ee804f72852fe8f39434201fbf9f861f /tests/expressions_case
parent4343430e9c83d1f139e6fbae3a1332f980d5d4fa (diff)
downloaddjango-0e7a45fca09623e7bad9408a838e522b3cca8d65.tar.gz
Fixed #32126 -- Fixed grouping by Case() annotation without cases.
Co-authored-by: Simon Charette <charettes@users.noreply.github.com>
Diffstat (limited to 'tests/expressions_case')
-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