summaryrefslogtreecommitdiff
path: root/tests/ordering
diff options
context:
space:
mode:
authorMariusz Felisiak <felisiak.mariusz@gmail.com>2019-05-23 20:33:37 +0200
committerGitHub <noreply@github.com>2019-05-23 20:33:37 +0200
commitf8b8b00f0197e52f7a0986fae51462be174dbaea (patch)
tree040131f2b13fad6efcd5af45506685eda21b7c81 /tests/ordering
parent2007e11d7069b0f6ed673c7520ee7f480f07de68 (diff)
downloaddjango-f8b8b00f0197e52f7a0986fae51462be174dbaea.tar.gz
Fixed #30501 -- Preventing QuerySet.reverse() from mutating expressions in QuerySet.order_by and Meta.ordering.
Diffstat (limited to 'tests/ordering')
-rw-r--r--tests/ordering/tests.py38
1 files changed, 31 insertions, 7 deletions
diff --git a/tests/ordering/tests.py b/tests/ordering/tests.py
index f0c4bba999..1466d350a1 100644
--- a/tests/ordering/tests.py
+++ b/tests/ordering/tests.py
@@ -211,6 +211,15 @@ class OrderingTests(TestCase):
qs1 = Article.objects.order_by(F('headline').asc())
qs2 = qs1.reverse()
self.assertQuerysetEqual(
+ qs2, [
+ 'Article 4',
+ 'Article 3',
+ 'Article 2',
+ 'Article 1',
+ ],
+ attrgetter('headline'),
+ )
+ self.assertQuerysetEqual(
qs1, [
"Article 1",
"Article 2",
@@ -219,14 +228,29 @@ class OrderingTests(TestCase):
],
attrgetter("headline")
)
+
+ def test_reverse_meta_ordering_pure(self):
+ Article.objects.create(
+ headline='Article 5',
+ pub_date=datetime(2005, 7, 30),
+ author=self.author_1,
+ second_author=self.author_2,
+ )
+ Article.objects.create(
+ headline='Article 5',
+ pub_date=datetime(2005, 7, 30),
+ author=self.author_2,
+ second_author=self.author_1,
+ )
self.assertQuerysetEqual(
- qs2, [
- "Article 4",
- "Article 3",
- "Article 2",
- "Article 1",
- ],
- attrgetter("headline")
+ Article.objects.filter(headline='Article 5').reverse(),
+ ['Name 2', 'Name 1'],
+ attrgetter('author.name'),
+ )
+ self.assertQuerysetEqual(
+ Article.objects.filter(headline='Article 5'),
+ ['Name 1', 'Name 2'],
+ attrgetter('author.name'),
)
def test_no_reordering_after_slicing(self):