diff options
| author | Quentin Fulsher <qfulsher@gmail.com> | 2016-10-11 00:59:17 -0700 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2016-11-22 10:14:10 -0500 |
| commit | f62abfc03da61977bf080163f0a2ef014decd86a (patch) | |
| tree | e0b568cee8c2e3be45d9dcb2dc6cca2e53a36b47 /tests/invalid_models_tests | |
| parent | 41759c908240409d44fc11d07a562268c81f4bdf (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.py | 39 | ||||
| -rw-r--r-- | tests/invalid_models_tests/test_relative_fields.py | 2 |
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__, }) |
