diff options
author | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2019-05-23 20:33:37 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-05-23 20:33:37 +0200 |
commit | f8b8b00f0197e52f7a0986fae51462be174dbaea (patch) | |
tree | 040131f2b13fad6efcd5af45506685eda21b7c81 /tests/ordering | |
parent | 2007e11d7069b0f6ed673c7520ee7f480f07de68 (diff) | |
download | django-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.py | 38 |
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): |