summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorcan <cansarigol@derinbilgi.com.tr>2019-07-04 19:21:50 +0300
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2019-07-05 09:30:21 +0200
commit53209f78302a639032afabf5326d28d4ddd9d03c (patch)
tree1fc04d7c676950946c26d1f760d0badb2f761e6b /tests
parentf197c3dd9130b18397022605c27ffe5755f329d7 (diff)
Fixed #30613 -- Moved index name validation to system checks.
Diffstat (limited to 'tests')
-rw-r--r--tests/invalid_models_tests/test_models.py33
-rw-r--r--tests/model_indexes/tests.py14
2 files changed, 33 insertions, 14 deletions
diff --git a/tests/invalid_models_tests/test_models.py b/tests/invalid_models_tests/test_models.py
index 32617555a2..18a59c407d 100644
--- a/tests/invalid_models_tests/test_models.py
+++ b/tests/invalid_models_tests/test_models.py
@@ -296,6 +296,39 @@ class IndexesTests(SimpleTestCase):
self.assertEqual(Bar.check(), [])
+ def test_name_constraints(self):
+ class Model(models.Model):
+ class Meta:
+ indexes = [
+ models.Index(fields=['id'], name='_index_name'),
+ models.Index(fields=['id'], name='5index_name'),
+ ]
+
+ self.assertEqual(Model.check(), [
+ Error(
+ "The index name '%sindex_name' cannot start with an "
+ "underscore or a number." % prefix,
+ obj=Model,
+ id='models.E033',
+ ) for prefix in ('_', '5')
+ ])
+
+ def test_max_name_length(self):
+ index_name = 'x' * 31
+
+ class Model(models.Model):
+ class Meta:
+ indexes = [models.Index(fields=['id'], name=index_name)]
+
+ self.assertEqual(Model.check(), [
+ Error(
+ "The index name '%s' cannot be longer than 30 characters."
+ % index_name,
+ obj=Model,
+ id='models.E034',
+ ),
+ ])
+
@isolate_apps('invalid_models_tests')
class FieldNamesTests(SimpleTestCase):
diff --git a/tests/model_indexes/tests.py b/tests/model_indexes/tests.py
index 60fc0560e4..5180d8cee9 100644
--- a/tests/model_indexes/tests.py
+++ b/tests/model_indexes/tests.py
@@ -63,20 +63,6 @@ class SimpleIndexesTests(SimpleTestCase):
with self.assertRaisesMessage(ValueError, 'Index.condition must be a Q instance.'):
models.Index(condition='invalid', name='long_book_idx')
- def test_max_name_length(self):
- msg = 'Index names cannot be longer than 30 characters.'
- with self.assertRaisesMessage(ValueError, msg):
- models.Index(fields=['title'], name='looooooooooooong_index_name_idx')
-
- def test_name_constraints(self):
- msg = 'Index names cannot start with an underscore (_).'
- with self.assertRaisesMessage(ValueError, msg):
- models.Index(fields=['title'], name='_name_starting_with_underscore')
-
- msg = 'Index names cannot start with a number (0-9).'
- with self.assertRaisesMessage(ValueError, msg):
- models.Index(fields=['title'], name='5name_starting_with_number')
-
def test_name_auto_generation(self):
index = models.Index(fields=['author'])
index.set_name_with_model(Book)