summaryrefslogtreecommitdiff
path: root/tests/expressions_case
diff options
context:
space:
mode:
authorJosh Smeaton <josh.smeaton@gmail.com>2015-03-05 17:10:48 +1100
committerJosh Smeaton <josh.smeaton@gmail.com>2015-03-06 13:31:43 +1100
commit823f8cdbc91f85a8ab3cb1ccfec5659037b5c148 (patch)
tree7b7429632d38e8d6a56f04df6bd37192137363e0 /tests/expressions_case
parentbd7c879d5a0daeaa58f2a32901db6e8d8ed5212d (diff)
[1.8.x] Fixed #24420 -- Allowed ordering by case expressions
Backport of ceaf31adfff3801f1092a215f73704e15a70e90c from master
Diffstat (limited to 'tests/expressions_case')
-rw-r--r--tests/expressions_case/tests.py24
1 files changed, 24 insertions, 0 deletions
diff --git a/tests/expressions_case/tests.py b/tests/expressions_case/tests.py
index b1b4c77948..1ebaf6d220 100644
--- a/tests/expressions_case/tests.py
+++ b/tests/expressions_case/tests.py
@@ -995,6 +995,30 @@ class CaseExpressionTests(TestCase):
transform=attrgetter('integer', 'integer2', 'test')
)
+ def test_order_by_conditional_implicit(self):
+ self.assertQuerysetEqual(
+ CaseTestModel.objects.filter(integer__lte=2).annotate(test=Case(
+ When(integer=1, then=2),
+ When(integer=2, then=1),
+ default=3,
+ output_field=models.IntegerField(),
+ )).order_by('test', 'pk'),
+ [(2, 1), (2, 1), (1, 2)],
+ transform=attrgetter('integer', 'test')
+ )
+
+ def test_order_by_conditional_explicit(self):
+ self.assertQuerysetEqual(
+ CaseTestModel.objects.filter(integer__lte=2).annotate(test=Case(
+ When(integer=1, then=2),
+ When(integer=2, then=1),
+ default=3,
+ output_field=models.IntegerField(),
+ )).order_by(F('test').asc(), 'pk'),
+ [(2, 1), (2, 1), (1, 2)],
+ transform=attrgetter('integer', 'test')
+ )
+
class CaseDocumentationExamples(TestCase):
@classmethod