mirror of
https://github.com/django/django.git
synced 2024-12-26 02:56:25 +00:00
d818e0c9b2
This is the result of Christopher Medrela's 2013 Summer of Code project. Thanks also to Preston Holmes, Tim Graham, Anssi Kääriäinen, Florian Apolloner, and Alex Gaynor for review notes along the way. Also: Fixes #8579, fixes #3055, fixes #19844.
54 lines
1.8 KiB
Python
54 lines
1.8 KiB
Python
from django.core import management
|
|
from django.core.checks import run_checks, Error
|
|
from django.db.models.signals import post_init
|
|
from django.test import TestCase
|
|
from django.utils import six
|
|
|
|
|
|
class OnPostInit(object):
|
|
def __call__(self, **kwargs):
|
|
pass
|
|
|
|
|
|
def on_post_init(**kwargs):
|
|
pass
|
|
|
|
|
|
class ModelValidationTest(TestCase):
|
|
def test_models_validate(self):
|
|
# All our models should validate properly
|
|
# Validation Tests:
|
|
# * choices= Iterable of Iterables
|
|
# See: https://code.djangoproject.com/ticket/20430
|
|
# * related_name='+' doesn't clash with another '+'
|
|
# See: https://code.djangoproject.com/ticket/21375
|
|
management.call_command("check", stdout=six.StringIO())
|
|
|
|
def test_model_signal(self):
|
|
unresolved_references = post_init.unresolved_references.copy()
|
|
post_init.connect(on_post_init, sender='missing-app.Model')
|
|
post_init.connect(OnPostInit(), sender='missing-app.Model')
|
|
|
|
errors = run_checks()
|
|
expected = [
|
|
Error(
|
|
"The `on_post_init` function was connected to the `post_init` "
|
|
"signal with a lazy reference to the 'missing-app.Model' "
|
|
"sender, which has not been installed.",
|
|
hint=None,
|
|
obj='model_validation.tests',
|
|
id='E014',
|
|
),
|
|
Error(
|
|
"An instance of the `OnPostInit` class was connected to "
|
|
"the `post_init` signal with a lazy reference to the "
|
|
"'missing-app.Model' sender, which has not been installed.",
|
|
hint=None,
|
|
obj='model_validation.tests',
|
|
id='E014',
|
|
)
|
|
]
|
|
self.assertEqual(errors, expected)
|
|
|
|
post_init.unresolved_references = unresolved_references
|