diff options
author | Tom Carrick <tom@carrick.eu> | 2020-07-18 13:17:39 +0200 |
---|---|---|
committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2020-09-21 18:24:56 +0200 |
commit | e387f191f76777015b6ea687ce83cdb05ee47cee (patch) | |
tree | 003d83b5efda40fbfcdc1aa9302faca9578b1e30 /tests/invalid_models_tests | |
parent | ba6b32e5efc4c813ba4432777b3b1743d4205d14 (diff) | |
download | django-e387f191f76777015b6ea687ce83cdb05ee47cee.tar.gz |
Fixed #31777 -- Added support for database collations to Char/TextFields.
Thanks Simon Charette and Mariusz Felisiak for reviews.
Diffstat (limited to 'tests/invalid_models_tests')
-rw-r--r-- | tests/invalid_models_tests/test_ordinary_fields.py | 50 |
1 files changed, 49 insertions, 1 deletions
diff --git a/tests/invalid_models_tests/test_ordinary_fields.py b/tests/invalid_models_tests/test_ordinary_fields.py index a81f9eed90..6eddd853af 100644 --- a/tests/invalid_models_tests/test_ordinary_fields.py +++ b/tests/invalid_models_tests/test_ordinary_fields.py @@ -86,7 +86,7 @@ class BinaryFieldTests(SimpleTestCase): @isolate_apps('invalid_models_tests') -class CharFieldTests(SimpleTestCase): +class CharFieldTests(TestCase): def test_valid_field(self): class Model(models.Model): @@ -387,6 +387,30 @@ class CharFieldTests(SimpleTestCase): ) ]) + def test_db_collation(self): + class Model(models.Model): + field = models.CharField(max_length=100, db_collation='anything') + + field = Model._meta.get_field('field') + error = Error( + '%s does not support a database collation on CharFields.' + % connection.display_name, + id='fields.E190', + obj=field, + ) + expected = [] if connection.features.supports_collation_on_charfield else [error] + self.assertEqual(field.check(databases=self.databases), expected) + + def test_db_collation_required_db_features(self): + class Model(models.Model): + field = models.CharField(max_length=100, db_collation='anything') + + class Meta: + required_db_features = {'supports_collation_on_charfield'} + + field = Model._meta.get_field('field') + self.assertEqual(field.check(databases=self.databases), []) + @isolate_apps('invalid_models_tests') class DateFieldTests(SimpleTestCase): @@ -779,6 +803,30 @@ class TextFieldTests(TestCase): ) ]) + def test_db_collation(self): + class Model(models.Model): + field = models.TextField(db_collation='anything') + + field = Model._meta.get_field('field') + error = Error( + '%s does not support a database collation on TextFields.' + % connection.display_name, + id='fields.E190', + obj=field, + ) + expected = [] if connection.features.supports_collation_on_textfield else [error] + self.assertEqual(field.check(databases=self.databases), expected) + + def test_db_collation_required_db_features(self): + class Model(models.Model): + field = models.TextField(db_collation='anything') + + class Meta: + required_db_features = {'supports_collation_on_textfield'} + + field = Model._meta.get_field('field') + self.assertEqual(field.check(databases=self.databases), []) + @isolate_apps('invalid_models_tests') class UUIDFieldTests(TestCase): |