summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/inspectdb/models.py14
-rw-r--r--tests/inspectdb/tests.py7
2 files changed, 21 insertions, 0 deletions
diff --git a/tests/inspectdb/models.py b/tests/inspectdb/models.py
index f2c23f0e0c..4227299b94 100644
--- a/tests/inspectdb/models.py
+++ b/tests/inspectdb/models.py
@@ -1,4 +1,5 @@
from django.db import connection, models
+from django.db.models.functions import Lower
class People(models.Model):
@@ -117,3 +118,16 @@ class UniqueTogether(models.Model):
("from_field", "field1"),
("non_unique", "non_unique_0"),
]
+
+
+class FuncUniqueConstraint(models.Model):
+ name = models.CharField(max_length=255)
+ rank = models.IntegerField()
+
+ class Meta:
+ constraints = [
+ models.UniqueConstraint(
+ Lower("name"), models.F("rank"), name="index_lower_name"
+ )
+ ]
+ required_db_features = {"supports_expression_indexes"}
diff --git a/tests/inspectdb/tests.py b/tests/inspectdb/tests.py
index 53c7ce9013..39d5b6cbe5 100644
--- a/tests/inspectdb/tests.py
+++ b/tests/inspectdb/tests.py
@@ -330,6 +330,13 @@ class InspectDBTestCase(TestCase):
output = out.getvalue()
self.assertIn("class InspectdbSpecialTableName(models.Model):", output)
+ @skipUnlessDBFeature("supports_expression_indexes")
+ def test_table_with_func_unique_constraint(self):
+ out = StringIO()
+ call_command("inspectdb", "inspectdb_funcuniqueconstraint", stdout=out)
+ output = out.getvalue()
+ self.assertIn("class InspectdbFuncuniqueconstraint(models.Model):", output)
+
def test_managed_models(self):
"""
By default the command generates models with `Meta.managed = False`.