summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/lookup/models.py12
-rw-r--r--tests/lookup/tests.py9
2 files changed, 9 insertions, 12 deletions
diff --git a/tests/lookup/models.py b/tests/lookup/models.py
index 9bb3412c33..75f3e3b6ba 100644
--- a/tests/lookup/models.py
+++ b/tests/lookup/models.py
@@ -19,6 +19,7 @@ class Alarm(models.Model):
class Author(models.Model):
name = models.CharField(max_length=100)
alias = models.CharField(max_length=50, null=True, blank=True)
+ bio = models.TextField(null=True)
class Meta:
ordering = ("name",)
@@ -50,22 +51,11 @@ class NulledTextField(models.TextField):
return None if value == "" else value
-class NullField(models.Field):
- pass
-
-
-NullField.register_lookup(IsNull)
-
-
@NulledTextField.register_lookup
class NulledTransform(models.Transform):
lookup_name = "nulled"
template = "NULL"
- @property
- def output_field(self):
- return NullField()
-
@NulledTextField.register_lookup
class IsNullWithNoneAsRHS(IsNull):
diff --git a/tests/lookup/tests.py b/tests/lookup/tests.py
index 503bae18fc..ab3d968aac 100644
--- a/tests/lookup/tests.py
+++ b/tests/lookup/tests.py
@@ -49,7 +49,7 @@ class LookupTests(TestCase):
@classmethod
def setUpTestData(cls):
# Create a few Authors.
- cls.au1 = Author.objects.create(name="Author 1", alias="a1")
+ cls.au1 = Author.objects.create(name="Author 1", alias="a1", bio="x" * 4001)
cls.au2 = Author.objects.create(name="Author 2", alias="a2")
# Create a few Articles.
cls.a1 = Article.objects.create(
@@ -1000,6 +1000,13 @@ class LookupTests(TestCase):
Season.objects.create(year=2012, gt=None)
self.assertQuerySetEqual(Season.objects.filter(gt__regex=r"^$"), [])
+ def test_textfield_exact_null(self):
+ with self.assertNumQueries(1) as ctx:
+ self.assertSequenceEqual(Author.objects.filter(bio=None), [self.au2])
+ # Columns with IS NULL condition are not wrapped (except PostgreSQL).
+ bio_column = connection.ops.quote_name(Author._meta.get_field("bio").column)
+ self.assertIn(f"{bio_column} IS NULL", ctx.captured_queries[0]["sql"])
+
def test_regex_non_string(self):
"""
A regex lookup does not fail on non-string fields