diff options
| author | Michal Petrucha <michal.petrucha@koniiiik.org> | 2016-05-22 21:10:24 +0200 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2016-06-09 11:57:32 -0400 |
| commit | 686a593aaadb1c2e2053fee8c401476dcb4617a5 (patch) | |
| tree | c2a9bc3012d80b188257134bdffaf9bf2552c80d /tests/invalid_models_tests/test_relative_fields.py | |
| parent | effb4ed6f54bb747d26a2c1ce0ea6153ebc6d0a1 (diff) | |
Fixed #26648 -- Added a system check for invalid related_query_name's containing underscores.
Diffstat (limited to 'tests/invalid_models_tests/test_relative_fields.py')
| -rw-r--r-- | tests/invalid_models_tests/test_relative_fields.py | 31 |
1 files changed, 28 insertions, 3 deletions
diff --git a/tests/invalid_models_tests/test_relative_fields.py b/tests/invalid_models_tests/test_relative_fields.py index 2534b345c2..b681e35587 100644 --- a/tests/invalid_models_tests/test_relative_fields.py +++ b/tests/invalid_models_tests/test_relative_fields.py @@ -714,7 +714,7 @@ class RelativeFieldTests(SimpleTestCase): pass for invalid_related_name in invalid_related_names: - Child = type(str('Child_%s') % str(invalid_related_name), (models.Model,), { + Child = type(str('Child%s') % str(invalid_related_name), (models.Model,), { 'parent': models.ForeignKey('Parent', models.CASCADE, related_name=invalid_related_name), '__module__': Parent.__module__, }) @@ -723,7 +723,7 @@ class RelativeFieldTests(SimpleTestCase): errors = Child.check() expected = [ Error( - "The name '%s' is invalid related_name for field Child_%s.parent" + "The name '%s' is invalid related_name for field Child%s.parent" % (invalid_related_name, invalid_related_name), hint="Related name must be a valid Python identifier or end with a '+'", obj=field, @@ -743,7 +743,6 @@ class RelativeFieldTests(SimpleTestCase): '_starts_with_underscore', 'contains_%s_digit' % digit, 'ends_with_plus+', - '_', '_+', '+', ] @@ -813,6 +812,32 @@ class RelativeFieldTests(SimpleTestCase): ), ]) + def test_invalid_related_query_name(self): + class Target(models.Model): + pass + + class Model(models.Model): + first = models.ForeignKey(Target, models.CASCADE, related_name='contains__double') + second = models.ForeignKey(Target, models.CASCADE, related_query_name='ends_underscore_') + + self.assertEqual(Model.check(), [ + Error( + "Reverse query name 'contains__double' must not contain '__'.", + hint=("Add or change a related_name or related_query_name " + "argument for this field."), + obj=Model._meta.get_field('first'), + id='fields.E309', + ), + Error( + "Reverse query name 'ends_underscore_' must not end with an " + "underscore.", + hint=("Add or change a related_name or related_query_name " + "argument for this field."), + obj=Model._meta.get_field('second'), + id='fields.E308', + ), + ]) + @isolate_apps('invalid_models_tests') class AccessorClashTests(SimpleTestCase): |
