fadb8706100812e745d32b9ffc04f34f128a5333
[django-pagination.git] / pagination / tests.py
1 """
2 >>> from django.core.paginator import Paginator
3 >>> from pagination.templatetags.pagination_tags import paginate
4 >>> from django.template import Template, Context
5
6 >>> p = Paginator(range(15), 2)
7 >>> paginate({'paginator': p, 'page_obj': p.page(1)})['pages']
8 [1, 2, 3, 4, 5, 6, 7, 8]
9
10 >>> p = Paginator(range(17), 2)
11 >>> paginate({'paginator': p, 'page_obj': p.page(1)})['pages']
12 [1, 2, 3, 4, 5, 6, 7, 8, 9]
13
14 >>> p = Paginator(range(19), 2)
15 >>> paginate({'paginator': p, 'page_obj': p.page(1)})['pages']
16 [1, 2, 3, 4, None, 7, 8, 9, 10]
17
18 >>> p = Paginator(range(21), 2)
19 >>> paginate({'paginator': p, 'page_obj': p.page(1)})['pages']
20 [1, 2, 3, 4, None, 8, 9, 10, 11]
21
22 # Testing orphans
23 >>> p = Paginator(range(5), 2, 1)
24 >>> paginate({'paginator': p, 'page_obj': p.page(1)})['pages']
25 [1, 2]
26
27 >>> p = Paginator(range(21), 2, 1)
28 >>> paginate({'paginator': p, 'page_obj': p.page(1)})['pages']
29 [1, 2, 3, 4, None, 7, 8, 9, 10]
30
31 >>> t = Template("{% load pagination_tags %}{% autopaginate var 2 %}{% paginate %}")
32
33 # WARNING: Please, please nobody read this portion of the code!
34 >>> class GetProxy(object):
35 ...     def __iter__(self): yield self.__dict__.__iter__
36 ...     def copy(self): return self
37 ...     def urlencode(self): return u''
38 ...     def keys(self): return []
39 >>> class RequestProxy(object):
40 ...     page = 1
41 ...     GET = GetProxy()
42 >>>
43 # ENDWARNING
44
45 >>> t.render(Context({'var': range(21), 'request': RequestProxy()}))
46 u'\\n\\n<div class="pagination">...
47 >>>
48 >>> t = Template("{% load pagination_tags %}{% autopaginate var %}{% paginate %}")
49 >>> t.render(Context({'var': range(21), 'request': RequestProxy()}))
50 u'\\n\\n<div class="pagination">...
51 >>> t = Template("{% load pagination_tags %}{% autopaginate var 20 %}{% paginate %}")
52 >>> t.render(Context({'var': range(21), 'request': RequestProxy()}))
53 u'\\n\\n<div class="pagination">...
54 >>> t = Template("{% load pagination_tags %}{% autopaginate var by %}{% paginate %}")
55 >>> t.render(Context({'var': range(21), 'by': 20, 'request': RequestProxy()}))
56 u'\\n\\n<div class="pagination">...
57 >>> t = Template("{% load pagination_tags %}{% autopaginate var by as foo %}{{ foo }}")
58 >>> t.render(Context({'var': range(21), 'by': 20, 'request': RequestProxy()}))
59 u'[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]'
60 >>>
61
62 # Testing InfinitePaginator
63
64 >>> from paginator import InfinitePaginator
65
66 >>> InfinitePaginator
67 <class 'pagination.paginator.InfinitePaginator'>
68 >>> p = InfinitePaginator(range(20), 2, link_template='/bacon/page/%d')
69 >>> p.validate_number(2)
70 2
71 >>> p.orphans
72 0
73 >>> p3 = p.page(3)
74 >>> p3
75 <Page 3>
76 >>> p3.end_index()
77 6
78 >>> p3.has_next()
79 True
80 >>> p3.has_previous()
81 True
82 >>> p.page(10).has_next()
83 False
84 >>> p.page(1).has_previous()
85 False
86 >>> p3.next_link()
87 '/bacon/page/4'
88 >>> p3.previous_link()
89 '/bacon/page/2'
90
91 # Testing FinitePaginator
92
93 >>> from paginator import FinitePaginator
94
95 >>> FinitePaginator
96 <class 'pagination.paginator.FinitePaginator'>
97 >>> p = FinitePaginator(range(20), 2, offset=10, link_template='/bacon/page/%d')
98 >>> p.validate_number(2)
99 2
100 >>> p.orphans
101 0
102 >>> p3 = p.page(3)
103 >>> p3
104 <Page 3>
105 >>> p3.start_index()
106 10
107 >>> p3.end_index()
108 6
109 >>> p3.has_next()
110 True
111 >>> p3.has_previous()
112 True
113 >>> p3.next_link()
114 '/bacon/page/4'
115 >>> p3.previous_link()
116 '/bacon/page/2'
117
118 >>> p = FinitePaginator(range(20), 20, offset=10, link_template='/bacon/page/%d')
119 >>> p2 = p.page(2)
120 >>> p2
121 <Page 2>
122 >>> p2.has_next()
123 False
124 >>> p3.has_previous()
125 True
126 >>> p2.next_link()
127
128 >>> p2.previous_link()
129 '/bacon/page/1'
130
131 """