1 require "application_system_test_case"
3 class HistoryTest < ApplicationSystemTestCase
6 test "atom link on user's history is not modified" do
8 create(:changeset, :user => user, :num_changes => 1) do |changeset|
9 create(:changeset_tag, :changeset => changeset, :k => "comment", :v => "first-changeset-in-history")
12 visit "#{user_path(user)}/history"
13 changesets = find "div.changesets"
14 changesets.assert_text "first-changeset-in-history"
16 assert_css "link[type='application/atom+xml'][href$='#{user_path(user)}/history/feed']", :visible => false
19 test "have only one list element on user's changesets page" do
21 create_visible_changeset(user, "first-changeset-in-history")
22 create_visible_changeset(user, "bottom-changeset-in-batch-2")
23 (PAGE_SIZE - 1).times do
24 create_visible_changeset(user, "next-changeset")
26 create_visible_changeset(user, "bottom-changeset-in-batch-1")
27 (PAGE_SIZE - 1).times do
28 create_visible_changeset(user, "next-changeset")
31 assert_nothing_raised do
32 visit "#{user_path(user)}/history"
33 changesets = find "div.changesets"
34 changesets.assert_text "bottom-changeset-in-batch-1"
35 changesets.assert_no_text "bottom-changeset-in-batch-2"
36 changesets.assert_no_text "first-changeset-in-history"
37 changesets.assert_selector "ol", :count => 1
38 changesets.assert_selector "li[data-changeset]", :count => PAGE_SIZE
40 click_on "Older Changesets"
41 changesets.assert_text "bottom-changeset-in-batch-1"
42 changesets.assert_text "bottom-changeset-in-batch-2"
43 changesets.assert_no_text "first-changeset-in-history"
44 changesets.assert_selector "ol", :count => 1
45 changesets.assert_selector "li[data-changeset]", :count => 2 * PAGE_SIZE
47 click_on "Older Changesets"
48 changesets.assert_text "bottom-changeset-in-batch-1"
49 changesets.assert_text "bottom-changeset-in-batch-2"
50 changesets.assert_text "first-changeset-in-history"
51 changesets.assert_selector "ol", :count => 1
52 changesets.assert_selector "li[data-changeset]", :count => (2 * PAGE_SIZE) + 1
56 test "user history starts before specified changeset" do
58 changeset1 = create_visible_changeset(user, "1st-changeset-in-history")
59 changeset2 = create_visible_changeset(user, "2nd-changeset-in-history")
60 changeset3 = create(:changeset)
62 visit "#{user_path user}/history?before=#{changeset1.id}"
65 assert_no_link "1st-changeset-in-history"
66 assert_no_link "2nd-changeset-in-history"
69 visit "#{user_path user}/history?before=#{changeset2.id}"
72 assert_link "1st-changeset-in-history"
73 assert_no_link "2nd-changeset-in-history"
76 visit "#{user_path user}/history?before=#{changeset3.id}"
79 assert_link "1st-changeset-in-history"
80 assert_link "2nd-changeset-in-history"
84 test "user history starts after specified changeset" do
86 changeset0 = create(:changeset)
87 changeset1 = create_visible_changeset(user, "1st-changeset-in-history")
88 changeset2 = create_visible_changeset(user, "2nd-changeset-in-history")
90 visit "#{user_path user}/history?after=#{changeset2.id}"
93 assert_no_link "1st-changeset-in-history"
94 assert_no_link "2nd-changeset-in-history"
97 visit "#{user_path user}/history?after=#{changeset1.id}"
100 assert_no_link "1st-changeset-in-history"
101 assert_link "2nd-changeset-in-history"
104 visit "#{user_path user}/history?after=#{changeset0.id}"
107 assert_link "1st-changeset-in-history"
108 assert_link "2nd-changeset-in-history"
112 test "update sidebar when before param is included and map is moved" do
113 changeset1 = create(:changeset, :num_changes => 1, :bbox => [5, 5, 5, 5])
114 create(:changeset_tag, :changeset => changeset1, :k => "comment", :v => "changeset-at-fives")
115 changeset2 = create(:changeset, :num_changes => 1, :bbox => [5.01, 5.01, 5.01, 5.01])
116 create(:changeset_tag, :changeset => changeset2, :k => "comment", :v => "changeset-close-to-fives")
117 changeset3 = create(:changeset)
119 visit "/history?before=#{changeset3.id}#map=17/5/5"
122 assert_link "changeset-at-fives"
123 assert_no_link "changeset-close-to-fives"
126 find("#map [aria-label='Zoom Out']").click(:shift)
129 assert_link "changeset-at-fives"
130 assert_link "changeset-close-to-fives"
133 assert_current_path history_path
136 test "all changesets are listed when fully zoomed out" do
138 [-177, -90, 0, 90, 177].each do |lon|
139 create(:changeset, :user => user, :num_changes => 1, :bbox => [lon - 1, 0, lon + 1, 1]) do |changeset|
140 create(:changeset_tag, :changeset => changeset, :k => "comment", :v => "changeset-at-lon(#{lon})")
144 visit history_path(:anchor => "map=0/0/0")
147 assert_link "changeset-at-lon(-177)", :count => 1
148 assert_link "changeset-at-lon(-90)", :count => 1
149 assert_link "changeset-at-lon(0)", :count => 1
150 assert_link "changeset-at-lon(90)", :count => 1
151 assert_link "changeset-at-lon(177)", :count => 1
155 test "changesets at both sides of antimeridian are listed" do
158 create(:changeset, :user => user, :num_changes => 1, :bbox => [176, 0, 178, 1]) do |changeset|
159 create(:changeset_tag, :changeset => changeset, :k => "comment", :v => "West-of-antimeridian-changeset")
161 create(:changeset, :user => user, :num_changes => 1, :bbox => [-178, 0, -176, 1]) do |changeset|
162 create(:changeset_tag, :changeset => changeset, :k => "comment", :v => "East-of-antimeridian-changeset")
166 visit history_path(:anchor => "map=6/0/179")
169 assert_link "West-of-antimeridian-changeset", :count => PAGE_SIZE / 2
170 assert_link "East-of-antimeridian-changeset", :count => PAGE_SIZE / 2
172 click_on "Older Changesets"
174 assert_link "West-of-antimeridian-changeset", :count => PAGE_SIZE
175 assert_link "East-of-antimeridian-changeset", :count => PAGE_SIZE
179 test "changeset bbox is shown on the map and clickable" do
181 changeset = create(:changeset, :user => user, :num_changes => 1, :bbox => [50, 50, 51, 51])
182 create(:changeset_tag, :changeset => changeset, :k => "comment", :v => "Clickable changeset")
184 visit "#{user_path(user)}/history"
187 assert_link "Clickable changeset"
190 find_by_id("map").click
192 assert_current_path changeset_path(changeset)
197 def create_visible_changeset(user, comment)
198 create(:changeset, :user => user, :num_changes => 1) do |changeset|
199 create(:changeset_tag, :changeset => changeset, :k => "comment", :v => comment)