django/tests/check_framework/test_model_field_deprecatio...

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

100 lines
2.8 KiB
Python
Raw Normal View History

from django.core import checks
from django.db import models
from django.test import SimpleTestCase
from django.test.utils import isolate_apps
@isolate_apps("check_framework")
class TestDeprecatedField(SimpleTestCase):
def test_default_details(self):
class MyField(models.Field):
system_check_deprecated_details = {}
class Model(models.Model):
name = MyField()
model = Model()
self.assertEqual(
model.check(),
[
checks.Warning(
msg="MyField has been deprecated.",
obj=Model._meta.get_field("name"),
id="fields.WXXX",
)
],
)
def test_user_specified_details(self):
class MyField(models.Field):
system_check_deprecated_details = {
"msg": "This field is deprecated and will be removed soon.",
"hint": "Use something else.",
"id": "fields.W999",
}
class Model(models.Model):
name = MyField()
model = Model()
self.assertEqual(
model.check(),
[
checks.Warning(
msg="This field is deprecated and will be removed soon.",
hint="Use something else.",
obj=Model._meta.get_field("name"),
id="fields.W999",
)
],
)
@isolate_apps("check_framework")
class TestRemovedField(SimpleTestCase):
def test_default_details(self):
class MyField(models.Field):
system_check_removed_details = {}
class Model(models.Model):
name = MyField()
model = Model()
self.assertEqual(
model.check(),
[
checks.Error(
msg=(
"MyField has been removed except for support in historical "
"migrations."
),
obj=Model._meta.get_field("name"),
id="fields.EXXX",
)
],
)
def test_user_specified_details(self):
class MyField(models.Field):
system_check_removed_details = {
"msg": "Support for this field is gone.",
"hint": "Use something else.",
"id": "fields.E999",
}
class Model(models.Model):
name = MyField()
model = Model()
self.assertEqual(
model.check(),
[
checks.Error(
msg="Support for this field is gone.",
hint="Use something else.",
obj=Model._meta.get_field("name"),
id="fields.E999",
)
],
)