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"
15 assert_text "first-changeset-in-history"
18 assert_css "link[type='application/atom+xml'][href$='#{user_path(user)}/history/feed']", :visible => false
21 test "have only one list element on user's changesets page" do
23 create_visible_changeset(user, "first-changeset-in-history")
24 create_visible_changeset(user, "bottom-changeset-in-batch-2")
25 (PAGE_SIZE - 1).times do
26 create_visible_changeset(user, "next-changeset")
28 create_visible_changeset(user, "bottom-changeset-in-batch-1")
29 (PAGE_SIZE - 1).times do
30 create_visible_changeset(user, "next-changeset")
33 assert_nothing_raised do
34 visit "#{user_path(user)}/history"
37 assert_text "bottom-changeset-in-batch-1"
38 assert_no_text "bottom-changeset-in-batch-2"
39 assert_no_text "first-changeset-in-history"
40 assert_selector "ol", :count => 1
41 assert_selector "li[data-changeset]", :count => PAGE_SIZE
43 click_on "Older Changesets"
45 assert_text "bottom-changeset-in-batch-1"
46 assert_text "bottom-changeset-in-batch-2"
47 assert_no_text "first-changeset-in-history"
48 assert_selector "ol", :count => 1
49 assert_selector "li[data-changeset]", :count => 2 * PAGE_SIZE
51 click_on "Older Changesets"
53 assert_text "bottom-changeset-in-batch-1"
54 assert_text "bottom-changeset-in-batch-2"
55 assert_text "first-changeset-in-history"
56 assert_selector "ol", :count => 1
57 assert_selector "li[data-changeset]", :count => (2 * PAGE_SIZE) + 1
62 test "user history starts before specified changeset" do
64 changeset1 = create_visible_changeset(user, "1st-changeset-in-history")
65 changeset2 = create_visible_changeset(user, "2nd-changeset-in-history")
66 changeset3 = create(:changeset)
68 visit "#{user_path user}/history?before=#{changeset1.id}"
71 assert_no_link "1st-changeset-in-history"
72 assert_no_link "2nd-changeset-in-history"
75 visit "#{user_path user}/history?before=#{changeset2.id}"
78 assert_link "1st-changeset-in-history"
79 assert_no_link "2nd-changeset-in-history"
82 visit "#{user_path user}/history?before=#{changeset3.id}"
85 assert_link "1st-changeset-in-history"
86 assert_link "2nd-changeset-in-history"
90 test "user history starts after specified changeset" do
92 changeset0 = create(:changeset)
93 changeset1 = create_visible_changeset(user, "1st-changeset-in-history")
94 changeset2 = create_visible_changeset(user, "2nd-changeset-in-history")
96 visit "#{user_path user}/history?after=#{changeset2.id}"
99 assert_no_link "1st-changeset-in-history"
100 assert_no_link "2nd-changeset-in-history"
103 visit "#{user_path user}/history?after=#{changeset1.id}"
106 assert_no_link "1st-changeset-in-history"
107 assert_link "2nd-changeset-in-history"
110 visit "#{user_path user}/history?after=#{changeset0.id}"
113 assert_link "1st-changeset-in-history"
114 assert_link "2nd-changeset-in-history"
118 test "update sidebar when before param is included and map is moved" do
119 changeset1 = create(:changeset, :num_changes => 1, :bbox => [5, 5, 5, 5])
120 create(:changeset_tag, :changeset => changeset1, :k => "comment", :v => "changeset-at-fives")
121 changeset2 = create(:changeset, :num_changes => 1, :bbox => [5.01, 5.01, 5.01, 5.01])
122 create(:changeset_tag, :changeset => changeset2, :k => "comment", :v => "changeset-close-to-fives")
123 changeset3 = create(:changeset)
125 visit "/history?before=#{changeset3.id}#map=17/5/5"
128 assert_link "changeset-at-fives"
129 assert_no_link "changeset-close-to-fives"
133 find_link("Zoom Out").click(:shift)
137 assert_link "changeset-at-fives"
138 assert_link "changeset-close-to-fives"
141 assert_current_path history_path
144 test "all changesets are listed when fully zoomed out" do
146 [-177, -90, 0, 90, 177].each do |lon|
147 create(:changeset, :user => user, :num_changes => 1, :bbox => [lon - 1, 0, lon + 1, 1]) do |changeset|
148 create(:changeset_tag, :changeset => changeset, :k => "comment", :v => "changeset-at-lon(#{lon})")
152 visit history_path(:anchor => "map=0/0/0")
155 assert_link "changeset-at-lon(-177)", :count => 1
156 assert_link "changeset-at-lon(-90)", :count => 1
157 assert_link "changeset-at-lon(0)", :count => 1
158 assert_link "changeset-at-lon(90)", :count => 1
159 assert_link "changeset-at-lon(177)", :count => 1
163 test "changesets at both sides of antimeridian are listed" do
166 create(:changeset, :user => user, :num_changes => 1, :bbox => [176, 0, 178, 1]) do |changeset|
167 create(:changeset_tag, :changeset => changeset, :k => "comment", :v => "West-of-antimeridian-changeset")
169 create(:changeset, :user => user, :num_changes => 1, :bbox => [-178, 0, -176, 1]) do |changeset|
170 create(:changeset_tag, :changeset => changeset, :k => "comment", :v => "East-of-antimeridian-changeset")
174 visit history_path(:anchor => "map=6/0/179")
177 assert_link "West-of-antimeridian-changeset", :count => PAGE_SIZE / 2
178 assert_link "East-of-antimeridian-changeset", :count => PAGE_SIZE / 2
180 click_on "Older Changesets"
182 assert_link "West-of-antimeridian-changeset", :count => PAGE_SIZE
183 assert_link "East-of-antimeridian-changeset", :count => PAGE_SIZE
187 test "changeset bbox is shown on the map and clickable" do
189 changeset = create(:changeset, :user => user, :num_changes => 1, :bbox => [50, 50, 51, 51])
190 create(:changeset_tag, :changeset => changeset, :k => "comment", :v => "Clickable changeset")
192 visit "#{user_path(user)}/history"
195 assert_link "Clickable changeset"
198 find_by_id("map").click
200 assert_current_path changeset_path(changeset)
205 def create_visible_changeset(user, comment)
206 create(:changeset, :user => user, :num_changes => 1) do |changeset|
207 create(:changeset_tag, :changeset => changeset, :k => "comment", :v => comment)