diff options
| author | Raphael Gaschignard <r.gaschignard@gmail.com> | 2018-02-07 12:09:43 +0900 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2018-02-10 18:35:57 -0500 |
| commit | bf26f66029bca94b007a2452679ac004598364a6 (patch) | |
| tree | cca99e7ec886b016f684c108d040da112434cc17 /tests | |
| parent | 1a1264f1494976c562c7cb832fe47f3e1e765b8f (diff) | |
Fixed #29118 -- Fixed crash with QuerySet.order_by(Exists(...)).
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/expressions/tests.py | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/tests/expressions/tests.py b/tests/expressions/tests.py index 218e540bd9..c2e3fb391a 100644 --- a/tests/expressions/tests.py +++ b/tests/expressions/tests.py @@ -38,10 +38,8 @@ class BasicExpressionsTests(TestCase): name="Foobar Ltd.", num_employees=3, num_chairs=4, ceo=Employee.objects.create(firstname="Frank", lastname="Meyer", salary=20) ) - cls.gmbh = Company.objects.create( - name="Test GmbH", num_employees=32, num_chairs=1, - ceo=Employee.objects.create(firstname="Max", lastname="Mustermann", salary=30) - ) + cls.max = Employee.objects.create(firstname='Max', lastname='Mustermann', salary=30) + cls.gmbh = Company.objects.create(name='Test GmbH', num_employees=32, num_chairs=1, ceo=cls.max) def setUp(self): self.company_query = Company.objects.values( @@ -399,6 +397,14 @@ class BasicExpressionsTests(TestCase): ) self.assertEqual(str(qs.query).count('JOIN'), 2) + def test_order_by_exists(self): + mary = Employee.objects.create(firstname='Mary', lastname='Mustermann', salary=20) + mustermanns_by_seniority = Employee.objects.filter(lastname='Mustermann').order_by( + # Order by whether the employee is the CEO of a company + Exists(Company.objects.filter(ceo=OuterRef('pk'))).desc() + ) + self.assertSequenceEqual(mustermanns_by_seniority, [self.max, mary]) + def test_outerref(self): inner = Company.objects.filter(point_of_contact=OuterRef('pk')) msg = ( |
