summaryrefslogtreecommitdiff
path: root/tests/invalid_models_tests/test_relative_fields.py
diff options
context:
space:
mode:
authorMariusz Felisiak <felisiak.mariusz@gmail.com>2015-10-05 22:29:23 +0200
committerTim Graham <timograham@gmail.com>2015-10-06 19:23:53 -0400
commitfbe89307455e939bc5c8b42133a3140aefd1f1f2 (patch)
tree7fccdd4e833d410c0d2f1c384d24cd2850089056 /tests/invalid_models_tests/test_relative_fields.py
parentd81b0812d43b8c068c8e65b19c1fa9dbdcb1da47 (diff)
[1.9.x] Fixed #25503 -- Fixed system check crash on ForeignKey to abstract model.
Backport of 914167abf19d16ac97c0f1f6ae1b08cb377c8f3a from master
Diffstat (limited to 'tests/invalid_models_tests/test_relative_fields.py')
-rw-r--r--tests/invalid_models_tests/test_relative_fields.py56
1 files changed, 30 insertions, 26 deletions
diff --git a/tests/invalid_models_tests/test_relative_fields.py b/tests/invalid_models_tests/test_relative_fields.py
index 04dca8b35e..ad1c25da52 100644
--- a/tests/invalid_models_tests/test_relative_fields.py
+++ b/tests/invalid_models_tests/test_relative_fields.py
@@ -386,25 +386,27 @@ class RelativeFieldTests(IsolatedModelsTestCase):
self.assertEqual(errors, expected)
def test_foreign_key_to_abstract_model(self):
- class Model(models.Model):
- foreign_key = models.ForeignKey('AbstractModel', models.CASCADE)
-
class AbstractModel(models.Model):
class Meta:
abstract = True
- field = Model._meta.get_field('foreign_key')
- errors = field.check()
- expected = [
- Error(
- "Field defines a relation with model 'AbstractModel', "
- "which is either not installed, or is abstract.",
- hint=None,
- obj=field,
- id='fields.E300',
- ),
+ class Model(models.Model):
+ rel_string_foreign_key = models.ForeignKey('AbstractModel', models.CASCADE)
+ rel_class_foreign_key = models.ForeignKey(AbstractModel, models.CASCADE)
+
+ fields = [
+ Model._meta.get_field('rel_string_foreign_key'),
+ Model._meta.get_field('rel_class_foreign_key'),
]
- self.assertEqual(errors, expected)
+ expected_error = Error(
+ "Field defines a relation with model 'AbstractModel', "
+ "which is either not installed, or is abstract.",
+ id='fields.E300',
+ )
+ for field in fields:
+ expected_error.obj = field
+ errors = field.check()
+ self.assertEqual(errors, [expected_error])
def test_m2m_to_abstract_model(self):
class AbstractModel(models.Model):
@@ -412,20 +414,22 @@ class RelativeFieldTests(IsolatedModelsTestCase):
abstract = True
class Model(models.Model):
- m2m = models.ManyToManyField('AbstractModel')
+ rel_string_m2m = models.ManyToManyField('AbstractModel')
+ rel_class_m2m = models.ManyToManyField(AbstractModel)
- field = Model._meta.get_field('m2m')
- errors = field.check(from_model=Model)
- expected = [
- Error(
- "Field defines a relation with model 'AbstractModel', "
- "which is either not installed, or is abstract.",
- hint=None,
- obj=field,
- id='fields.E300',
- ),
+ fields = [
+ Model._meta.get_field('rel_string_m2m'),
+ Model._meta.get_field('rel_class_m2m'),
]
- self.assertEqual(errors, expected)
+ expected_error = Error(
+ "Field defines a relation with model 'AbstractModel', "
+ "which is either not installed, or is abstract.",
+ id='fields.E300',
+ )
+ for field in fields:
+ expected_error.obj = field
+ errors = field.check(from_model=Model)
+ self.assertEqual(errors, [expected_error])
def test_unique_m2m(self):
class Person(models.Model):