summaryrefslogtreecommitdiff
path: root/tests/ordering/tests.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ordering/tests.py')
-rw-r--r--tests/ordering/tests.py38
1 files changed, 37 insertions, 1 deletions
diff --git a/tests/ordering/tests.py b/tests/ordering/tests.py
index 37106aa5dd..e4f7d75992 100644
--- a/tests/ordering/tests.py
+++ b/tests/ordering/tests.py
@@ -14,7 +14,16 @@ from django.db.models import (
from django.db.models.functions import Upper
from django.test import TestCase
-from .models import Article, Author, ChildArticle, OrderedByFArticle, Reference
+from .models import (
+ Article,
+ Author,
+ ChildArticle,
+ OrderedByExpression,
+ OrderedByExpressionChild,
+ OrderedByExpressionGrandChild,
+ OrderedByFArticle,
+ Reference,
+)
class OrderingTests(TestCase):
@@ -550,3 +559,30 @@ class OrderingTests(TestCase):
{"author": self.author_2.pk, "count": 1},
],
)
+
+ def test_order_by_parent_fk_with_expression_in_default_ordering(self):
+ p3 = OrderedByExpression.objects.create(name="oBJ 3")
+ p2 = OrderedByExpression.objects.create(name="OBJ 2")
+ p1 = OrderedByExpression.objects.create(name="obj 1")
+ c3 = OrderedByExpressionChild.objects.create(parent=p3)
+ c2 = OrderedByExpressionChild.objects.create(parent=p2)
+ c1 = OrderedByExpressionChild.objects.create(parent=p1)
+ self.assertSequenceEqual(
+ OrderedByExpressionChild.objects.order_by("parent"),
+ [c1, c2, c3],
+ )
+
+ def test_order_by_grandparent_fk_with_expression_in_default_ordering(self):
+ p3 = OrderedByExpression.objects.create(name="oBJ 3")
+ p2 = OrderedByExpression.objects.create(name="OBJ 2")
+ p1 = OrderedByExpression.objects.create(name="obj 1")
+ c3 = OrderedByExpressionChild.objects.create(parent=p3)
+ c2 = OrderedByExpressionChild.objects.create(parent=p2)
+ c1 = OrderedByExpressionChild.objects.create(parent=p1)
+ g3 = OrderedByExpressionGrandChild.objects.create(parent=c3)
+ g2 = OrderedByExpressionGrandChild.objects.create(parent=c2)
+ g1 = OrderedByExpressionGrandChild.objects.create(parent=c1)
+ self.assertSequenceEqual(
+ OrderedByExpressionGrandChild.objects.order_by("parent"),
+ [g1, g2, g3],
+ )