summaryrefslogtreecommitdiff
path: root/tests/invalid_models_tests
diff options
context:
space:
mode:
authorkimsoungryoul <kimsoungryoul@gmail.com>2022-10-16 14:59:39 +0900
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2022-12-28 06:28:07 +0100
commit78f163a4fb3937aca2e71786fbdd51a0ef39629e (patch)
tree7e61c2f8d96b9dab60e317d3483460064327d701 /tests/invalid_models_tests
parent68ef274bc505cd44f305c03cbf84cf08826200a8 (diff)
Fixed #18468 -- Added support for comments on columns and tables.
Thanks Jared Chung, Tom Carrick, David Smith, Nick Pope, and Mariusz Felisiak for reviews. Co-authored-by: Mariusz Felisiak <felisiak.mariusz@gmail.com> Co-authored-by: Nick Pope <nick@nickpope.me.uk>
Diffstat (limited to 'tests/invalid_models_tests')
-rw-r--r--tests/invalid_models_tests/test_models.py31
-rw-r--r--tests/invalid_models_tests/test_ordinary_fields.py32
-rw-r--r--tests/invalid_models_tests/test_relative_fields.py9
3 files changed, 71 insertions, 1 deletions
diff --git a/tests/invalid_models_tests/test_models.py b/tests/invalid_models_tests/test_models.py
index 5a5aeccdf5..c07c83d79d 100644
--- a/tests/invalid_models_tests/test_models.py
+++ b/tests/invalid_models_tests/test_models.py
@@ -1872,6 +1872,37 @@ class OtherModelTests(SimpleTestCase):
)
+@isolate_apps("invalid_models_tests")
+class DbTableCommentTests(TestCase):
+ def test_db_table_comment(self):
+ class Model(models.Model):
+ class Meta:
+ db_table_comment = "Table comment"
+
+ errors = Model.check(databases=self.databases)
+ expected = (
+ []
+ if connection.features.supports_comments
+ else [
+ Warning(
+ f"{connection.display_name} does not support comments on tables "
+ f"(db_table_comment).",
+ obj=Model,
+ id="models.W046",
+ ),
+ ]
+ )
+ self.assertEqual(errors, expected)
+
+ def test_db_table_comment_required_db_features(self):
+ class Model(models.Model):
+ class Meta:
+ db_table_comment = "Table comment"
+ required_db_features = {"supports_comments"}
+
+ self.assertEqual(Model.check(databases=self.databases), [])
+
+
class MultipleAutoFieldsTests(TestCase):
def test_multiple_autofields(self):
msg = (
diff --git a/tests/invalid_models_tests/test_ordinary_fields.py b/tests/invalid_models_tests/test_ordinary_fields.py
index ef7f845a33..4e07c95956 100644
--- a/tests/invalid_models_tests/test_ordinary_fields.py
+++ b/tests/invalid_models_tests/test_ordinary_fields.py
@@ -1023,3 +1023,35 @@ class JSONFieldTests(TestCase):
field = models.JSONField(default=callable_default)
self.assertEqual(Model._meta.get_field("field").check(), [])
+
+
+@isolate_apps("invalid_models_tests")
+class DbCommentTests(TestCase):
+ def test_db_comment(self):
+ class Model(models.Model):
+ field = models.IntegerField(db_comment="Column comment")
+
+ errors = Model._meta.get_field("field").check(databases=self.databases)
+ expected = (
+ []
+ if connection.features.supports_comments
+ else [
+ DjangoWarning(
+ f"{connection.display_name} does not support comments on columns "
+ f"(db_comment).",
+ obj=Model._meta.get_field("field"),
+ id="fields.W163",
+ ),
+ ]
+ )
+ self.assertEqual(errors, expected)
+
+ def test_db_comment_required_db_features(self):
+ class Model(models.Model):
+ field = models.IntegerField(db_comment="Column comment")
+
+ class Meta:
+ required_db_features = {"supports_comments"}
+
+ errors = Model._meta.get_field("field").check(databases=self.databases)
+ self.assertEqual(errors, [])
diff --git a/tests/invalid_models_tests/test_relative_fields.py b/tests/invalid_models_tests/test_relative_fields.py
index 5b4bb45ff8..075bbaefbc 100644
--- a/tests/invalid_models_tests/test_relative_fields.py
+++ b/tests/invalid_models_tests/test_relative_fields.py
@@ -94,7 +94,9 @@ class RelativeFieldTests(SimpleTestCase):
name = models.CharField(max_length=20)
class ModelM2M(models.Model):
- m2m = models.ManyToManyField(Model, null=True, validators=[lambda x: x])
+ m2m = models.ManyToManyField(
+ Model, null=True, validators=[lambda x: x], db_comment="Column comment"
+ )
field = ModelM2M._meta.get_field("m2m")
self.assertEqual(
@@ -110,6 +112,11 @@ class RelativeFieldTests(SimpleTestCase):
obj=field,
id="fields.W341",
),
+ DjangoWarning(
+ "db_comment has no effect on ManyToManyField.",
+ obj=field,
+ id="fields.W346",
+ ),
],
)