summaryrefslogtreecommitdiff
path: root/tests/annotations
diff options
context:
space:
mode:
authorMariusz Felisiak <felisiak.mariusz@gmail.com>2017-06-29 18:25:36 +0200
committerGitHub <noreply@github.com>2017-06-29 18:25:36 +0200
commit6e228d0b659c9779da7d392a75c7d2fbb42fb3cb (patch)
tree5b3b59b7ec5f9e4f89fabf4e8a2ce7d4a294f4e3 /tests/annotations
parentf7f5edd50d03e8482f8a6da5fb5202b895d68cd6 (diff)
downloaddjango-6e228d0b659c9779da7d392a75c7d2fbb42fb3cb.tar.gz
Fixed #28277 -- Added validation of QuerySet.annotate() and aggregate() args.
Thanks Tim Graham and Nick Pope for reviews.
Diffstat (limited to 'tests/annotations')
-rw-r--r--tests/annotations/tests.py9
1 files changed, 9 insertions, 0 deletions
diff --git a/tests/annotations/tests.py b/tests/annotations/tests.py
index 981e73e43e..1714076e1d 100644
--- a/tests/annotations/tests.py
+++ b/tests/annotations/tests.py
@@ -508,3 +508,12 @@ class NonAggregateAnnotationTestCase(TestCase):
self.assertIs(book.is_book, True)
self.assertIs(book.is_pony, False)
self.assertIsNone(book.is_none)
+
+ def test_arguments_must_be_expressions(self):
+ msg = 'QuerySet.annotate() received non-expression(s): %s.'
+ with self.assertRaisesMessage(TypeError, msg % BooleanField()):
+ Book.objects.annotate(BooleanField())
+ with self.assertRaisesMessage(TypeError, msg % True):
+ Book.objects.annotate(is_book=True)
+ with self.assertRaisesMessage(TypeError, msg % ', '.join([str(BooleanField()), 'True'])):
+ Book.objects.annotate(BooleanField(), Value(False), is_book=True)