3 class NumberedPaginationHelperTest < ActionView::TestCase
4 def test_element_versions_pagination1
5 pagination = element_versions_pagination(1) { |v| sample_item_data v }
6 pagination_dom = Rails::Dom::Testing.html_document_fragment.parse(pagination)
7 assert_dom pagination_dom, "ul", :count => 1 do
8 assert_dom "> li", 1 do
9 check_version_link sample_item_data(1)
14 def test_element_versions_pagination1_active1
15 pagination = element_versions_pagination(1, :active_version => 1) { |v| sample_item_data v }
16 pagination_dom = Rails::Dom::Testing.html_document_fragment.parse(pagination)
17 assert_dom pagination_dom, "ul", :count => 1 do
18 assert_dom "> li", 1 do
19 check_version_link sample_item_data(1), :active => true
24 def test_element_versions_pagination5
25 pagination = element_versions_pagination(5) { |v| sample_item_data v }
26 pagination_dom = Rails::Dom::Testing.html_document_fragment.parse(pagination)
27 assert_dom pagination_dom, "ul", :count => 1 do
28 assert_dom "> li", 5 do |items|
29 items.each_with_index do |item, i|
30 check_version_link item, sample_item_data(i + 1)
36 def test_element_versions_pagination6
37 pagination = element_versions_pagination(6) { |v| sample_item_data v }
38 pagination_dom = Rails::Dom::Testing.html_document_fragment.parse(pagination)
39 assert_dom pagination_dom, "ul", :count => 3 do |lists|
40 assert_dom lists[0], "> li", 1 do
41 check_version_link sample_item_data(1)
43 assert_dom lists[1], "> li", 4 do |items|
44 items.each_with_index do |item, i|
45 check_version_link item, sample_item_data(i + 2)
48 assert_dom lists[2], "> li", 1 do
49 check_version_link sample_item_data(6)
54 def test_element_versions_pagination6_active1
55 pagination = element_versions_pagination(6, :active_version => 1) { |v| sample_item_data v }
56 pagination_dom = Rails::Dom::Testing.html_document_fragment.parse(pagination)
57 assert_dom pagination_dom, "ul", :count => 3 do |lists|
58 assert_dom lists[0], "> li", 2 do |items|
59 check_version_link items.shift, sample_item_data(1), :active => true
60 check_version_link items.shift, sample_item_data(2)
62 assert_dom lists[1], "> li", 3 do |items|
63 check_version_link items.shift, sample_item_data(3)
64 check_version_link items.shift, sample_item_data(4)
65 check_version_link items.shift, sample_item_data(5)
67 assert_dom lists[2], "> li", 1 do |items|
68 check_version_link items.shift, sample_item_data(6)
73 def test_element_versions_pagination6_active2
74 pagination = element_versions_pagination(6, :active_version => 2) { |v| sample_item_data v }
75 pagination_dom = Rails::Dom::Testing.html_document_fragment.parse(pagination)
76 assert_dom pagination_dom, "ul", :count => 3 do |lists|
77 assert_dom lists[0], "> li", 3 do |items|
78 check_version_link items.shift, sample_item_data(1)
79 check_version_link items.shift, sample_item_data(2), :active => true
80 check_version_link items.shift, sample_item_data(3)
82 assert_dom lists[1], "> li", 2 do |items|
83 check_version_link items.shift, sample_item_data(4)
84 check_version_link items.shift, sample_item_data(5)
86 assert_dom lists[2], "> li", 1 do |items|
87 check_version_link items.shift, sample_item_data(6)
92 def test_element_versions_pagination6_active3
93 pagination = element_versions_pagination(6, :active_version => 3) { |v| sample_item_data v }
94 pagination_dom = Rails::Dom::Testing.html_document_fragment.parse(pagination)
95 assert_dom pagination_dom, "ul", :count => 3 do |lists|
96 assert_dom lists[0], "> li", 1 do |items|
97 check_version_link items.shift, sample_item_data(1)
99 assert_dom lists[1], "> li", 4 do |items|
100 check_version_link items.shift, sample_item_data(2)
101 check_version_link items.shift, sample_item_data(3), :active => true
102 check_version_link items.shift, sample_item_data(4)
103 check_version_link items.shift, sample_item_data(5)
105 assert_dom lists[2], "> li", 1 do |items|
106 check_version_link items.shift, sample_item_data(6)
111 def test_element_versions_pagination6_active4
112 pagination = element_versions_pagination(6, :active_version => 4) { |v| sample_item_data v }
113 pagination_dom = Rails::Dom::Testing.html_document_fragment.parse(pagination)
114 assert_dom pagination_dom, "ul", :count => 3 do |lists|
115 assert_dom lists[0], "> li", 1 do |items|
116 check_version_link items.shift, sample_item_data(1)
118 assert_dom lists[1], "> li", 4 do |items|
119 check_version_link items.shift, sample_item_data(2)
120 check_version_link items.shift, sample_item_data(3)
121 check_version_link items.shift, sample_item_data(4), :active => true
122 check_version_link items.shift, sample_item_data(5)
124 assert_dom lists[2], "> li", 1 do |items|
125 check_version_link items.shift, sample_item_data(6)
130 def test_element_versions_pagination6_active5
131 pagination = element_versions_pagination(6, :active_version => 5) { |v| sample_item_data v }
132 pagination_dom = Rails::Dom::Testing.html_document_fragment.parse(pagination)
133 assert_dom pagination_dom, "ul", :count => 3 do |lists|
134 assert_dom lists[0], "> li", 1 do |items|
135 check_version_link items.shift, sample_item_data(1)
137 assert_dom lists[1], "> li", 2 do |items|
138 check_version_link items.shift, sample_item_data(2)
139 check_version_link items.shift, sample_item_data(3)
141 assert_dom lists[2], "> li", 3 do |items|
142 check_version_link items.shift, sample_item_data(4)
143 check_version_link items.shift, sample_item_data(5), :active => true
144 check_version_link items.shift, sample_item_data(6)
149 def test_element_versions_pagination6_active6
150 pagination = element_versions_pagination(6, :active_version => 6) { |v| sample_item_data v }
151 pagination_dom = Rails::Dom::Testing.html_document_fragment.parse(pagination)
152 assert_dom pagination_dom, "ul", :count => 3 do |lists|
153 assert_dom lists[0], "> li", 1 do |items|
154 check_version_link items.shift, sample_item_data(1)
156 assert_dom lists[1], "> li", 3 do |items|
157 check_version_link items.shift, sample_item_data(2)
158 check_version_link items.shift, sample_item_data(3)
159 check_version_link items.shift, sample_item_data(4)
161 assert_dom lists[2], "> li", 2 do |items|
162 check_version_link items.shift, sample_item_data(5)
163 check_version_link items.shift, sample_item_data(6), :active => true
168 def test_element_versions_pagination_window_start_include
169 pagination = element_versions_pagination(50, :window_half_size => 3, :active_version => 3) { |v| sample_item_data v }
170 pagination_dom = Rails::Dom::Testing.html_document_fragment.parse(pagination)
171 assert_dom pagination_dom, "ul", :count => 3 do |lists|
172 assert_dom lists[0], "> li", 1 do |items|
173 check_version_link items.shift, sample_item_data(1)
175 assert_dom lists[1], "> li", 6 do |items|
176 check_version_link items.shift, sample_item_data(2)
177 check_version_link items.shift, sample_item_data(3), :active => true
178 check_version_link items.shift, sample_item_data(4)
179 check_version_link items.shift, sample_item_data(5)
180 check_version_link items.shift, sample_item_data(6)
181 check_version_ellipsis items.shift
183 assert_dom lists[2], "> li", 1 do |items|
184 check_version_link items.shift, sample_item_data(50)
189 def test_element_versions_pagination_window_start_touch
190 pagination = element_versions_pagination(50, :window_half_size => 3, :active_version => 5) { |v| sample_item_data v }
191 pagination_dom = Rails::Dom::Testing.html_document_fragment.parse(pagination)
192 assert_dom pagination_dom, "ul", :count => 3 do |lists|
193 assert_dom lists[0], "> li", 1 do |items|
194 check_version_link items.shift, sample_item_data(1)
196 assert_dom lists[1], "> li", 8 do |items|
197 check_version_link items.shift, sample_item_data(2)
198 check_version_link items.shift, sample_item_data(3)
199 check_version_link items.shift, sample_item_data(4)
200 check_version_link items.shift, sample_item_data(5), :active => true
201 check_version_link items.shift, sample_item_data(6)
202 check_version_link items.shift, sample_item_data(7)
203 check_version_link items.shift, sample_item_data(8)
204 check_version_ellipsis items.shift
206 assert_dom lists[2], "> li", 1 do |items|
207 check_version_link items.shift, sample_item_data(50)
212 def test_element_versions_pagination_window_start_touch_almost
213 pagination = element_versions_pagination(50, :window_half_size => 3, :active_version => 6) { |v| sample_item_data v }
214 pagination_dom = Rails::Dom::Testing.html_document_fragment.parse(pagination)
215 assert_dom pagination_dom, "ul", :count => 3 do |lists|
216 assert_dom lists[0], "> li", 1 do |items|
217 check_version_link items.shift, sample_item_data(1)
219 assert_dom lists[1], "> li", 9 do |items|
220 check_version_link items.shift, sample_item_data(2)
221 check_version_link items.shift, sample_item_data(3)
222 check_version_link items.shift, sample_item_data(4)
223 check_version_link items.shift, sample_item_data(5)
224 check_version_link items.shift, sample_item_data(6), :active => true
225 check_version_link items.shift, sample_item_data(7)
226 check_version_link items.shift, sample_item_data(8)
227 check_version_link items.shift, sample_item_data(9)
228 check_version_ellipsis items.shift
230 assert_dom lists[2], "> li", 1 do |items|
231 check_version_link items.shift, sample_item_data(50)
236 def test_element_versions_pagination_window_middle
237 pagination = element_versions_pagination(50, :window_half_size => 3, :active_version => 43) { |v| sample_item_data v }
238 pagination_dom = Rails::Dom::Testing.html_document_fragment.parse(pagination)
239 assert_dom pagination_dom, "ul", :count => 3 do |lists|
240 assert_dom lists[0], "> li", 1 do |items|
241 check_version_link items.shift, sample_item_data(1)
243 assert_dom lists[1], "> li", 9 do |items|
244 check_version_ellipsis items.shift
245 check_version_link items.shift, sample_item_data(40)
246 check_version_link items.shift, sample_item_data(41)
247 check_version_link items.shift, sample_item_data(42)
248 check_version_link items.shift, sample_item_data(43), :active => true
249 check_version_link items.shift, sample_item_data(44)
250 check_version_link items.shift, sample_item_data(45)
251 check_version_link items.shift, sample_item_data(46)
252 check_version_ellipsis items.shift
254 assert_dom lists[2], "> li", 1 do |items|
255 check_version_link items.shift, sample_item_data(50)
260 def test_element_versions_pagination_window_end_touch
261 pagination = element_versions_pagination(50, :window_half_size => 3, :active_version => 46) { |v| sample_item_data v }
262 pagination_dom = Rails::Dom::Testing.html_document_fragment.parse(pagination)
263 assert_dom pagination_dom, "ul", :count => 3 do |lists|
264 assert_dom lists[0], "> li", 1 do |items|
265 check_version_link items.shift, sample_item_data(1)
267 assert_dom lists[1], "> li", 8 do |items|
268 check_version_ellipsis items.shift
269 check_version_link items.shift, sample_item_data(43)
270 check_version_link items.shift, sample_item_data(44)
271 check_version_link items.shift, sample_item_data(45)
272 check_version_link items.shift, sample_item_data(46), :active => true
273 check_version_link items.shift, sample_item_data(47)
274 check_version_link items.shift, sample_item_data(48)
275 check_version_link items.shift, sample_item_data(49)
277 assert_dom lists[2], "> li", 1 do |items|
278 check_version_link items.shift, sample_item_data(50)
283 def test_element_versions_pagination_window_end_beyond
284 pagination = element_versions_pagination(50, :window_half_size => 3) { |v| sample_item_data v }
285 pagination_dom = Rails::Dom::Testing.html_document_fragment.parse(pagination)
286 assert_dom pagination_dom, "ul", :count => 3 do |lists|
287 assert_dom lists[0], "> li", 1 do |items|
288 check_version_link items.shift, sample_item_data(1)
290 assert_dom lists[1], "> li", 3 do |items|
291 check_version_ellipsis items.shift
292 check_version_link items.shift, sample_item_data(48)
293 check_version_link items.shift, sample_item_data(49)
295 assert_dom lists[2], "> li", 1 do |items|
296 check_version_link items.shift, sample_item_data(50)
301 def test_element_versions_pagination_step
302 pagination = element_versions_pagination(35, :step_size => 10, :window_half_size => 0) { |v| sample_item_data v }
303 pagination_dom = Rails::Dom::Testing.html_document_fragment.parse(pagination)
304 assert_dom pagination_dom, "ul", :count => 3 do |lists|
305 assert_dom lists[0], "> li", 1 do |items|
306 check_version_link items.shift, sample_item_data(1)
308 assert_dom lists[1], "> li", 7 do |items|
309 check_version_ellipsis items.shift
310 check_version_link items.shift, sample_item_data(10)
311 check_version_ellipsis items.shift
312 check_version_link items.shift, sample_item_data(20)
313 check_version_ellipsis items.shift
314 check_version_link items.shift, sample_item_data(30)
315 check_version_ellipsis items.shift
317 assert_dom lists[2], "> li", 1 do |items|
318 check_version_link items.shift, sample_item_data(35)
323 def test_element_versions_pagination_step_end_touch
324 pagination = element_versions_pagination(31, :step_size => 10, :window_half_size => 0) { |v| sample_item_data v }
325 pagination_dom = Rails::Dom::Testing.html_document_fragment.parse(pagination)
326 assert_dom pagination_dom, "ul", :count => 3 do |lists|
327 assert_dom lists[0], "> li", 1 do |items|
328 check_version_link items.shift, sample_item_data(1)
330 assert_dom lists[1], "> li", 6 do |items|
331 check_version_ellipsis items.shift
332 check_version_link items.shift, sample_item_data(10)
333 check_version_ellipsis items.shift
334 check_version_link items.shift, sample_item_data(20)
335 check_version_ellipsis items.shift
336 check_version_link items.shift, sample_item_data(30)
338 assert_dom lists[2], "> li", 1 do |items|
339 check_version_link items.shift, sample_item_data(31)
344 def test_element_versions_pagination_step_window
345 pagination = element_versions_pagination(35, :active_version => 15, :step_size => 10, :window_half_size => 1) { |v| sample_item_data v }
346 pagination_dom = Rails::Dom::Testing.html_document_fragment.parse(pagination)
347 assert_dom pagination_dom, "ul", :count => 3 do |lists|
348 assert_dom lists[0], "> li", 1 do |items|
349 check_version_link items.shift, sample_item_data(1)
351 assert_dom lists[1], "> li", 11 do |items|
352 check_version_ellipsis items.shift
353 check_version_link items.shift, sample_item_data(10)
354 check_version_ellipsis items.shift
355 check_version_link items.shift, sample_item_data(14)
356 check_version_link items.shift, sample_item_data(15), :active => true
357 check_version_link items.shift, sample_item_data(16)
358 check_version_ellipsis items.shift
359 check_version_link items.shift, sample_item_data(20)
360 check_version_ellipsis items.shift
361 check_version_link items.shift, sample_item_data(30)
362 check_version_ellipsis items.shift
364 assert_dom lists[2], "> li", 1 do |items|
365 check_version_link items.shift, sample_item_data(35)
370 def test_element_versions_pagination_step_window_touch
371 pagination = element_versions_pagination(35, :active_version => 12, :step_size => 10, :window_half_size => 1) { |v| sample_item_data v }
372 pagination_dom = Rails::Dom::Testing.html_document_fragment.parse(pagination)
373 assert_dom pagination_dom, "ul", :count => 3 do |lists|
374 assert_dom lists[0], "> li", 1 do |items|
375 check_version_link items.shift, sample_item_data(1)
377 assert_dom lists[1], "> li", 10 do |items|
378 check_version_ellipsis items.shift
379 check_version_link items.shift, sample_item_data(10)
380 check_version_link items.shift, sample_item_data(11)
381 check_version_link items.shift, sample_item_data(12), :active => true
382 check_version_link items.shift, sample_item_data(13)
383 check_version_ellipsis items.shift
384 check_version_link items.shift, sample_item_data(20)
385 check_version_ellipsis items.shift
386 check_version_link items.shift, sample_item_data(30)
387 check_version_ellipsis items.shift
389 assert_dom lists[2], "> li", 1 do |items|
390 check_version_link items.shift, sample_item_data(35)
397 def sample_item_data(version)
398 { :href => "test/version/#{version}", :title => "Version ##{version}" }
401 def check_version_link(*elements, data, active: false)
402 assert_dom(*elements, "> @class", active ? "page-item active" : "page-item")
403 assert_dom(*elements, "> a", 1) do
404 assert_dom "> @href", data[:href]
405 assert_dom "> @title", data[:title]
409 def check_version_ellipsis(*elements)
410 assert_dom(*elements, "> @class", "page-item disabled")
411 assert_dom(*elements, "> a", 0)
412 assert_dom(*elements, "> span", 1, "...")