summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/queries/test_q.py19
-rw-r--r--tests/queries/test_query.py28
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),
- )