diff options
| author | Tim Graham <timograham@gmail.com> | 2015-01-01 10:31:36 -0500 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2015-01-05 11:35:36 -0500 |
| commit | c87ee41954737869e6026d6fb12394ec4f79d50a (patch) | |
| tree | b2bdc81b03455fd190f02fa3b48dc79b115af5b2 /tests/check_framework | |
| parent | 6e1c9c6568c405bfa481dda4249abe2960173547 (diff) | |
Fixed #23861 -- Added an API to deprecate model fields.
Thanks Markus Holterman and Berker Peksag for review.
Diffstat (limited to 'tests/check_framework')
| -rw-r--r-- | tests/check_framework/test_model_field_deprecation.py | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/tests/check_framework/test_model_field_deprecation.py b/tests/check_framework/test_model_field_deprecation.py new file mode 100644 index 0000000000..1bb8344749 --- /dev/null +++ b/tests/check_framework/test_model_field_deprecation.py @@ -0,0 +1,83 @@ +from django.db import models +from django.core import checks +from django.test import SimpleTestCase + + +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.', + 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(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', + ) + ]) |
