mirror of
				https://github.com/django/django.git
				synced 2025-11-03 21:25:09 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			84 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
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',
 | 
						|
            )
 | 
						|
        ])
 |