from django.test import TestCase from django.template import Template, Context from django.http import HttpRequest from simple_pagination.utils import( normalize_page_number, get_querystring_for_page, get_page_numbers, ) from simple_pagination.models import EndlessPage, PageList, ShowItems from django.http import QueryDict from django.core.paginator import Paginator class PaginateAndShowPageItems(TestCase): def test_addition(self): t = Template( "{% load paginate %}{% paginate entities %}.{% show_pageitems %} {% paginate 20 entities %} {% show_pages %}") req = HttpRequest() c = Context({"entities": range(100), 'request': req}) val = t.render(c) self.assertTrue(bool(val)) class NormalizePageNumber(TestCase): def test_normalize_page_number(self): page_number = 1 page_range = range(2) val = normalize_page_number(page_number, page_range) self.assertTrue(bool(val)) page_range = range(1) val = normalize_page_number(page_number, page_range) self.assertFalse(bool(val)) class GetQuerystringForPage(TestCase): def test_get_querystring_for_page(self): request = self request = HttpRequest() dict = {u"querystring_key": 1, u"key": 2, u"page": 3} qdict = QueryDict('', mutable=True) qdict.update(dict) request.GET = qdict val = get_querystring_for_page(request=request, page_number=1, querystring_key="key", default_number=1) self.assertTrue(bool(val)) request.GET = {} val = get_querystring_for_page(request=request, page_number=1, querystring_key="key", default_number=1) self.assertFalse(bool(val)) class GetPageNumbers(TestCase): def test_get_page_numbers(self): self.assertTrue(get_page_numbers(current_page=2, num_pages=10)) self.assertTrue(get_page_numbers(current_page=9, num_pages=10)) self.assertTrue(get_page_numbers(current_page=1, num_pages=3)) class TestEndlessPage(TestCase): def test_endless_page(self): request = HttpRequest() epage = EndlessPage(request=request, number=2, current_number=2, total_number=10, querystring_key='page') self.assertTrue(epage) class TestPageList(TestCase): def test_page_list(self): request = HttpRequest() paginator = Paginator(['john', 'paul', 'george', 'ringo'], 3) page = paginator.page(1) page.number = lambda: None setattr(page, 'number', 2) setattr(page, 'paginator', paginator) page_list = PageList(request=request, page=page, querystring_key="page") page_list = PageList(request=request, page=page, querystring_key="page", default_number=1) page_list._endless_page(number=1) page_list._endless_page(number=3) self.assertTrue(page_list[1]) page_list.next() self.assertTrue(page_list) si = ShowItems(request=request, page=page, querystring_key="page") self.assertTrue(si)