:mod:`~webhelpers.paginate` -- Paging and pagination
====================================================
:mod:`webhelpers.paginate`
--------------------------
.. currentmodule:: webhelpers.paginate
.. autofunction:: get_wrapper
.. autoclass:: Page
:members:
Temporary understudy for examples:
----------------------------------
The unit tests are often educational ...
.. code-block:: python
""""Test webhelpers.paginate package."""
from routes import Mapper
from webhelpers.paginate import Page
def test_empty_list():
"""Test whether an empty list is handled correctly."""
items = []
page = Page(items, page=0)
assert page.page == 0
assert page.first_item is None
assert page.last_item is None
assert page.first_page is None
assert page.last_page is None
assert page.previous_page is None
assert page.next_page is None
assert page.items_per_page == 20
assert page.item_count == 0
assert page.page_count == 0
assert page.pager() == ''
assert page.pager(show_if_single_page=True) == ''
def test_one_page():
"""Test that we fit 10 items on a single 10-item page."""
items = range(10)
page = Page(items, page=0, items_per_page=10)
assert page.page == 1
assert page.first_item == 1
assert page.last_item == 10
assert page.first_page == 1
assert page.last_page == 1
assert page.previous_page is None
assert page.next_page is None
assert page.items_per_page == 10
assert page.item_count == 10
assert page.page_count == 1
assert page.pager() == ''
assert page.pager(show_if_single_page=True) == \
''
def test_many_pages():
"""Test that 100 items fit on seven 15-item pages."""
# Create routes mapper so that webhelper can create URLs
# using webhelpers.url_for()
mapper = Mapper()
mapper.connect(':controller')
items = range(100)
page = Page(items, page=0, items_per_page=15)
assert page.page == 1
assert page.first_item == 1
assert page.last_item == 15
assert page.first_page == 1
assert page.last_page == 7
assert page.previous_page is None
assert page.next_page == 2
assert page.items_per_page == 15
assert page.item_count == 100
assert page.page_count == 7
print page.pager()
assert page.pager() == \
' ' + \
' ' + \
' ' + \
' ' + \
''
assert page.pager(separator='_') == \
'_' + \
'_' + \
'_' + \
'_' + \
''
assert page.pager(page_param='xy') == \
' ' + \
' ' + \
' ' + \
' ' + \
''
assert page.pager(
link_attr={'style':'s1'},
curpage_attr={'style':'s2'},
dotdot_attr={'style':'s3'}) == \
'1 ' + \
'2 ' + \
'3 ' + \
'.. ' + \
'7'