diff options
author | Anssi Kääriäinen <akaariai@gmail.com> | 2015-05-05 14:11:58 +0300 |
---|---|---|
committer | Tim Graham <timograham@gmail.com> | 2015-05-05 11:38:12 -0400 |
commit | 7b05d2fdaed582662d8f79130932f600f4f966a0 (patch) | |
tree | 5299e340503572e5b5f4e08e81c68244a4ee8c1c /tests/expressions_case | |
parent | 9096e2b5f75abf8e8882937bd3c3d47ccdc24e25 (diff) | |
download | django-7b05d2fdaed582662d8f79130932f600f4f966a0.tar.gz |
Fixed #24752 -- query crash when reusing Case expressions
Case expressions weren't copied deep enough (self.cases list was
reused resulting in an error).
Diffstat (limited to 'tests/expressions_case')
-rw-r--r-- | tests/expressions_case/tests.py | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/tests/expressions_case/tests.py b/tests/expressions_case/tests.py index 42fa8e61a4..2c3186f10e 100644 --- a/tests/expressions_case/tests.py +++ b/tests/expressions_case/tests.py @@ -274,6 +274,18 @@ class CaseExpressionTests(TestCase): transform=attrgetter('integer', 'integer2') ) + def test_case_reuse(self): + SOME_CASE = Case( + When(pk=0, then=Value('0')), + default=Value('1'), + output_field=models.CharField(), + ) + self.assertQuerysetEqual( + CaseTestModel.objects.annotate(somecase=SOME_CASE).order_by('pk'), + CaseTestModel.objects.annotate(somecase=SOME_CASE).order_by('pk').values_list('pk', 'somecase'), + lambda x: (x.pk, x.somecase) + ) + def test_aggregate(self): self.assertEqual( CaseTestModel.objects.aggregate( |