diff options
Diffstat (limited to 'tests/admin_filters')
| -rw-r--r-- | tests/admin_filters/tests.py | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/tests/admin_filters/tests.py b/tests/admin_filters/tests.py index 2e16909dc3..f901d32532 100644 --- a/tests/admin_filters/tests.py +++ b/tests/admin_filters/tests.py @@ -548,6 +548,43 @@ class ListFiltersTests(TestCase): self.assertIs(choice['selected'], True) self.assertEqual(choice['query_string'], '?author__id__exact=%d' % self.alfred.pk) + def test_relatedfieldlistfilter_foreignkey_ordering(self): + """RelatedFieldListFilter ordering respects ModelAdmin.ordering.""" + class EmployeeAdminWithOrdering(ModelAdmin): + ordering = ('name',) + + class BookAdmin(ModelAdmin): + list_filter = ('employee',) + + site.register(Employee, EmployeeAdminWithOrdering) + self.addCleanup(lambda: site.unregister(Employee)) + 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_foreignkey_ordering_reverse(self): + class EmployeeAdminWithOrdering(ModelAdmin): + ordering = ('-name',) + + class BookAdmin(ModelAdmin): + list_filter = ('employee',) + + site.register(Employee, EmployeeAdminWithOrdering) + self.addCleanup(lambda: site.unregister(Employee)) + 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.john.pk, 'John Blue'), (self.jack.pk, 'Jack Red')] + self.assertEqual(filterspec.lookup_choices, expected) + def test_relatedfieldlistfilter_manytomany(self): modeladmin = BookAdmin(Book, site) |
