예제 #1
0
def test_paginator():
    """
  Test that the paginator works with partial list.
  """
    def assert_page(page, data, start, end):
        assert_equal(page.object_list, data)
        assert_equal(page.start_index(), start)
        assert_equal(page.end_index(), end)

    # First page 1-20
    obj = range(20)
    pgn = Paginator(obj, per_page=20, total=25)
    assert_page(pgn.page(1), obj, 1, 20)

    # Second page 21-25
    obj = range(5)
    pgn = Paginator(obj, per_page=20, total=25)
    assert_page(pgn.page(2), obj, 21, 25)

    # Handle extra data on first page (22 items on a 20-page)
    obj = range(22)
    pgn = Paginator(obj, per_page=20, total=25)
    assert_page(pgn.page(1), range(20), 1, 20)

    # Handle extra data on second page (22 items on a 20-page)
    obj = range(22)
    pgn = Paginator(obj, per_page=20, total=25)
    assert_page(pgn.page(2), range(5), 21, 25)

    # Handle total < len(obj). Only works for QuerySet.
    obj = query.QuerySet()
    obj._result_cache = range(10)
    pgn = Paginator(obj, per_page=10, total=9)
    assert_page(pgn.page(1), range(10), 1, 10)

    # Still works with a normal complete list
    obj = range(25)
    pgn = Paginator(obj, per_page=20)
    assert_page(pgn.page(1), range(20), 1, 20)
    assert_page(pgn.page(2), range(20, 25), 21, 25)
예제 #2
0
 def get_query_set(self):
     q = NetQuery(self.model, NetWhere)
     return query.QuerySet(self.model, q)