summaryrefslogtreecommitdiff
path: root/tests/foreign_object
diff options
context:
space:
mode:
authorSimon Charette <charette.s@gmail.com>2025-01-27 23:10:13 -0500
committerSarah Boyce <42296566+sarahboyce@users.noreply.github.com>2025-02-11 09:16:44 +0100
commitdc1c9b4ddd3ca64279da7c97b5023fbedf2340e2 (patch)
tree83f9ba42f87568df2bd3a44ab976edcc02df793c /tests/foreign_object
parentf8fce8d4dce7cf6d272a29351faddd5fa76f1aa0 (diff)
[5.2.x] Fixed #36149 -- Allowed subquery values against tuple exact and in lookups.
Non-tuple exact and in lookups have specialized logic for subqueries that can be adapted to properly assign select mask if unspecified and ensure the number of involved members are matching on both side of the operator. Backport of 41239fe34d64e801212dccaa4585e4802d0fac68 from main.
Diffstat (limited to 'tests/foreign_object')
-rw-r--r--tests/foreign_object/test_tuple_lookups.py18
1 files changed, 10 insertions, 8 deletions
diff --git a/tests/foreign_object/test_tuple_lookups.py b/tests/foreign_object/test_tuple_lookups.py
index 42717c4f11..008f118994 100644
--- a/tests/foreign_object/test_tuple_lookups.py
+++ b/tests/foreign_object/test_tuple_lookups.py
@@ -63,9 +63,11 @@ class TupleLookupsTests(TestCase):
)
def test_exact_subquery(self):
- with self.assertRaisesMessage(
- ValueError, "'exact' doesn't support multi-column subqueries."
- ):
+ msg = (
+ "The QuerySet value for the exact lookup must have 2 selected "
+ "fields (received 1)"
+ )
+ with self.assertRaisesMessage(ValueError, msg):
subquery = Customer.objects.filter(id=self.customer_1.id)[:1]
self.assertSequenceEqual(
Contact.objects.filter(customer=subquery).order_by("id"), ()
@@ -140,11 +142,11 @@ class TupleLookupsTests(TestCase):
def test_tuple_in_subquery_must_have_2_fields(self):
lhs = (F("customer_code"), F("company_code"))
rhs = Customer.objects.values_list("customer_id").query
- with self.assertRaisesMessage(
- ValueError,
- "'in' subquery lookup of ('customer_code', 'company_code') "
- "must have 2 fields (received 1)",
- ):
+ msg = (
+ "The QuerySet value for the 'in' lookup must have 2 selected "
+ "fields (received 1)"
+ )
+ with self.assertRaisesMessage(ValueError, msg):
TupleIn(lhs, rhs)
def test_tuple_in_subquery(self):