summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
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()