]> git.openstreetmap.org Git - rails.git/blob - test/system/history_test.rb
Localisation updates from https://translatewiki.net.
[rails.git] / test / system / history_test.rb
1 require "application_system_test_case"
2
3 class HistoryTest < ApplicationSystemTestCase
4   PAGE_SIZE = 20
5
6   test "atom link on user's history is not modified" do
7     user = create(:user)
8     create(:changeset, :user => user, :num_changes => 1) do |changeset|
9       create(:changeset_tag, :changeset => changeset, :k => "comment", :v => "first-changeset-in-history")
10     end
11
12     visit "#{user_path(user)}/history"
13
14     within_sidebar do
15       assert_text "first-changeset-in-history"
16     end
17
18     assert_css "link[type='application/atom+xml'][href$='#{user_path(user)}/history/feed']", :visible => false
19   end
20
21   test "have only one list element on user's changesets page" do
22     user = create(:user)
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")
27     end
28     create_visible_changeset(user, "bottom-changeset-in-batch-1")
29     (PAGE_SIZE - 1).times do
30       create_visible_changeset(user, "next-changeset")
31     end
32
33     assert_nothing_raised do
34       visit "#{user_path(user)}/history"
35
36       within_sidebar do
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
42
43         click_on "Older Changesets"
44
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
50
51         click_on "Older Changesets"
52
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
58       end
59     end
60   end
61
62   test "user history starts before specified changeset" do
63     user = create(:user)
64     changeset1 = create_visible_changeset(user, "1st-changeset-in-history")
65     changeset2 = create_visible_changeset(user, "2nd-changeset-in-history")
66     changeset3 = create(:changeset)
67
68     visit "#{user_path user}/history?before=#{changeset1.id}"
69
70     within_sidebar do
71       assert_no_link "1st-changeset-in-history"
72       assert_no_link "2nd-changeset-in-history"
73     end
74
75     visit "#{user_path user}/history?before=#{changeset2.id}"
76
77     within_sidebar do
78       assert_link "1st-changeset-in-history"
79       assert_no_link "2nd-changeset-in-history"
80     end
81
82     visit "#{user_path user}/history?before=#{changeset3.id}"
83
84     within_sidebar do
85       assert_link "1st-changeset-in-history"
86       assert_link "2nd-changeset-in-history"
87     end
88   end
89
90   test "user history starts after specified changeset" do
91     user = create(:user)
92     changeset0 = create(:changeset)
93     changeset1 = create_visible_changeset(user, "1st-changeset-in-history")
94     changeset2 = create_visible_changeset(user, "2nd-changeset-in-history")
95
96     visit "#{user_path user}/history?after=#{changeset2.id}"
97
98     within_sidebar do
99       assert_no_link "1st-changeset-in-history"
100       assert_no_link "2nd-changeset-in-history"
101     end
102
103     visit "#{user_path user}/history?after=#{changeset1.id}"
104
105     within_sidebar do
106       assert_no_link "1st-changeset-in-history"
107       assert_link "2nd-changeset-in-history"
108     end
109
110     visit "#{user_path user}/history?after=#{changeset0.id}"
111
112     within_sidebar do
113       assert_link "1st-changeset-in-history"
114       assert_link "2nd-changeset-in-history"
115     end
116   end
117
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)
124
125     visit "/history?before=#{changeset3.id}#map=17/5/5"
126
127     within_sidebar do
128       assert_link "changeset-at-fives"
129       assert_no_link "changeset-close-to-fives"
130     end
131
132     find("#map [aria-label='Zoom Out']").click(:shift)
133
134     within_sidebar do
135       assert_link "changeset-at-fives"
136       assert_link "changeset-close-to-fives"
137     end
138
139     assert_current_path history_path
140   end
141
142   test "all changesets are listed when fully zoomed out" do
143     user = create(:user)
144     [-177, -90, 0, 90, 177].each do |lon|
145       create(:changeset, :user => user, :num_changes => 1, :bbox => [lon - 1, 0, lon + 1, 1]) do |changeset|
146         create(:changeset_tag, :changeset => changeset, :k => "comment", :v => "changeset-at-lon(#{lon})")
147       end
148     end
149
150     visit history_path(:anchor => "map=0/0/0")
151
152     within_sidebar do
153       assert_link "changeset-at-lon(-177)", :count => 1
154       assert_link "changeset-at-lon(-90)", :count => 1
155       assert_link "changeset-at-lon(0)", :count => 1
156       assert_link "changeset-at-lon(90)", :count => 1
157       assert_link "changeset-at-lon(177)", :count => 1
158     end
159   end
160
161   test "changesets at both sides of antimeridian are listed" do
162     user = create(:user)
163     PAGE_SIZE.times do
164       create(:changeset, :user => user, :num_changes => 1, :bbox => [176, 0, 178, 1]) do |changeset|
165         create(:changeset_tag, :changeset => changeset, :k => "comment", :v => "West-of-antimeridian-changeset")
166       end
167       create(:changeset, :user => user, :num_changes => 1, :bbox => [-178, 0, -176, 1]) do |changeset|
168         create(:changeset_tag, :changeset => changeset, :k => "comment", :v => "East-of-antimeridian-changeset")
169       end
170     end
171
172     visit history_path(:anchor => "map=6/0/179")
173
174     within_sidebar do
175       assert_link "West-of-antimeridian-changeset", :count => PAGE_SIZE / 2
176       assert_link "East-of-antimeridian-changeset", :count => PAGE_SIZE / 2
177
178       click_on "Older Changesets"
179
180       assert_link "West-of-antimeridian-changeset", :count => PAGE_SIZE
181       assert_link "East-of-antimeridian-changeset", :count => PAGE_SIZE
182     end
183   end
184
185   test "changeset bbox is shown on the map and clickable" do
186     user = create(:user)
187     changeset = create(:changeset, :user => user, :num_changes => 1, :bbox => [50, 50, 51, 51])
188     create(:changeset_tag, :changeset => changeset, :k => "comment", :v => "Clickable changeset")
189
190     visit "#{user_path(user)}/history"
191
192     within_sidebar do
193       assert_link "Clickable changeset"
194     end
195
196     find_by_id("map").click
197
198     assert_current_path changeset_path(changeset)
199   end
200
201   private
202
203   def create_visible_changeset(user, comment)
204     create(:changeset, :user => user, :num_changes => 1) do |changeset|
205       create(:changeset_tag, :changeset => changeset, :k => "comment", :v => comment)
206     end
207   end
208 end