1 # frozen_string_literal: true
3 require "application_system_test_case"
5 class HistoryTest < ApplicationSystemTestCase
8 test "atom link on user's history is not modified" do
10 create(:changeset, :user => user, :num_changes => 1) do |changeset|
11 create(:changeset_tag, :changeset => changeset, :k => "comment", :v => "first-changeset-in-history")
14 visit "#{user_path(user)}/history"
17 assert_text "first-changeset-in-history"
20 assert_css "link[type='application/atom+xml'][href$='#{user_path(user)}/history/feed']", :visible => false
23 test "have only one list element on user's changesets page" do
25 create_visible_changeset(user, "first-changeset-in-history")
26 create_visible_changeset(user, "bottom-changeset-in-batch-2")
27 (PAGE_SIZE - 1).times do
28 create_visible_changeset(user, "next-changeset")
30 create_visible_changeset(user, "bottom-changeset-in-batch-1")
31 (PAGE_SIZE - 1).times do
32 create_visible_changeset(user, "next-changeset")
35 assert_nothing_raised do
36 visit "#{user_path(user)}/history"
39 assert_text "bottom-changeset-in-batch-1"
40 assert_no_text "bottom-changeset-in-batch-2"
41 assert_no_text "first-changeset-in-history"
42 assert_selector "ol", :count => 1
43 assert_selector "li[data-changeset]", :count => PAGE_SIZE
45 click_on "Older Changesets"
47 assert_text "bottom-changeset-in-batch-1"
48 assert_text "bottom-changeset-in-batch-2"
49 assert_no_text "first-changeset-in-history"
50 assert_selector "ol", :count => 1
51 assert_selector "li[data-changeset]", :count => 2 * PAGE_SIZE
53 click_on "Older Changesets"
55 assert_text "bottom-changeset-in-batch-1"
56 assert_text "bottom-changeset-in-batch-2"
57 assert_text "first-changeset-in-history"
58 assert_selector "ol", :count => 1
59 assert_selector "li[data-changeset]", :count => (2 * PAGE_SIZE) + 1
64 test "user history starts before specified changeset" do
66 changeset1 = create_visible_changeset(user, "1st-changeset-in-history")
67 changeset2 = create_visible_changeset(user, "2nd-changeset-in-history")
68 changeset3 = create(:changeset)
70 visit "#{user_path user}/history?before=#{changeset1.id}"
73 assert_no_link "1st-changeset-in-history"
74 assert_no_link "2nd-changeset-in-history"
77 visit "#{user_path user}/history?before=#{changeset2.id}"
80 assert_link "1st-changeset-in-history"
81 assert_no_link "2nd-changeset-in-history"
84 visit "#{user_path user}/history?before=#{changeset3.id}"
87 assert_link "1st-changeset-in-history"
88 assert_link "2nd-changeset-in-history"
92 test "user history starts after specified changeset" do
94 changeset0 = create(:changeset)
95 changeset1 = create_visible_changeset(user, "1st-changeset-in-history")
96 changeset2 = create_visible_changeset(user, "2nd-changeset-in-history")
98 visit "#{user_path user}/history?after=#{changeset2.id}"
101 assert_no_link "1st-changeset-in-history"
102 assert_no_link "2nd-changeset-in-history"
105 visit "#{user_path user}/history?after=#{changeset1.id}"
108 assert_no_link "1st-changeset-in-history"
109 assert_link "2nd-changeset-in-history"
112 visit "#{user_path user}/history?after=#{changeset0.id}"
115 assert_link "1st-changeset-in-history"
116 assert_link "2nd-changeset-in-history"
120 test "update sidebar when before param is included and map is moved" do
121 changeset1 = create(:changeset, :num_changes => 1, :bbox => [5, 5, 5, 5])
122 create(:changeset_tag, :changeset => changeset1, :k => "comment", :v => "changeset-at-fives")
123 changeset2 = create(:changeset, :num_changes => 1, :bbox => [5.01, 5.01, 5.01, 5.01])
124 create(:changeset_tag, :changeset => changeset2, :k => "comment", :v => "changeset-close-to-fives")
125 changeset3 = create(:changeset)
127 visit "/history?before=#{changeset3.id}#map=17/5/5"
130 assert_link "changeset-at-fives"
131 assert_no_link "changeset-close-to-fives"
135 find_link("Zoom Out").click(:shift)
139 assert_link "changeset-at-fives"
140 assert_link "changeset-close-to-fives"
143 assert_current_path history_path
146 test "all changesets are listed when fully zoomed out" do
148 [-177, -90, 0, 90, 177].each do |lon|
149 create(:changeset, :user => user, :num_changes => 1, :bbox => [lon - 1, 0, lon + 1, 1]) do |changeset|
150 create(:changeset_tag, :changeset => changeset, :k => "comment", :v => "changeset-at-lon(#{lon})")
154 visit history_path(:anchor => "map=0/0/0")
157 assert_link "changeset-at-lon(-177)", :count => 1
158 assert_link "changeset-at-lon(-90)", :count => 1
159 assert_link "changeset-at-lon(0)", :count => 1
160 assert_link "changeset-at-lon(90)", :count => 1
161 assert_link "changeset-at-lon(177)", :count => 1
165 test "changesets at both sides of antimeridian are listed" do
168 create(:changeset, :user => user, :num_changes => 1, :bbox => [176, 0, 178, 1]) do |changeset|
169 create(:changeset_tag, :changeset => changeset, :k => "comment", :v => "West-of-antimeridian-changeset")
171 create(:changeset, :user => user, :num_changes => 1, :bbox => [-178, 0, -176, 1]) do |changeset|
172 create(:changeset_tag, :changeset => changeset, :k => "comment", :v => "East-of-antimeridian-changeset")
176 visit history_path(:anchor => "map=6/0/179")
179 assert_link "West-of-antimeridian-changeset", :count => PAGE_SIZE / 2
180 assert_link "East-of-antimeridian-changeset", :count => PAGE_SIZE / 2
182 click_on "Older Changesets"
184 assert_link "West-of-antimeridian-changeset", :count => PAGE_SIZE
185 assert_link "East-of-antimeridian-changeset", :count => PAGE_SIZE
189 test "changeset bbox is shown on the map and clickable" do
191 changeset = create(:changeset, :user => user, :num_changes => 1, :bbox => [50, 50, 51, 51])
192 create(:changeset_tag, :changeset => changeset, :k => "comment", :v => "Clickable changeset")
194 visit "#{user_path(user)}/history"
197 assert_link "Clickable changeset"
200 find_by_id("map").click
202 assert_current_path changeset_path(changeset)
207 def create_visible_changeset(user, comment)
208 create(:changeset, :user => user, :num_changes => 1) do |changeset|
209 create(:changeset_tag, :changeset => changeset, :k => "comment", :v => comment)