Extend templatetag paginate - flickr-like behaviour
[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 >>> pg = paginate({'paginator': p, 'page_obj': p.page(1)})
8 >>> pg['pages']
9 [1, 2, 3, 4, 5, 6, 7, 8]
10 >>> pg['records']['first']
11 1
12 >>> pg['records']['last']
13 2
14
15 >>> p = Paginator(range(15), 2)
16 >>> pg = paginate({'paginator': p, 'page_obj': p.page(8)})
17 >>> pg['pages']
18 [1, 2, 3, 4, 5, 6, 7, 8]
19 >>> pg['records']['first']
20 15
21 >>> pg['records']['last']
22 15
23
24 >>> p = Paginator(range(17), 2)
25 >>> paginate({'paginator': p, 'page_obj': p.page(1)})['pages']
26 [1, 2, 3, 4, 5, 6, 7, 8, 9]
27
28
29 # on start
30 # moving the window from 1 ... to end
31 # window size = 2, margin = 2
32 # [1] 2 3 4 5 ... 15, 16
33 # 1 [2] 3 4 5 ... 15, 16
34 # 1 2 [3] 4 5 ... 15, 16
35 # 1 2 3 [4] 5 6 ... 15, 16
36 # 1 2 3 4 [5] 6 7 ... 15, 16
37 # 1 2 3 4 5 [6] 7 8 ... 15, 16
38 # 1 2 ... 5 6 [7] 8 9 ... 15, 16
39
40 # window = 2 -> show 5 pages
41 >>> p = Paginator(range(31), 2)
42 >>> paginate({'paginator': p, 'page_obj': p.page(1)}, 2, '', 2)['pages']
43 [1, 2, 3, 4, 5, None, 15, 16]
44
45 >>> p = Paginator(range(31), 2)
46 >>> paginate({'paginator': p, 'page_obj': p.page(2)}, 2, '', 2)['pages']
47 [1, 2, 3, 4, 5, None, 15, 16]
48
49 >>> p = Paginator(range(31), 2)
50 >>> paginate({'paginator': p, 'page_obj': p.page(3)}, 2, '', 2)['pages']
51 [1, 2, 3, 4, 5, None, 15, 16]
52
53 >>> p = Paginator(range(31), 2)
54 >>> paginate({'paginator': p, 'page_obj': p.page(4)}, 2, '', 2)['pages']
55 [1, 2, 3, 4, 5, 6, None, 15, 16]
56
57 >>> p = Paginator(range(31), 2)
58 >>> paginate({'paginator': p, 'page_obj': p.page(5)}, 2, '', 2)['pages']
59 [1, 2, 3, 4, 5, 6, 7, None, 15, 16]
60
61 # in the middle
62 >>> p = Paginator(range(31), 2)
63 >>> paginate({'paginator': p, 'page_obj': p.page(7)}, 2, '', 2)['pages']
64 [1, 2, None, 5, 6, 7, 8, 9, None, 15, 16]
65
66 # on end
67 >>> p = Paginator(range(31), 2)
68 >>> paginate({'paginator': p, 'page_obj': p.page(16)}, 2, '', 2)['pages']
69 [1, 2, None, 12, 13, 14, 15, 16]
70
71 >>> p = Paginator(range(31), 2)
72 >>> paginate({'paginator': p, 'page_obj': p.page(13)}, 2, '', 2)['pages']
73 [1, 2, None, 11, 12, 13, 14, 15, 16]
74
75
76 >>> p = Paginator(range(0), 2)
77 >>> paginate({'paginator': p, 'page_obj': p.page(1)})['pages']
78 [1]
79
80
81
82 # no margin
83 >>> p = Paginator(range(31), 2)
84 >>> paginate({'paginator': p, 'page_obj': p.page(3)}, 2, '', 0)['pages']
85 [1, 2, 3, 4, 5, None]
86
87 >>> p = Paginator(range(31), 2)
88 >>> paginate({'paginator': p, 'page_obj': p.page(5)}, 2, '', 0)['pages']
89 [None, 3, 4, 5, 6, 7, None]
90
91 >>> p = Paginator(range(31), 2)
92 >>> paginate({'paginator': p, 'page_obj': p.page(16)}, 2, '', 0)['pages']
93 [None, 12, 13, 14, 15, 16]
94
95
96 # special
97 # zero window, zero margin
98 >>> p = Paginator(range(31), 2)
99 >>> paginate({'paginator': p, 'page_obj': p.page(1)}, 0, '', 0)['pages']
100 [1, None]
101
102 >>> p = Paginator(range(31), 2)
103 >>> paginate({'paginator': p, 'page_obj': p.page(2)}, 0, '', 0)['pages']
104 [None, 2, None]
105
106 >>> p = Paginator(range(31), 2)
107 >>> paginate({'paginator': p, 'page_obj': p.page(3)}, 0, '', 0)['pages']
108 [None, 3, None]
109
110 >>> p = Paginator(range(31), 2)
111 >>> paginate({'paginator': p, 'page_obj': p.page(10)}, 0, '', 0)['pages']
112 [None, 10, None]
113
114 >>> p = Paginator(range(31), 2)
115 >>> paginate({'paginator': p, 'page_obj': p.page(14)}, 0, '', 0)['pages']
116 [None, 14, None]
117
118 >>> p = Paginator(range(31), 2)
119 >>> paginate({'paginator': p, 'page_obj': p.page(15)}, 0, '', 0)['pages']
120 [None, 15, None]
121
122 >>> p = Paginator(range(31), 2)
123 >>> paginate({'paginator': p, 'page_obj': p.page(16)}, 0, '', 0)['pages']
124 [None, 16]
125
126 >>> p = Paginator(range(31), 2)
127 >>> paginate({'paginator': p, 'page_obj': p.page(5)}, 0, '', 1)['pages']
128 [1, None, 5, None, 16]
129
130
131
132
133 """