1. from django.core import checks
    
  2. from django.db import models
    
  3. from django.test import SimpleTestCase
    
  4. from django.test.utils import isolate_apps
    
  5. 
    
  6. 
    
  7. @isolate_apps("check_framework")
    
  8. class TestDeprecatedField(SimpleTestCase):
    
  9.     def test_default_details(self):
    
  10.         class MyField(models.Field):
    
  11.             system_check_deprecated_details = {}
    
  12. 
    
  13.         class Model(models.Model):
    
  14.             name = MyField()
    
  15. 
    
  16.         model = Model()
    
  17.         self.assertEqual(
    
  18.             model.check(),
    
  19.             [
    
  20.                 checks.Warning(
    
  21.                     msg="MyField has been deprecated.",
    
  22.                     obj=Model._meta.get_field("name"),
    
  23.                     id="fields.WXXX",
    
  24.                 )
    
  25.             ],
    
  26.         )
    
  27. 
    
  28.     def test_user_specified_details(self):
    
  29.         class MyField(models.Field):
    
  30.             system_check_deprecated_details = {
    
  31.                 "msg": "This field is deprecated and will be removed soon.",
    
  32.                 "hint": "Use something else.",
    
  33.                 "id": "fields.W999",
    
  34.             }
    
  35. 
    
  36.         class Model(models.Model):
    
  37.             name = MyField()
    
  38. 
    
  39.         model = Model()
    
  40.         self.assertEqual(
    
  41.             model.check(),
    
  42.             [
    
  43.                 checks.Warning(
    
  44.                     msg="This field is deprecated and will be removed soon.",
    
  45.                     hint="Use something else.",
    
  46.                     obj=Model._meta.get_field("name"),
    
  47.                     id="fields.W999",
    
  48.                 )
    
  49.             ],
    
  50.         )
    
  51. 
    
  52. 
    
  53. @isolate_apps("check_framework")
    
  54. class TestRemovedField(SimpleTestCase):
    
  55.     def test_default_details(self):
    
  56.         class MyField(models.Field):
    
  57.             system_check_removed_details = {}
    
  58. 
    
  59.         class Model(models.Model):
    
  60.             name = MyField()
    
  61. 
    
  62.         model = Model()
    
  63.         self.assertEqual(
    
  64.             model.check(),
    
  65.             [
    
  66.                 checks.Error(
    
  67.                     msg=(
    
  68.                         "MyField has been removed except for support in historical "
    
  69.                         "migrations."
    
  70.                     ),
    
  71.                     obj=Model._meta.get_field("name"),
    
  72.                     id="fields.EXXX",
    
  73.                 )
    
  74.             ],
    
  75.         )
    
  76. 
    
  77.     def test_user_specified_details(self):
    
  78.         class MyField(models.Field):
    
  79.             system_check_removed_details = {
    
  80.                 "msg": "Support for this field is gone.",
    
  81.                 "hint": "Use something else.",
    
  82.                 "id": "fields.E999",
    
  83.             }
    
  84. 
    
  85.         class Model(models.Model):
    
  86.             name = MyField()
    
  87. 
    
  88.         model = Model()
    
  89.         self.assertEqual(
    
  90.             model.check(),
    
  91.             [
    
  92.                 checks.Error(
    
  93.                     msg="Support for this field is gone.",
    
  94.                     hint="Use something else.",
    
  95.                     obj=Model._meta.get_field("name"),
    
  96.                     id="fields.E999",
    
  97.                 )
    
  98.             ],
    
  99.         )