summaryrefslogtreecommitdiff
path: root/tests/invalid_models_tests/test_models.py
diff options
context:
space:
mode:
authorIan Foote <python@ian.feete.org>2018-08-27 03:25:06 +0100
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2020-04-30 10:43:50 +0200
commitc226c6cb3209122b6732fd501e2994c408dc258e (patch)
tree3a72f1403e4a061c9d4dbf0d7cd88639457f9df2 /tests/invalid_models_tests/test_models.py
parent555e3a848e7ac13580371c7eafbc89195fee6ea9 (diff)
downloaddjango-c226c6cb3209122b6732fd501e2994c408dc258e.tar.gz
Fixed #20581 -- Added support for deferrable unique constraints.
Diffstat (limited to 'tests/invalid_models_tests/test_models.py')
-rw-r--r--tests/invalid_models_tests/test_models.py44
1 files changed, 44 insertions, 0 deletions
diff --git a/tests/invalid_models_tests/test_models.py b/tests/invalid_models_tests/test_models.py
index f3f0bc8bd5..6bfdf2e736 100644
--- a/tests/invalid_models_tests/test_models.py
+++ b/tests/invalid_models_tests/test_models.py
@@ -1414,3 +1414,47 @@ class ConstraintsTests(TestCase):
]
self.assertEqual(Model.check(databases=self.databases), [])
+
+ def test_deferrable_unique_constraint(self):
+ class Model(models.Model):
+ age = models.IntegerField()
+
+ class Meta:
+ constraints = [
+ models.UniqueConstraint(
+ fields=['age'],
+ name='unique_age_deferrable',
+ deferrable=models.Deferrable.DEFERRED,
+ ),
+ ]
+
+ errors = Model.check(databases=self.databases)
+ expected = [] if connection.features.supports_deferrable_unique_constraints else [
+ Warning(
+ '%s does not support deferrable unique constraints.'
+ % connection.display_name,
+ hint=(
+ "A constraint won't be created. Silence this warning if "
+ "you don't care about it."
+ ),
+ obj=Model,
+ id='models.W038',
+ ),
+ ]
+ self.assertEqual(errors, expected)
+
+ def test_deferrable_unique_constraint_required_db_features(self):
+ class Model(models.Model):
+ age = models.IntegerField()
+
+ class Meta:
+ required_db_features = {'supports_deferrable_unique_constraints'}
+ constraints = [
+ models.UniqueConstraint(
+ fields=['age'],
+ name='unique_age_deferrable',
+ deferrable=models.Deferrable.IMMEDIATE,
+ ),
+ ]
+
+ self.assertEqual(Model.check(databases=self.databases), [])