X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/bed9cd00ed166ce346da4b8a9b654ddf86e64e70..be75a1504f3c9a49b6cbf4e83c35339f45390628:/test/functional/changeset_controller_test.rb diff --git a/test/functional/changeset_controller_test.rb b/test/functional/changeset_controller_test.rb index edc2aee93..4c98fb36d 100644 --- a/test/functional/changeset_controller_test.rb +++ b/test/functional/changeset_controller_test.rb @@ -553,6 +553,84 @@ EOF "shouldn't be able to re-use placeholder IDs" end + ## + # test what happens if a diff is uploaded containing only a node + # move. + def test_upload_node_move + basic_authorization "test@openstreetmap.org", "test" + + content "" + + "" + + "" + put :create + assert_response :success + changeset_id = @response.body.to_i + + old_node = current_nodes(:visible_node) + + diff = XML::Document.new + diff.root = XML::Node.new "osmChange" + modify = XML::Node.new "modify" + xml_old_node = old_node.to_xml_node + xml_old_node["lat"] = (2.0).to_s + xml_old_node["lon"] = (2.0).to_s + xml_old_node["changeset"] = changeset_id.to_s + modify << xml_old_node + diff.root << modify + + # upload it + content diff + post :upload, :id => changeset_id + assert_response :success, + "diff should have uploaded OK" + + # check the bbox + changeset = Changeset.find(changeset_id) + assert_equal 1*SCALE, changeset.min_lon, "min_lon should be 1 degree" + assert_equal 2*SCALE, changeset.max_lon, "max_lon should be 2 degrees" + assert_equal 1*SCALE, changeset.min_lat, "min_lat should be 1 degree" + assert_equal 2*SCALE, changeset.max_lat, "max_lat should be 2 degrees" + end + + ## + # test what happens if a diff is uploaded adding a node to a way. + def test_upload_way_extend + basic_authorization "test@openstreetmap.org", "test" + + content "" + + "" + + "" + put :create + assert_response :success + changeset_id = @response.body.to_i + + old_way = current_ways(:visible_way) + + diff = XML::Document.new + diff.root = XML::Node.new "osmChange" + modify = XML::Node.new "modify" + xml_old_way = old_way.to_xml_node + nd_ref = XML::Node.new "nd" + nd_ref["ref"] = current_nodes(:visible_node).id.to_s + xml_old_way << nd_ref + xml_old_way["changeset"] = changeset_id.to_s + modify << xml_old_way + diff.root << modify + + # upload it + content diff + post :upload, :id => changeset_id + assert_response :success, + "diff should have uploaded OK" + + # check the bbox + changeset = Changeset.find(changeset_id) + assert_equal 1*SCALE, changeset.min_lon, "min_lon should be 1 degree" + assert_equal 3*SCALE, changeset.max_lon, "max_lon should be 3 degrees" + assert_equal 1*SCALE, changeset.min_lat, "min_lat should be 1 degree" + assert_equal 3*SCALE, changeset.max_lat, "max_lat should be 3 degrees" + end + ## # test for more issues in #1568 def test_upload_empty_invalid @@ -773,7 +851,7 @@ EOF assert_select "osm>changeset[min_lat=1.0]", 1 assert_select "osm>changeset[max_lat=2.0]", 1 - # add (delete) a way to it + # add (delete) a way to it, which contains a point at (3,3) with_controller(WayController.new) do content update_changeset(current_ways(:visible_way).to_xml, changeset_id) @@ -784,6 +862,7 @@ EOF # get the bounding box back from the changeset get :read, :id => changeset_id assert_response :success, "Couldn't read back changeset for the third time." + # note that the 3.1 here is because of the bbox overexpansion assert_select "osm>changeset[min_lon=1.0]", 1 assert_select "osm>changeset[max_lon=3.1]", 1 assert_select "osm>changeset[min_lat=1.0]", 1 @@ -995,6 +1074,21 @@ EOF "element limit.") end + # This should display the last 20 changesets closed. + def test_list + @changesets = Changeset.find(:all, :order => "created_at DESC", :conditions => ['min_lat IS NOT NULL'], :limit=> 20) + assert @changesets.size <= 20 + get :list + assert_response :success + assert_template "list" + # Now check that all 20 (or however many were returned) changesets are in the html + assert_select "h1", :text => "Recent Changes", :count => 1 + assert_select "table[id='keyvalue'] tr", :count => @changesets.size + 1 + @changesets.each do |changeset| + # FIXME this test needs rewriting - test for table contents + end + end + #------------------------------------------------------------ # utility functions #------------------------------------------------------------