diff options
author | zeyneloz <ozdemir.zynl@gmail.com> | 2019-08-15 06:54:41 +0200 |
---|---|---|
committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2019-08-15 10:29:05 +0200 |
commit | 00035672a460b6eb5442d2837bc783f8af28c6f3 (patch) | |
tree | 1f1bb1e72e9c61669f19fbb2ae7b4fed7a62b894 /tests/admin_filters | |
parent | 1f8382d34d54061eddc41df6994e20ee38c60907 (diff) | |
download | django-00035672a460b6eb5442d2837bc783f8af28c6f3.tar.gz |
Fixed #30449 -- Fixed RelatedFieldListFilter/RelatedOnlyFieldListFilter to respect model's Meta.ordering.
Regression in 6d4e5feb79f7eabe8a0c7c4b87f25b1a7f87ca0b.
Co-Authored-By: Mariusz Felisiak <felisiak.mariusz@gmail.com>
Diffstat (limited to 'tests/admin_filters')
-rw-r--r-- | tests/admin_filters/tests.py | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/tests/admin_filters/tests.py b/tests/admin_filters/tests.py index 4ff7d012e5..75563bbaaf 100644 --- a/tests/admin_filters/tests.py +++ b/tests/admin_filters/tests.py @@ -591,6 +591,22 @@ class ListFiltersTests(TestCase): expected = [(self.john.pk, 'John Blue'), (self.jack.pk, 'Jack Red')] self.assertEqual(filterspec.lookup_choices, expected) + def test_relatedfieldlistfilter_foreignkey_default_ordering(self): + """RelatedFieldListFilter ordering respects Model.ordering.""" + class BookAdmin(ModelAdmin): + list_filter = ('employee',) + + self.addCleanup(setattr, Employee._meta, 'ordering', Employee._meta.ordering) + Employee._meta.ordering = ('name',) + modeladmin = BookAdmin(Book, site) + + request = self.request_factory.get('/') + request.user = self.alfred + changelist = modeladmin.get_changelist_instance(request) + filterspec = changelist.get_filters(request)[0][0] + expected = [(self.jack.pk, 'Jack Red'), (self.john.pk, 'John Blue')] + self.assertEqual(filterspec.lookup_choices, expected) + def test_relatedfieldlistfilter_manytomany(self): modeladmin = BookAdmin(Book, site) @@ -696,6 +712,23 @@ class ListFiltersTests(TestCase): filterspec = changelist.get_filters(request)[0] self.assertEqual(len(filterspec), 0) + def test_relatedfieldlistfilter_reverse_relationships_default_ordering(self): + self.addCleanup(setattr, Book._meta, 'ordering', Book._meta.ordering) + Book._meta.ordering = ('title',) + modeladmin = CustomUserAdmin(User, site) + + request = self.request_factory.get('/') + request.user = self.alfred + changelist = modeladmin.get_changelist_instance(request) + filterspec = changelist.get_filters(request)[0][0] + expected = [ + (self.bio_book.pk, 'Django: a biography'), + (self.djangonaut_book.pk, 'Djangonaut: an art of living'), + (self.guitar_book.pk, 'Guitar for dummies'), + (self.django_book.pk, 'The Django Book') + ] + self.assertEqual(filterspec.lookup_choices, expected) + def test_relatedonlyfieldlistfilter_foreignkey(self): modeladmin = BookAdminRelatedOnlyFilter(Book, site) @@ -708,6 +741,30 @@ class ListFiltersTests(TestCase): expected = [(self.alfred.pk, 'alfred'), (self.bob.pk, 'bob')] self.assertEqual(sorted(filterspec.lookup_choices), sorted(expected)) + def test_relatedonlyfieldlistfilter_foreignkey_default_ordering(self): + """RelatedOnlyFieldListFilter ordering respects Meta.ordering.""" + class BookAdmin(ModelAdmin): + list_filter = ( + ('employee', RelatedOnlyFieldListFilter), + ) + + albert = Employee.objects.create(name='Albert Green', department=self.dev) + self.djangonaut_book.employee = albert + self.djangonaut_book.save() + self.bio_book.employee = self.jack + self.bio_book.save() + + self.addCleanup(setattr, Employee._meta, 'ordering', Employee._meta.ordering) + Employee._meta.ordering = ('name',) + modeladmin = BookAdmin(Book, site) + + request = self.request_factory.get('/') + request.user = self.alfred + changelist = modeladmin.get_changelist_instance(request) + filterspec = changelist.get_filters(request)[0][0] + expected = [(albert.pk, 'Albert Green'), (self.jack.pk, 'Jack Red')] + self.assertEqual(filterspec.lookup_choices, expected) + def test_relatedonlyfieldlistfilter_underscorelookup_foreignkey(self): Department.objects.create(code='TEST', description='Testing') self.djangonaut_book.employee = self.john |