From ceaf31adfff3801f1092a215f73704e15a70e90c Mon Sep 17 00:00:00 2001 From: Josh Smeaton Date: Thu, 5 Mar 2015 17:10:48 +1100 Subject: Fixed #24420 -- Allowed ordering by case expressions --- tests/expressions_case/tests.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'tests/expressions_case') diff --git a/tests/expressions_case/tests.py b/tests/expressions_case/tests.py index 69f47b1d95..42fa8e61a4 100644 --- a/tests/expressions_case/tests.py +++ b/tests/expressions_case/tests.py @@ -980,6 +980,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 -- cgit v1.3