diff options
| author | Simon Charette <charette.s@gmail.com> | 2016-02-22 16:05:47 -0500 |
|---|---|---|
| committer | Simon Charette <charette.s@gmail.com> | 2016-02-29 22:13:54 -0500 |
| commit | 48cf7516409c668bf11e24e6b7cd8eaea13ae3b8 (patch) | |
| tree | 5b4c48da5e86dcf2cf6412fde0ce67dff01147fa /tests | |
| parent | e9234569f69e0afcc97b3b1ff5293bad1678a076 (diff) | |
[1.9.x] Fixed #26186 -- Documented how app relative relationships of abstract models behave.
This partially reverts commit bc7d201bdbaeac14a49f51a9ef292d6312b4c45e.
Thanks Tim for the review.
Refs #25858.
Backport of 0223e213dd690b6b6e0669f836a20efb10998c83 from master
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/model_fields/tests.py | 66 |
1 files changed, 38 insertions, 28 deletions
diff --git a/tests/model_fields/tests.py b/tests/model_fields/tests.py index 5aafdb2844..cc6639b032 100644 --- a/tests/model_fields/tests.py +++ b/tests/model_fields/tests.py @@ -251,24 +251,29 @@ class ForeignKeyTests(test.TestCase): def test_abstract_model_app_relative_foreign_key(self): test_apps = Apps(['model_fields', 'model_fields.tests']) - class Refered(models.Model): - class Meta: - apps = test_apps - app_label = 'model_fields' - class AbstractReferent(models.Model): reference = models.ForeignKey('Refered', on_delete=models.CASCADE) class Meta: + apps = test_apps app_label = 'model_fields' abstract = True - class ConcreteReferent(AbstractReferent): - class Meta: - apps = test_apps - app_label = 'tests' + def assert_app_model_resolved(label): + class Refered(models.Model): + class Meta: + apps = test_apps + app_label = label + + class ConcreteReferent(AbstractReferent): + class Meta: + apps = test_apps + app_label = label + + self.assertEqual(ConcreteReferent._meta.get_field('reference').related_model, Refered) - self.assertEqual(ConcreteReferent._meta.get_field('reference').related_model, Refered) + assert_app_model_resolved('model_fields') + assert_app_model_resolved('tests') class ManyToManyFieldTests(test.SimpleTestCase): @@ -295,33 +300,38 @@ class ManyToManyFieldTests(test.SimpleTestCase): def test_abstract_model_app_relative_foreign_key(self): test_apps = Apps(['model_fields', 'model_fields.tests']) - class Refered(models.Model): + class AbstractReferent(models.Model): + reference = models.ManyToManyField('Refered', through='Through') + class Meta: apps = test_apps app_label = 'model_fields' + abstract = True - class Through(models.Model): - refered = models.ForeignKey('Refered', on_delete=models.CASCADE) - referent = models.ForeignKey('tests.ConcreteReferent', on_delete=models.CASCADE) + def assert_app_model_resolved(label): + class Refered(models.Model): + class Meta: + apps = test_apps + app_label = label - class Meta: - apps = test_apps - app_label = 'model_fields' + class Through(models.Model): + refered = models.ForeignKey('Refered', on_delete=models.CASCADE) + referent = models.ForeignKey('ConcreteReferent', on_delete=models.CASCADE) - class AbstractReferent(models.Model): - reference = models.ManyToManyField('Refered', through='Through') + class Meta: + apps = test_apps + app_label = label - class Meta: - app_label = 'model_fields' - abstract = True + class ConcreteReferent(AbstractReferent): + class Meta: + apps = test_apps + app_label = label - class ConcreteReferent(AbstractReferent): - class Meta: - apps = test_apps - app_label = 'tests' + self.assertEqual(ConcreteReferent._meta.get_field('reference').related_model, Refered) + self.assertEqual(ConcreteReferent.reference.through, Through) - self.assertEqual(ConcreteReferent._meta.get_field('reference').related_model, Refered) - self.assertEqual(ConcreteReferent.reference.through, Through) + assert_app_model_resolved('model_fields') + assert_app_model_resolved('tests') class TextFieldTests(test.TestCase): |
