]> git.openstreetmap.org Git - rails.git/blob - test/helpers/numbered_pagination_helper_test.rb
Extend starting/ending version lists containing active items
[rails.git] / test / helpers / numbered_pagination_helper_test.rb
1 require "test_helper"
2
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)
10       end
11     end
12   end
13
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
20       end
21     end
22   end
23
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)
31         end
32       end
33     end
34   end
35
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)
42       end
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)
46         end
47       end
48       assert_dom lists[2], "> li", 1 do
49         check_version_link sample_item_data(6)
50       end
51     end
52   end
53
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)
61       end
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)
66       end
67       assert_dom lists[2], "> li", 1 do |items|
68         check_version_link items.shift, sample_item_data(6)
69       end
70     end
71   end
72
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)
81       end
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)
85       end
86       assert_dom lists[2], "> li", 1 do |items|
87         check_version_link items.shift, sample_item_data(6)
88       end
89     end
90   end
91
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)
98       end
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)
104       end
105       assert_dom lists[2], "> li", 1 do |items|
106         check_version_link items.shift, sample_item_data(6)
107       end
108     end
109   end
110
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)
117       end
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)
123       end
124       assert_dom lists[2], "> li", 1 do |items|
125         check_version_link items.shift, sample_item_data(6)
126       end
127     end
128   end
129
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)
136       end
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)
140       end
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)
145       end
146     end
147   end
148
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)
155       end
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)
160       end
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
164       end
165     end
166   end
167
168   private
169
170   def sample_item_data(version)
171     { :href => "test/version/#{version}", :title => "Version ##{version}" }
172   end
173
174   def check_version_link(*elements, data, active: false)
175     assert_dom(*elements, "> @class", active ? "page-item active" : "page-item")
176     assert_dom(*elements, "> a", 1) do
177       assert_dom "> @href", data[:href]
178       assert_dom "> @title", data[:title]
179     end
180   end
181 end