summaryrefslogtreecommitdiff
path: root/tests/expressions_case
diff options
context:
space:
mode:
authorAnssi Kääriäinen <akaariai@gmail.com>2015-05-05 14:11:58 +0300
committerTim Graham <timograham@gmail.com>2015-05-05 11:38:12 -0400
commit7b05d2fdaed582662d8f79130932f600f4f966a0 (patch)
tree5299e340503572e5b5f4e08e81c68244a4ee8c1c /tests/expressions_case
parent9096e2b5f75abf8e8882937bd3c3d47ccdc24e25 (diff)
downloaddjango-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.py12
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(