diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/queries/test_q.py | 19 | ||||
| -rw-r--r-- | tests/queries/test_query.py | 28 |
2 files changed, 15 insertions, 32 deletions
diff --git a/tests/queries/test_q.py b/tests/queries/test_q.py index 84ae6e90a5..bd39b2dc32 100644 --- a/tests/queries/test_q.py +++ b/tests/queries/test_q.py @@ -1,4 +1,5 @@ -from django.db.models import Exists, F, OuterRef, Q +from django.db.models import BooleanField, Exists, F, OuterRef, Q +from django.db.models.expressions import RawSQL from django.test import SimpleTestCase from .models import Tag @@ -50,6 +51,16 @@ class QTests(SimpleTestCase): with self.assertRaisesMessage(TypeError, str(obj)): q & obj + def test_combine_negated_boolean_expression(self): + tagged = Tag.objects.filter(category=OuterRef('pk')) + tests = [ + Q() & ~Exists(tagged), + Q() | ~Exists(tagged), + ] + for q in tests: + with self.subTest(q=q): + self.assertIs(q.negated, True) + def test_deconstruct(self): q = Q(price__gt=F('discounted_price')) path, args, kwargs = q.deconstruct() @@ -101,10 +112,10 @@ class QTests(SimpleTestCase): self.assertEqual(kwargs, {}) def test_deconstruct_boolean_expression(self): - tagged = Tag.objects.filter(category=OuterRef('pk')) - q = Q(Exists(tagged)) + expr = RawSQL('1 = 1', BooleanField()) + q = Q(expr) _, args, kwargs = q.deconstruct() - self.assertEqual(args, (Exists(tagged),)) + self.assertEqual(args, (expr,)) self.assertEqual(kwargs, {}) def test_reconstruct(self): diff --git a/tests/queries/test_query.py b/tests/queries/test_query.py index 5db9d96163..523fa607f0 100644 --- a/tests/queries/test_query.py +++ b/tests/queries/test_query.py @@ -150,31 +150,3 @@ class TestQuery(SimpleTestCase): msg = 'Cannot filter against a non-conditional expression.' with self.assertRaisesMessage(TypeError, msg): query.build_where(Func(output_field=CharField())) - - def test_equality(self): - self.assertNotEqual( - Author.objects.all().query, - Author.objects.filter(item__name='foo').query, - ) - self.assertEqual( - Author.objects.filter(item__name='foo').query, - Author.objects.filter(item__name='foo').query, - ) - self.assertEqual( - Author.objects.filter(item__name='foo').query, - Author.objects.filter(Q(item__name='foo')).query, - ) - - def test_hash(self): - self.assertNotEqual( - hash(Author.objects.all().query), - hash(Author.objects.filter(item__name='foo').query) - ) - self.assertEqual( - hash(Author.objects.filter(item__name='foo').query), - hash(Author.objects.filter(item__name='foo').query), - ) - self.assertEqual( - hash(Author.objects.filter(item__name='foo').query), - hash(Author.objects.filter(Q(item__name='foo')).query), - ) |
