summaryrefslogtreecommitdiff
path: root/tests/admin_filters
diff options
context:
space:
mode:
Diffstat (limited to 'tests/admin_filters')
-rw-r--r--tests/admin_filters/tests.py37
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)