31 lines
1.1 KiB
Python
31 lines
1.1 KiB
Python
|
from contextlib import contextmanager
|
||
|
|
||
|
from django.core.exceptions import FieldDoesNotExist, FieldError
|
||
|
from django.db.models.query_utils import InvalidQuery
|
||
|
from django.test import SimpleTestCase
|
||
|
from django.utils.deprecation import RemovedInDjango40Warning
|
||
|
|
||
|
|
||
|
class InvalidQueryTests(SimpleTestCase):
|
||
|
@contextmanager
|
||
|
def assert_warns(self):
|
||
|
msg = (
|
||
|
'The InvalidQuery exception class is deprecated. Use '
|
||
|
'FieldDoesNotExist or FieldError instead.'
|
||
|
)
|
||
|
with self.assertWarnsMessage(RemovedInDjango40Warning, msg):
|
||
|
yield
|
||
|
|
||
|
def test_type(self):
|
||
|
self.assertIsInstance(InvalidQuery(), InvalidQuery)
|
||
|
|
||
|
def test_isinstance(self):
|
||
|
for exception in (FieldError, FieldDoesNotExist):
|
||
|
with self.assert_warns(), self.subTest(exception.__name__):
|
||
|
self.assertIsInstance(exception(), InvalidQuery)
|
||
|
|
||
|
def test_issubclass(self):
|
||
|
for exception in (FieldError, FieldDoesNotExist, InvalidQuery):
|
||
|
with self.assert_warns(), self.subTest(exception.__name__):
|
||
|
self.assertIs(issubclass(exception, InvalidQuery), True)
|