summaryrefslogtreecommitdiff
path: root/tests/expressions_case
diff options
context:
space:
mode:
authorAlberto Avila <albertoavila@gmail.com>2016-01-08 14:20:15 -0600
committerTim Graham <timograham@gmail.com>2016-01-13 08:56:36 -0500
commitcca151d196d520f799d3517a9719d03c0c8c9d8a (patch)
tree0f05547c3798f2f9a638e9e9e8e3bef0258a0b71 /tests/expressions_case
parentd45cfefbad4a6551cc40bf4c8c6d443da9a9d888 (diff)
Refs #26071 -- Added test for __in lookup in a Case expression.
Forwardport of 5b3c66d8b64add684489f5010e43de73e7acdd04 from stable/1.8.x
Diffstat (limited to 'tests/expressions_case')
-rw-r--r--tests/expressions_case/tests.py13
1 files changed, 12 insertions, 1 deletions
diff --git a/tests/expressions_case/tests.py b/tests/expressions_case/tests.py
index d386cabbc9..f9cdfc5d5c 100644
--- a/tests/expressions_case/tests.py
+++ b/tests/expressions_case/tests.py
@@ -8,7 +8,7 @@ from uuid import UUID
from django.core.exceptions import FieldError
from django.db import connection, models
-from django.db.models import F, Q, Max, Min, Value
+from django.db.models import F, Q, Max, Min, Sum, Value
from django.db.models.expressions import Case, When
from django.test import TestCase
from django.utils import six
@@ -119,6 +119,17 @@ class CaseExpressionTests(TestCase):
transform=attrgetter('integer', 'join_test')
)
+ def test_annotate_with_in_clause(self):
+ fk_rels = FKCaseTestModel.objects.filter(integer__in=[5])
+ self.assertQuerysetEqual(
+ CaseTestModel.objects.only('pk', 'integer').annotate(in_test=Sum(Case(
+ When(fk_rel__in=fk_rels, then=F('fk_rel__integer')),
+ default=Value(0),
+ ))).order_by('pk'),
+ [(1, 0), (2, 0), (3, 0), (2, 0), (3, 0), (3, 0), (4, 5)],
+ transform=attrgetter('integer', 'in_test')
+ )
+
def test_annotate_with_join_in_condition(self):
self.assertQuerysetEqual(
CaseTestModel.objects.annotate(join_test=Case(