Ticket #12893: 12893_modeladmin_pagination_tests.diff

File 12893_modeladmin_pagination_tests.diff, 2.3 KB (added by Julien Phalip, 14 years ago)
  • tests/regressiontests/admin_changelist/tests.py

    diff --git a/tests/regressiontests/admin_changelist/tests.py b/tests/regressiontests/admin_changelist/tests.py
    index 87ffd67..de74a15 100644
    a b class ChangeListTests(TransactionTestCase):  
    223223        # There's only one ChordsBand instance
    224224        self.assertEqual(cl.result_count, 1)
    225225
     226    def test_pagination(self):
     227        """
     228        Regression tests for #12893: Pagination in admins changelist doesn't
     229        use queryset set by modeladmin.
     230        """
     231        parent = Parent.objects.create(name='anything')
     232        for i in range(30):
     233            Child.objects.create(name='name %s' % i, parent=parent)
     234            Child.objects.create(name='filtered %s' % i, parent=parent)
     235
     236        request = MockRequest()
     237       
     238        # Test default queryset
     239        m = ChildAdmin(Child, admin.site)
     240        cl = ChangeList(request, Child, m.list_display, m.list_display_links,
     241                m.list_filter, m.date_hierarchy, m.search_fields,
     242                m.list_select_related, m.list_per_page, m.list_editable, m)
     243        self.assertEqual(cl.query_set.count(), 60)
     244        self.assertEqual(cl.paginator.count, 60)
     245        self.assertEqual(cl.paginator.page_range, [1, 2, 3, 4, 5, 6])
     246       
     247        # Test custom queryset
     248        m = FilteredChildAdmin(Child, admin.site)
     249        cl = ChangeList(request, Child, m.list_display, m.list_display_links,
     250                m.list_filter, m.date_hierarchy, m.search_fields,
     251                m.list_select_related, m.list_per_page, m.list_editable, m)
     252        self.assertEqual(cl.query_set.count(), 30)
     253        self.assertEqual(cl.paginator.count, 30)
     254        self.assertEqual(cl.paginator.page_range, [1, 2, 3])
     255
    226256
    227257class ChildAdmin(admin.ModelAdmin):
    228258    list_display = ['name', 'parent']
     259    list_per_page = 10
    229260    def queryset(self, request):
    230261        return super(ChildAdmin, self).queryset(request).select_related("parent__name")
    231262
     263class FilteredChildAdmin(admin.ModelAdmin):
     264    list_display = ['name', 'parent']
     265    list_per_page = 10
     266    def queryset(self, request):
     267        return super(FilteredChildAdmin, self).queryset(request).filter(
     268            name__contains='filtered')
     269
    232270class MockRequest(object):
    233271    GET = {}
    234272
Back to Top