summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/lookup/test_lookups.py26
-rw-r--r--tests/queries/test_query.py28
2 files changed, 53 insertions, 1 deletions
diff --git a/tests/lookup/test_lookups.py b/tests/lookup/test_lookups.py
index c3aa48ddad..4d90612048 100644
--- a/tests/lookup/test_lookups.py
+++ b/tests/lookup/test_lookups.py
@@ -1,10 +1,34 @@
from datetime import datetime
+from unittest import mock
from django.db.models import DateTimeField, Value
-from django.db.models.lookups import YearLookup
+from django.db.models.lookups import Lookup, YearLookup
from django.test import SimpleTestCase
+class CustomLookup(Lookup):
+ pass
+
+
+class LookupTests(SimpleTestCase):
+ def test_equality(self):
+ lookup = Lookup(Value(1), Value(2))
+ self.assertEqual(lookup, lookup)
+ self.assertEqual(lookup, Lookup(lookup.lhs, lookup.rhs))
+ self.assertEqual(lookup, mock.ANY)
+ self.assertNotEqual(lookup, Lookup(lookup.lhs, Value(3)))
+ self.assertNotEqual(lookup, Lookup(Value(3), lookup.rhs))
+ self.assertNotEqual(lookup, CustomLookup(lookup.lhs, lookup.rhs))
+
+ def test_hash(self):
+ lookup = Lookup(Value(1), Value(2))
+ self.assertEqual(hash(lookup), hash(lookup))
+ self.assertEqual(hash(lookup), hash(Lookup(lookup.lhs, lookup.rhs)))
+ self.assertNotEqual(hash(lookup), hash(Lookup(lookup.lhs, Value(3))))
+ self.assertNotEqual(hash(lookup), hash(Lookup(Value(3), lookup.rhs)))
+ self.assertNotEqual(hash(lookup), hash(CustomLookup(lookup.lhs, lookup.rhs)))
+
+
class YearLookupTests(SimpleTestCase):
def test_get_bound_params(self):
look_up = YearLookup(
diff --git a/tests/queries/test_query.py b/tests/queries/test_query.py
index 523fa607f0..5db9d96163 100644
--- a/tests/queries/test_query.py
+++ b/tests/queries/test_query.py
@@ -150,3 +150,31 @@ 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),
+ )