diff options
author | Ian Foote <python@ian.feete.org> | 2018-08-27 03:25:06 +0100 |
---|---|---|
committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2020-04-30 10:43:50 +0200 |
commit | c226c6cb3209122b6732fd501e2994c408dc258e (patch) | |
tree | 3a72f1403e4a061c9d4dbf0d7cd88639457f9df2 /tests/invalid_models_tests/test_models.py | |
parent | 555e3a848e7ac13580371c7eafbc89195fee6ea9 (diff) | |
download | django-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.py | 44 |
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), []) |