text: from django.core import checks
  from django.db import models
  from django.test import SimpleTestCase
  
  from .tests import IsolateModelsMixin
  
  
  class TestDeprecatedField(IsolateModelsMixin, 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.',
                  hint=None,
                  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',
              )
          ])
  
  
  class TestRemovedField(IsolateModelsMixin, 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.',
                  hint=None,
                  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',
              )
          ])
  