summaryrefslogtreecommitdiff
path: root/tests/ordering
diff options
context:
space:
mode:
authorMariusz Felisiak <felisiak.mariusz@gmail.com>2019-05-21 18:29:08 +0200
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2019-05-31 07:38:48 +0200
commitcc80979f011c72f8b4b5f35a5a36f049bc07bf0e (patch)
tree6d431bbf26480e52c999a428c4f6d23affd72dfc /tests/ordering
parente2de49ec2ea5827b36d0d4ec4f90b4ee0a003e93 (diff)
Refs #26192 -- Added tests for ordering by constant value.
Diffstat (limited to 'tests/ordering')
-rw-r--r--tests/ordering/tests.py17
1 files changed, 16 insertions, 1 deletions
diff --git a/tests/ordering/tests.py b/tests/ordering/tests.py
index 1466d350a1..e5f56917d4 100644
--- a/tests/ordering/tests.py
+++ b/tests/ordering/tests.py
@@ -1,7 +1,10 @@
from datetime import datetime
from operator import attrgetter
-from django.db.models import Count, DateTimeField, F, Max, OuterRef, Subquery
+from django.core.exceptions import FieldError
+from django.db.models import (
+ CharField, Count, DateTimeField, F, Max, OuterRef, Subquery, Value,
+)
from django.db.models.functions import Upper
from django.test import TestCase
from django.utils.deprecation import RemovedInDjango31Warning
@@ -402,6 +405,18 @@ class OrderingTests(TestCase):
attrgetter("headline")
)
+ def test_order_by_annotated_constant_value(self):
+ qs = Article.objects.annotate(
+ constant=Value('1', output_field=CharField()),
+ ).order_by('constant', '-headline')
+ self.assertSequenceEqual(qs, [self.a4, self.a3, self.a2, self.a1])
+
+ def test_order_by_constant_value_without_output_field(self):
+ msg = 'Cannot resolve expression type, unknown output_field'
+ qs = Article.objects.annotate(constant=Value('1')).order_by('constant')
+ with self.assertRaisesMessage(FieldError, msg):
+ qs.first()
+
def test_related_ordering_duplicate_table_reference(self):
"""
An ordering referencing a model with an ordering referencing a model