summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorSimon Charette <charette.s@gmail.com>2022-11-15 00:20:29 -0500
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2022-11-15 10:48:19 +0100
commit70499b25c708557fb9ee2264686cd172f4b2354e (patch)
tree6a61f98f0904b47be12c998e8741ae60f5986aa7 /tests
parent7adb0c8b6008c30cd1d47ba076da4bdbdb4595fe (diff)
Fixed #34123 -- Fixed combinator order by alias when using select_related().
Regression in c58a8acd413ccc992dd30afd98ed900897e1f719. Thanks to Shai Berger for the report and tests. Co-Authored-By: David Sanders <shang.xiao.sanders@gmail.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/queries/test_qs_combinators.py28
1 files changed, 28 insertions, 0 deletions
diff --git a/tests/queries/test_qs_combinators.py b/tests/queries/test_qs_combinators.py
index 865e172816..9d4988d6eb 100644
--- a/tests/queries/test_qs_combinators.py
+++ b/tests/queries/test_qs_combinators.py
@@ -304,6 +304,34 @@ class QuerySetSetOperationTests(TestCase):
operator.itemgetter("num"),
)
+ def test_union_with_select_related_and_order(self):
+ e1 = ExtraInfo.objects.create(value=7, info="e1")
+ a1 = Author.objects.create(name="a1", num=1, extra=e1)
+ a2 = Author.objects.create(name="a2", num=3, extra=e1)
+ Author.objects.create(name="a3", num=2, extra=e1)
+ base_qs = Author.objects.select_related("extra").order_by()
+ qs1 = base_qs.filter(name="a1")
+ qs2 = base_qs.filter(name="a2")
+ self.assertSequenceEqual(qs1.union(qs2).order_by("pk"), [a1, a2])
+
+ @skipUnlessDBFeature("supports_slicing_ordering_in_compound")
+ def test_union_with_select_related_and_first(self):
+ e1 = ExtraInfo.objects.create(value=7, info="e1")
+ a1 = Author.objects.create(name="a1", num=1, extra=e1)
+ Author.objects.create(name="a2", num=3, extra=e1)
+ base_qs = Author.objects.select_related("extra")
+ qs1 = base_qs.filter(name="a1")
+ qs2 = base_qs.filter(name="a2")
+ self.assertEqual(qs1.union(qs2).first(), a1)
+
+ def test_union_with_first(self):
+ e1 = ExtraInfo.objects.create(value=7, info="e1")
+ a1 = Author.objects.create(name="a1", num=1, extra=e1)
+ base_qs = Author.objects.order_by()
+ qs1 = base_qs.filter(name="a1")
+ qs2 = base_qs.filter(name="a2")
+ self.assertEqual(qs1.union(qs2).first(), a1)
+
def test_union_multiple_models_with_values_list_and_order(self):
reserved_name = ReservedName.objects.create(name="rn1", order=0)
qs1 = Celebrity.objects.all()