summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorRussell Keith-Magee <russell@keith-magee.com>2011-02-19 08:38:53 +0000
committerRussell Keith-Magee <russell@keith-magee.com>2011-02-19 08:38:53 +0000
commitc9949103df95b34209e5187b27e92e5f9fd0aa32 (patch)
treeccbc2253f54c42748cdea73b4bbb098fdf3ae2da /tests
parentefc4c62691134bdea50195b7b60f41c5639de738 (diff)
[1.2.X] Fixed #12893 -- Added tests to validate that the right queryset is always used in model admins. Thanks to mk and Julien Phalip for their work on the patch.
Backport of r15578 from trunk. git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.2.X@15579 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'tests')
-rw-r--r--tests/regressiontests/admin_changelist/tests.py38
1 files changed, 38 insertions, 0 deletions
diff --git a/tests/regressiontests/admin_changelist/tests.py b/tests/regressiontests/admin_changelist/tests.py
index d579e57aff..9bb3aedb3d 100644
--- a/tests/regressiontests/admin_changelist/tests.py
+++ b/tests/regressiontests/admin_changelist/tests.py
@@ -113,11 +113,49 @@ class ChangeListTests(TransactionTestCase):
m.list_filter, m.date_hierarchy, m.search_fields,
m.list_select_related, m.list_per_page, m.list_editable, m))
+ def test_pagination(self):
+ """
+ Regression tests for #12893: Pagination in admins changelist doesn't
+ use queryset set by modeladmin.
+ """
+ parent = Parent.objects.create(name='anything')
+ for i in range(30):
+ Child.objects.create(name='name %s' % i, parent=parent)
+ Child.objects.create(name='filtered %s' % i, parent=parent)
+
+ request = MockRequest()
+
+ # Test default queryset
+ m = ChildAdmin(Child, admin.site)
+ cl = ChangeList(request, Child, m.list_display, m.list_display_links,
+ m.list_filter, m.date_hierarchy, m.search_fields,
+ m.list_select_related, m.list_per_page, m.list_editable, m)
+ self.assertEqual(cl.query_set.count(), 60)
+ self.assertEqual(cl.paginator.count, 60)
+ self.assertEqual(cl.paginator.page_range, [1, 2, 3, 4, 5, 6])
+
+ # Test custom queryset
+ m = FilteredChildAdmin(Child, admin.site)
+ cl = ChangeList(request, Child, m.list_display, m.list_display_links,
+ m.list_filter, m.date_hierarchy, m.search_fields,
+ m.list_select_related, m.list_per_page, m.list_editable, m)
+ self.assertEqual(cl.query_set.count(), 30)
+ self.assertEqual(cl.paginator.count, 30)
+ self.assertEqual(cl.paginator.page_range, [1, 2, 3])
+
class ChildAdmin(admin.ModelAdmin):
list_display = ['name', 'parent']
+ list_per_page = 10
def queryset(self, request):
return super(ChildAdmin, self).queryset(request).select_related("parent__name")
+class FilteredChildAdmin(admin.ModelAdmin):
+ list_display = ['name', 'parent']
+ list_per_page = 10
+ def queryset(self, request):
+ return super(FilteredChildAdmin, self).queryset(request).filter(
+ name__contains='filtered')
+
class MockRequest(object):
GET = {}