summaryrefslogtreecommitdiff
path: root/tests/invalid_models_tests
diff options
context:
space:
mode:
authorSimon Charette <charette.s@gmail.com>2015-11-09 16:50:40 -0500
committerSimon Charette <charette.s@gmail.com>2015-11-11 19:33:54 -0500
commitc550beb0ccc8855fde7ff50ada530f7ceff1a595 (patch)
treec351c81068243fe165348562e67e04a2e3ef5858 /tests/invalid_models_tests
parentc819780d3f46b6e4e67aa135c840f78dc24468e1 (diff)
Fixed #25723 -- Made related field checks lookup against their local apps.
Diffstat (limited to 'tests/invalid_models_tests')
-rw-r--r--tests/invalid_models_tests/test_relative_fields.py68
1 files changed, 68 insertions, 0 deletions
diff --git a/tests/invalid_models_tests/test_relative_fields.py b/tests/invalid_models_tests/test_relative_fields.py
index bfdd2b7d7a..3ec9af2cb0 100644
--- a/tests/invalid_models_tests/test_relative_fields.py
+++ b/tests/invalid_models_tests/test_relative_fields.py
@@ -3,6 +3,7 @@ from __future__ import unicode_literals
import warnings
+from django.apps.registry import Apps
from django.core.checks import Error, Warning as DjangoWarning
from django.db import models
from django.db.models.fields.related import ForeignObject
@@ -132,6 +133,26 @@ class RelativeFieldTests(IsolatedModelsTestCase):
]
self.assertEqual(errors, expected)
+ def test_foreign_key_to_isolated_apps_model(self):
+ """
+ #25723 - Referenced model registration lookup should be run against the
+ field's model registry.
+ """
+ test_apps = Apps(['invalid_models_tests'])
+
+ class OtherModel(models.Model):
+ class Meta:
+ apps = test_apps
+
+ class Model(models.Model):
+ foreign_key = models.ForeignKey('OtherModel', models.CASCADE)
+
+ class Meta:
+ apps = test_apps
+
+ field = Model._meta.get_field('foreign_key')
+ self.assertEqual(field.check(from_model=Model), [])
+
def test_many_to_many_to_missing_model(self):
class Model(models.Model):
m2m = models.ManyToManyField("Rel2")
@@ -149,6 +170,26 @@ class RelativeFieldTests(IsolatedModelsTestCase):
]
self.assertEqual(errors, expected)
+ def test_many_to_many_to_isolated_apps_model(self):
+ """
+ #25723 - Referenced model registration lookup should be run against the
+ field's model registry.
+ """
+ test_apps = Apps(['invalid_models_tests'])
+
+ class OtherModel(models.Model):
+ class Meta:
+ apps = test_apps
+
+ class Model(models.Model):
+ m2m = models.ManyToManyField('OtherModel')
+
+ class Meta:
+ apps = test_apps
+
+ field = Model._meta.get_field('m2m')
+ self.assertEqual(field.check(from_model=Model), [])
+
def test_many_to_many_with_useless_options(self):
class Model(models.Model):
name = models.CharField(max_length=20)
@@ -288,6 +329,33 @@ class RelativeFieldTests(IsolatedModelsTestCase):
]
self.assertEqual(errors, expected)
+ def test_many_to_many_through_isolated_apps_model(self):
+ """
+ #25723 - Through model registration lookup should be run against the
+ field's model registry.
+ """
+ test_apps = Apps(['invalid_models_tests'])
+
+ class GroupMember(models.Model):
+ person = models.ForeignKey('Person', models.CASCADE)
+ group = models.ForeignKey('Group', models.CASCADE)
+
+ class Meta:
+ apps = test_apps
+
+ class Person(models.Model):
+ class Meta:
+ apps = test_apps
+
+ class Group(models.Model):
+ members = models.ManyToManyField('Person', through='GroupMember')
+
+ class Meta:
+ apps = test_apps
+
+ field = Group._meta.get_field('members')
+ self.assertEqual(field.check(from_model=Group), [])
+
def test_symmetrical_self_referential_field(self):
class Person(models.Model):
# Implicit symmetrical=False.