summaryrefslogtreecommitdiff
path: root/tests/queries
diff options
context:
space:
mode:
authorSimon Charette <charette.s@gmail.com>2019-11-15 16:20:07 -0500
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2019-11-18 14:06:51 +0100
commit11e327a3ff84e16ceace13ea6ec408a93ca9e72c (patch)
tree438e482ac75e6ae404920493a628eb00e7519e59 /tests/queries
parentcbe4d6203ff2d702b63dae52adbe7a50830a5cbe (diff)
Fixed #30988 -- Deprecated the InvalidQuery exception.
It was barely documented without pointers at its defining location and was abused to prevent misuse of the QuerySet field deferring feature.
Diffstat (limited to 'tests/queries')
-rw-r--r--tests/queries/test_deprecation.py30
1 files changed, 30 insertions, 0 deletions
diff --git a/tests/queries/test_deprecation.py b/tests/queries/test_deprecation.py
new file mode 100644
index 0000000000..1dc8031fa7
--- /dev/null
+++ b/tests/queries/test_deprecation.py
@@ -0,0 +1,30 @@
+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)