test_json_deprecation.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. try:
  2. from django.contrib.postgres.fields import JSONField
  3. from django.contrib.postgres.fields.jsonb import KeyTransform, KeyTextTransform
  4. from django.contrib.postgres import forms
  5. except ImportError:
  6. pass
  7. from django.core.checks import Warning as DjangoWarning
  8. from django.utils.deprecation import RemovedInDjango40Warning
  9. from . import PostgreSQLSimpleTestCase
  10. from .models import PostgreSQLModel
  11. class DeprecationTests(PostgreSQLSimpleTestCase):
  12. def test_model_field_deprecation_message(self):
  13. class PostgreSQLJSONModel(PostgreSQLModel):
  14. field = JSONField()
  15. self.assertEqual(PostgreSQLJSONModel().check(), [
  16. DjangoWarning(
  17. 'django.contrib.postgres.fields.JSONField is deprecated. '
  18. 'Support for it (except in historical migrations) will be '
  19. 'removed in Django 4.0.',
  20. hint='Use django.db.models.JSONField instead.',
  21. obj=PostgreSQLJSONModel._meta.get_field('field'),
  22. id='fields.W904',
  23. ),
  24. ])
  25. def test_form_field_deprecation_message(self):
  26. msg = (
  27. 'django.contrib.postgres.forms.JSONField is deprecated in favor '
  28. 'of django.forms.JSONField.'
  29. )
  30. with self.assertWarnsMessage(RemovedInDjango40Warning, msg):
  31. forms.JSONField()
  32. def test_key_transform_deprecation_message(self):
  33. msg = (
  34. 'django.contrib.postgres.fields.jsonb.KeyTransform is deprecated '
  35. 'in favor of django.db.models.fields.json.KeyTransform.'
  36. )
  37. with self.assertWarnsMessage(RemovedInDjango40Warning, msg):
  38. KeyTransform('foo', 'bar')
  39. def test_key_text_transform_deprecation_message(self):
  40. msg = (
  41. 'django.contrib.postgres.fields.jsonb.KeyTextTransform is '
  42. 'deprecated in favor of '
  43. 'django.db.models.fields.json.KeyTextTransform.'
  44. )
  45. with self.assertWarnsMessage(RemovedInDjango40Warning, msg):
  46. KeyTextTransform('foo', 'bar')