mirror of
https://github.com/django/django.git
synced 2025-10-24 14:16:09 +00:00
Fixed #31777 -- Added support for database collations to Char/TextFields.
Thanks Simon Charette and Mariusz Felisiak for reviews.
This commit is contained in:
committed by
Mariusz Felisiak
parent
ba6b32e5ef
commit
e387f191f7
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user