test_deprecation.py 1.1 KB

123456789101112131415161718192021222324252627282930
  1. from contextlib import contextmanager
  2. from django.core.exceptions import FieldDoesNotExist, FieldError
  3. from django.db.models.query_utils import InvalidQuery
  4. from django.test import SimpleTestCase
  5. from django.utils.deprecation import RemovedInDjango40Warning
  6. class InvalidQueryTests(SimpleTestCase):
  7. @contextmanager
  8. def assert_warns(self):
  9. msg = (
  10. 'The InvalidQuery exception class is deprecated. Use '
  11. 'FieldDoesNotExist or FieldError instead.'
  12. )
  13. with self.assertWarnsMessage(RemovedInDjango40Warning, msg):
  14. yield
  15. def test_type(self):
  16. self.assertIsInstance(InvalidQuery(), InvalidQuery)
  17. def test_isinstance(self):
  18. for exception in (FieldError, FieldDoesNotExist):
  19. with self.assert_warns(), self.subTest(exception.__name__):
  20. self.assertIsInstance(exception(), InvalidQuery)
  21. def test_issubclass(self):
  22. for exception in (FieldError, FieldDoesNotExist, InvalidQuery):
  23. with self.assert_warns(), self.subTest(exception.__name__):
  24. self.assertIs(issubclass(exception, InvalidQuery), True)