1 require "application_system_test_case"
3 class ElementOldVersionTest < ApplicationSystemTestCase
4 test "shows a node with one version" do
5 node = create(:node, :with_history, :lat => 60, :lon => 30)
7 visit old_node_path(node, 1)
10 assert_css "h2", :text => "Node: #{node.id}"
11 assert_css "h4", :text => "Version #1"
12 assert_text(/Location: 60\.\d+, 30\.\d+/)
14 assert_link "Download XML", :href => api_node_version_path(node, 1)
15 assert_link "Node", :href => node_path(node)
16 assert_link "History", :exact => true, :href => node_history_path(node)
20 test "shows a way with one version" do
21 way = create(:way, :with_history)
23 visit old_way_path(way, 1)
26 assert_css "h2", :text => "Way: #{way.id}"
27 assert_css "h4", :text => "Version #1"
29 assert_link "Download XML", :href => api_way_version_path(way, 1)
30 assert_link "Way", :href => way_path(way)
31 assert_link "History", :exact => true, :href => way_history_path(way)
35 test "shows a relation with one version" do
36 relation = create(:relation, :with_history)
38 visit old_relation_path(relation, 1)
41 assert_css "h2", :text => "Relation: #{relation.id}"
42 assert_css "h4", :text => "Version #1"
44 assert_link "Download XML", :href => api_relation_version_path(relation, 1)
45 assert_link "Relation", :href => relation_path(relation)
46 assert_link "History", :exact => true, :href => relation_history_path(relation)
50 test "shows a node with two versions" do
51 node = create(:node, :with_history, :version => 2, :lat => 60, :lon => 30)
52 node.old_nodes.find_by(:version => 1).update(:lat => 59, :lon => 29)
54 visit old_node_path(node, 1)
57 assert_css "h2", :text => "Node: #{node.id}"
58 assert_css "h4", :text => "Version #1"
59 assert_text(/Location: 59\.\d+, 29\.\d+/)
61 assert_link "Download XML", :href => api_node_version_path(node, 1)
62 assert_link "Node", :href => node_path(node)
63 assert_link "History", :exact => true, :href => node_history_path(node)
67 assert_css "h2", :text => "Node: #{node.id}"
68 assert_css "h4", :text => "Version #2"
69 assert_text(/Location: 60\.\d+, 30\.\d+/)
71 assert_link "Download XML", :href => api_node_version_path(node, 2)
72 assert_link "Node", :href => node_path(node)
73 assert_link "History", :exact => true, :href => node_history_path(node)
77 test "shows a way with two versions" do
78 way = create(:way, :with_history, :version => 2)
80 visit old_way_path(way, 1)
83 assert_css "h2", :text => "Way: #{way.id}"
84 assert_css "h4", :text => "Version #1"
86 assert_link "Download XML", :href => api_way_version_path(way, 1)
87 assert_link "Way", :href => way_path(way)
88 assert_link "History", :exact => true, :href => way_history_path(way)
92 assert_css "h2", :text => "Way: #{way.id}"
93 assert_css "h4", :text => "Version #2"
95 assert_link "Download XML", :href => api_way_version_path(way, 2)
96 assert_link "Way", :href => way_path(way)
97 assert_link "History", :exact => true, :href => way_history_path(way)
101 test "shows a relation with two versions" do
102 relation = create(:relation, :with_history, :version => 2)
104 visit old_relation_path(relation, 1)
107 assert_css "h2", :text => "Relation: #{relation.id}"
108 assert_css "h4", :text => "Version #1"
110 assert_link "Download XML", :href => api_relation_version_path(relation, 1)
111 assert_link "Relation", :href => relation_path(relation)
112 assert_link "History", :exact => true, :href => relation_history_path(relation)
114 click_on "Version #2"
116 assert_css "h2", :text => "Relation: #{relation.id}"
117 assert_css "h4", :text => "Version #2"
119 assert_link "Download XML", :href => api_relation_version_path(relation, 2)
120 assert_link "Relation", :href => relation_path(relation)
121 assert_link "History", :exact => true, :href => relation_history_path(relation)
125 test "show a redacted node version" do
126 node = create_redacted_node
128 visit old_node_path(node, 1)
131 assert_css "h2", :text => "Node: #{node.id}"
132 assert_text "Version 1 of this node cannot be shown"
133 assert_no_text "Location"
134 assert_no_text "TOP SECRET"
136 assert_no_link "Download XML"
137 assert_no_link "View Redacted Data"
138 assert_link "Node", :href => node_path(node)
139 assert_link "History", :exact => true, :href => node_history_path(node)
143 test "show a redacted way version" do
144 way = create_redacted_way
146 visit old_way_path(way, 1)
149 assert_css "h2", :text => "Way: #{way.id}"
150 assert_text "Version 1 of this way cannot be shown"
151 assert_no_text "Location"
152 assert_no_text "TOP SECRET"
154 assert_no_link "Download XML"
155 assert_no_link "View Redacted Data"
156 assert_link "Way", :href => way_path(way)
157 assert_link "History", :exact => true, :href => way_history_path(way)
161 test "show a redacted relation version" do
162 relation = create_redacted_relation
164 visit old_relation_path(relation, 1)
167 assert_css "h2", :text => "Relation: #{relation.id}"
168 assert_text "Version 1 of this relation cannot be shown"
169 assert_no_text "Location"
170 assert_no_text "TOP SECRET"
172 assert_no_link "Download XML"
173 assert_no_link "View Redacted Data"
174 assert_link "Relation", :href => relation_path(relation)
175 assert_link "History", :exact => true, :href => relation_history_path(relation)
179 test "show a redacted node version to a regular user" do
180 node = create_redacted_node
182 sign_in_as(create(:user))
183 visit old_node_path(node, 1)
186 assert_css "h2", :text => "Node: #{node.id}"
187 assert_text "Version 1 of this node cannot be shown"
188 assert_no_text "Location"
189 assert_no_text "TOP SECRET"
191 assert_no_link "Download XML"
192 assert_no_link "View Redacted Data"
193 assert_link "Node", :href => node_path(node)
194 assert_link "History", :exact => true, :href => node_history_path(node)
198 test "show a redacted way version to a regular user" do
199 way = create_redacted_way
201 sign_in_as(create(:user))
202 visit old_way_path(way, 1)
205 assert_css "h2", :text => "Way: #{way.id}"
206 assert_text "Version 1 of this way cannot be shown"
207 assert_no_text "Location"
208 assert_no_text "TOP SECRET"
210 assert_no_link "Download XML"
211 assert_no_link "View Redacted Data"
212 assert_link "Way", :href => way_path(way)
213 assert_link "History", :exact => true, :href => way_history_path(way)
217 test "show a redacted relation version to a regular user" do
218 relation = create_redacted_relation
220 sign_in_as(create(:user))
221 visit old_relation_path(relation, 1)
224 assert_css "h2", :text => "Relation: #{relation.id}"
225 assert_text "Version 1 of this relation cannot be shown"
226 assert_no_text "Location"
227 assert_no_text "TOP SECRET"
229 assert_no_link "Download XML"
230 assert_no_link "View Redacted Data"
231 assert_link "Relation", :href => relation_path(relation)
232 assert_link "History", :exact => true, :href => relation_history_path(relation)
236 test "show a redacted node version to a moderator" do
237 node = create_redacted_node
239 sign_in_as(create(:moderator_user))
240 visit old_node_path(node, 1)
243 assert_css "h2", :text => "Node: #{node.id}"
244 assert_text "Version 1 of this node cannot be shown"
245 assert_no_text "Location"
246 assert_no_text "TOP SECRET"
248 assert_no_link "Download XML"
249 assert_link "View Redacted Data"
250 assert_no_link "View Redaction Message"
251 assert_link "Node", :href => node_path(node)
252 assert_link "History", :exact => true, :href => node_history_path(node)
254 click_on "View Redacted Data"
256 assert_css "h2", :text => "Node: #{node.id}"
257 assert_css "h4", :text => "Redacted Version #1"
258 assert_text(/Location: 59\.\d+, 29\.\d+/)
259 assert_text "TOP SECRET"
261 assert_no_link "Download XML"
262 assert_no_link "View Redacted Data"
263 assert_link "View Redaction Message"
264 assert_link "Node", :href => node_path(node)
265 assert_link "History", :exact => true, :href => node_history_path(node)
267 click_on "View Redaction Message"
269 assert_text "Version 1 of this node cannot be shown"
273 test "show a redacted way version to a moderator" do
274 way = create_redacted_way
276 sign_in_as(create(:moderator_user))
277 visit old_way_path(way, 1)
280 assert_css "h2", :text => "Way: #{way.id}"
281 assert_text "Version 1 of this way cannot be shown"
282 assert_no_text "Location"
283 assert_no_text "TOP SECRET"
285 assert_no_link "Download XML"
286 assert_link "View Redacted Data"
287 assert_no_link "View Redaction Message"
288 assert_link "Way", :href => way_path(way)
289 assert_link "History", :exact => true, :href => way_history_path(way)
291 click_on "View Redacted Data"
293 assert_css "h2", :text => "Way: #{way.id}"
294 assert_css "h4", :text => "Redacted Version #1"
295 assert_text "TOP SECRET"
297 assert_no_link "Download XML"
298 assert_no_link "View Redacted Data"
299 assert_link "View Redaction Message"
300 assert_link "Way", :href => way_path(way)
301 assert_link "History", :exact => true, :href => way_history_path(way)
303 click_on "View Redaction Message"
305 assert_text "Version 1 of this way cannot be shown"
309 test "show a redacted relation version to a moderator" do
310 relation = create_redacted_relation
312 sign_in_as(create(:moderator_user))
313 visit old_relation_path(relation, 1)
316 assert_css "h2", :text => "Relation: #{relation.id}"
317 assert_text "Version 1 of this relation cannot be shown"
318 assert_no_text "Location"
319 assert_no_text "TOP SECRET"
321 assert_no_link "Download XML"
322 assert_link "View Redacted Data"
323 assert_no_link "View Redaction Message"
324 assert_link "Relation", :href => relation_path(relation)
325 assert_link "History", :exact => true, :href => relation_history_path(relation)
327 click_on "View Redacted Data"
329 assert_css "h2", :text => "Relation: #{relation.id}"
330 assert_css "h4", :text => "Redacted Version #1"
331 assert_text "TOP SECRET"
333 assert_no_link "Download XML"
334 assert_no_link "View Redacted Data"
335 assert_link "View Redaction Message"
336 assert_link "Relation", :href => relation_path(relation)
337 assert_link "History", :exact => true, :href => relation_history_path(relation)
339 click_on "View Redaction Message"
341 assert_text "Version 1 of this relation cannot be shown"
345 test "navigates between multiple node versions" do
346 node = create(:node, :with_history, :version => 5)
348 visit node_path(node)
351 assert_css "h4", :text => "Version #5"
353 click_on "Version #3"
355 assert_css "h4", :text => "Version #3"
357 click_on "Version #2"
359 assert_css "h4", :text => "Version #2"
361 click_on "Version #4"
363 assert_css "h4", :text => "Version #4"
369 def create_redacted_node
370 create(:node, :with_history, :version => 2, :lat => 60, :lon => 30) do |node|
371 node_v1 = node.old_nodes.find_by(:version => 1)
372 node_v1.update(:lat => 59, :lon => 29)
373 create(:old_node_tag, :old_node => node_v1, :k => "name", :v => "TOP SECRET")
374 node_v1.redact!(create(:redaction))
378 def create_redacted_way
379 create(:way, :with_history, :version => 2) do |way|
380 way_v1 = way.old_ways.find_by(:version => 1)
381 create(:old_way_tag, :old_way => way_v1, :k => "name", :v => "TOP SECRET")
382 way_v1.redact!(create(:redaction))
386 def create_redacted_relation
387 create(:relation, :with_history, :version => 2) do |relation|
388 relation_v1 = relation.old_relations.find_by(:version => 1)
389 create(:old_relation_tag, :old_relation => relation_v1, :k => "name", :v => "TOP SECRET")
390 relation_v1.redact!(create(:redaction))