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)