From f8b8b00f0197e52f7a0986fae51462be174dbaea Mon Sep 17 00:00:00 2001 From: Mariusz Felisiak Date: Thu, 23 May 2019 20:33:37 +0200 Subject: Fixed #30501 -- Preventing QuerySet.reverse() from mutating expressions in QuerySet.order_by and Meta.ordering. --- tests/ordering/tests.py | 38 +++++++++++++++++++++++++++++++------- 1 file changed, 31 insertions(+), 7 deletions(-) (limited to 'tests/ordering') 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 @@ -210,6 +210,15 @@ class OrderingTests(TestCase): def test_reverse_ordering_pure(self): 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", @@ -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): -- cgit v1.3