diff options
author | David Wobrock <david.wobrock@gmail.com> | 2022-08-07 17:25:43 +0200 |
---|---|---|
committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2022-08-09 07:55:31 +0200 |
commit | 036bb2b74afb50a71e7a945e8dd83499b603ac3a (patch) | |
tree | a77a599596972b8002f3ca21b400be8002c6162d /tests/expressions_case | |
parent | 63884829acd207404f2a5c3cc1d6b4cd0a822b70 (diff) | |
download | django-036bb2b74afb50a71e7a945e8dd83499b603ac3a.tar.gz |
Fixed #33895 -- Fixed Case() crash with filters that match everything in When().
Thanks shukryzablah for the report.
Diffstat (limited to 'tests/expressions_case')
-rw-r--r-- | tests/expressions_case/tests.py | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/tests/expressions_case/tests.py b/tests/expressions_case/tests.py index 9bad0b8747..221806c933 100644 --- a/tests/expressions_case/tests.py +++ b/tests/expressions_case/tests.py @@ -415,6 +415,16 @@ class CaseExpressionTests(TestCase): self.assertEqual(len(objects), CaseTestModel.objects.count()) self.assertTrue(all(obj.selected == "not selected" for obj in objects)) + def test_annotate_with_full_when(self): + objects = CaseTestModel.objects.annotate( + selected=Case( + When(~Q(pk__in=[]), then=Value("selected")), + default=Value("not selected"), + ) + ) + self.assertEqual(len(objects), CaseTestModel.objects.count()) + self.assertTrue(all(obj.selected == "selected" for obj in objects)) + def test_combined_expression(self): self.assertQuerysetEqual( CaseTestModel.objects.annotate( |