summaryrefslogtreecommitdiff
path: root/tests/invalid_models_tests
diff options
context:
space:
mode:
authorQuentin Fulsher <qfulsher@gmail.com>2016-10-11 00:59:17 -0700
committerTim Graham <timograham@gmail.com>2016-11-22 10:14:10 -0500
commitf62abfc03da61977bf080163f0a2ef014decd86a (patch)
treee0b568cee8c2e3be45d9dcb2dc6cca2e53a36b47 /tests/invalid_models_tests
parent41759c908240409d44fc11d07a562268c81f4bdf (diff)
Fixed #27295 -- Added a system check to prohibit model names that start or end with an underscore or contain double underscores.
Diffstat (limited to 'tests/invalid_models_tests')
-rw-r--r--tests/invalid_models_tests/test_models.py39
-rw-r--r--tests/invalid_models_tests/test_relative_fields.py2
2 files changed, 40 insertions, 1 deletions
diff --git a/tests/invalid_models_tests/test_models.py b/tests/invalid_models_tests/test_models.py
index 1d27e98faa..b50b265bd4 100644
--- a/tests/invalid_models_tests/test_models.py
+++ b/tests/invalid_models_tests/test_models.py
@@ -689,6 +689,45 @@ class OtherModelTests(SimpleTestCase):
self.assertFalse(Child.check())
+ def test_name_beginning_with_underscore(self):
+ class _Model(models.Model):
+ pass
+
+ self.assertEqual(_Model.check(), [
+ Error(
+ "The model name '_Model' cannot start or end with an underscore "
+ "as it collides with the query lookup syntax.",
+ obj=_Model,
+ id='models.E023',
+ )
+ ])
+
+ def test_name_ending_with_underscore(self):
+ class Model_(models.Model):
+ pass
+
+ self.assertEqual(Model_.check(), [
+ Error(
+ "The model name 'Model_' cannot start or end with an underscore "
+ "as it collides with the query lookup syntax.",
+ obj=Model_,
+ id='models.E023',
+ )
+ ])
+
+ def test_name_contains_double_underscores(self):
+ class Test__Model(models.Model):
+ pass
+
+ self.assertEqual(Test__Model.check(), [
+ Error(
+ "The model name 'Test__Model' cannot contain double underscores "
+ "as it collides with the query lookup syntax.",
+ obj=Test__Model,
+ id='models.E024',
+ )
+ ])
+
@override_settings(TEST_SWAPPED_MODEL_BAD_VALUE='not-a-model')
def test_swappable_missing_app_name(self):
class Model(models.Model):
diff --git a/tests/invalid_models_tests/test_relative_fields.py b/tests/invalid_models_tests/test_relative_fields.py
index d178d6936e..7c20a0fb99 100644
--- a/tests/invalid_models_tests/test_relative_fields.py
+++ b/tests/invalid_models_tests/test_relative_fields.py
@@ -794,7 +794,7 @@ class RelativeFieldTests(SimpleTestCase):
pass
for related_name in related_names:
- Child = type(str('Child_%s') % str(related_name), (models.Model,), {
+ Child = type(str('Child%s') % str(related_name), (models.Model,), {
'parent': models.ForeignKey('Parent', models.CASCADE, related_name=related_name),
'__module__': Parent.__module__,
})