diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/expressions/tests.py | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/tests/expressions/tests.py b/tests/expressions/tests.py index 66e19291b2..58682afd82 100644 --- a/tests/expressions/tests.py +++ b/tests/expressions/tests.py @@ -512,6 +512,25 @@ class BasicExpressionsTests(TestCase): Employee.objects.exclude(company_point_of_contact_set=None).values('pk') ) + def test_subquery_eq(self): + qs = Employee.objects.annotate( + is_ceo=Exists(Company.objects.filter(ceo=OuterRef('pk'))), + is_point_of_contact=Exists( + Company.objects.filter(point_of_contact=OuterRef('pk')), + ), + small_company=Exists( + queryset=Company.objects.filter(num_employees__lt=200), + ), + ).filter(is_ceo=True, is_point_of_contact=False, small_company=True) + self.assertNotEqual( + qs.query.annotations['is_ceo'], + qs.query.annotations['is_point_of_contact'], + ) + self.assertNotEqual( + qs.query.annotations['is_ceo'], + qs.query.annotations['small_company'], + ) + def test_in_subquery(self): # This is a contrived test (and you really wouldn't write this query), # but it is a succinct way to test the __in=Subquery() construct. |