X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/2bcdf9abaa6e6892d4b30241465293e2bd10ceb7..124ec2e9d560e0df291e5a8e5aa67ef5db2f5d46:/test/controllers/changeset_controller_test.rb diff --git a/test/controllers/changeset_controller_test.rb b/test/controllers/changeset_controller_test.rb index 50a66744a..c12f1d902 100644 --- a/test/controllers/changeset_controller_test.rb +++ b/test/controllers/changeset_controller_test.rb @@ -2,8 +2,6 @@ require "test_helper" require "changeset_controller" class ChangesetControllerTest < ActionController::TestCase - api_fixtures - ## # test all routes which lead to this controller def test_routes @@ -329,22 +327,22 @@ class ChangesetControllerTest < ActionController::TestCase # simple diff to change a node, way and relation by removing # their tags - diff = < - - - - - - - - - - - - - - + diff = < + + + + + + + + + + + + + + EOF # upload it @@ -359,22 +357,22 @@ EOF # simple diff to change a node, way and relation by removing # their tags - diff = < - - - - - - - - - - - - - - + diff = < + + + + + + + + + + + + + + EOF # upload it @@ -389,22 +387,22 @@ EOF # simple diff to change a node, way and relation by removing # their tags - diff = < - - - - - - - - - - - - - - + diff = < + + + + + + + + + + + + + + EOF # upload it @@ -424,29 +422,32 @@ EOF def test_upload_create_valid user = create(:user) changeset = create(:changeset, :user => user) + node = create(:node) + way = create(:way_with_nodes, :nodes_count => 2) + relation = create(:relation) basic_authorization user.email, "test" # simple diff to create a node way and relation using placeholders - diff = < - - - - - - - - - - - - - - - - - + diff = < + + + + + + + + + + + + + + + + + EOF # upload it @@ -508,7 +509,7 @@ EOF delete << used_node.to_xml_node # update the changeset to one that this user owns - %w(node way relation).each do |type| + %w[node way relation].each do |type| delete.find("//osmChange/delete/#{type}").each do |n| n["changeset"] = changeset.id.to_s end @@ -581,29 +582,29 @@ EOF # upload some widely-spaced nodes, spiralling positive and negative to cause # largest bbox over-expansion possible. - diff = < - - - - - - - - - - - - - - - - - - - - - + diff = < + + + + + + + + + + + + + + + + + + + + + EOF # upload it, which used to cause an error like "PGError: ERROR: @@ -644,7 +645,7 @@ EOF delete << used_node.to_xml_node # update the changeset to one that this user owns - %w(node way relation).each do |type| + %w[node way relation].each do |type| delete.find("//osmChange/delete/#{type}").each do |n| n["changeset"] = changeset.id.to_s end @@ -688,7 +689,7 @@ EOF delete << used_node.to_xml_node # update the changeset to one that this user owns - %w(node way relation).each do |type| + %w[node way relation].each do |type| delete.find("//osmChange/delete/#{type}").each do |n| n["changeset"] = changeset.id.to_s end @@ -738,14 +739,14 @@ EOF basic_authorization changeset.user.email, "test" # simple diff to create a node way and relation using placeholders - diff = < - - - - - - + diff = < + + + + + + EOF # upload it @@ -769,26 +770,26 @@ EOF basic_authorization changeset.user.email, "test" # simple diff to create a node way and relation using placeholders - diff = < - - - - - - - - - - - - - - - - - - + diff = < + + + + + + + + + + + + + + + + + + EOF # upload it @@ -831,28 +832,28 @@ EOF basic_authorization changeset.user.email, "test" # simple diff to create a node way and relation using placeholders - diff = < - - - - - - - - - - - - - - - - - - - - + diff = < + + + + + + + + + + + + + + + + + + + + EOF # upload it @@ -870,25 +871,26 @@ EOF ## # upload multiple versions of the same element in the same diff. def test_upload_multiple_valid + node = create(:node) changeset = create(:changeset) basic_authorization changeset.user.email, "test" # change the location of a node multiple times, each time referencing # the last version. doesn't this depend on version numbers being # sequential? - diff = < - - - - - - - - - - - + diff = < + + + + + + + + + + + EOF # upload it @@ -907,17 +909,18 @@ EOF # upload multiple versions of the same element in the same diff, but # keep the version numbers the same. def test_upload_multiple_duplicate + node = create(:node) changeset = create(:changeset) basic_authorization changeset.user.email, "test" - diff = < - - - - - + diff = < + + + + + EOF # upload it @@ -934,12 +937,12 @@ EOF basic_authorization changeset.user.email, "test" - diff = < - - - - + diff = < + + + + EOF # upload it @@ -956,12 +959,12 @@ EOF basic_authorization changeset.user.email, "test" - diff = < - - - - + diff = < + + + + EOF content diff post :upload, :id => changeset.id @@ -982,18 +985,18 @@ EOF basic_authorization changeset.user.email, "test" - diff = < - - - - - - - + diff = < + + + + + + + EOF # upload it @@ -1018,20 +1021,20 @@ EOF basic_authorization changeset.user.email, "test" - diff = < - - - - - - - - - - - - + diff = < + + + + + + + + + + + + EOF # upload it @@ -1053,14 +1056,14 @@ EOF basic_authorization changeset.user.email, "test" - diff = < - - - - - - + diff = < + + + + + + EOF # upload it @@ -1079,20 +1082,20 @@ EOF basic_authorization changeset.user.email, "test" - diff = < - - - - - - - - - - - - + diff = < + + + + + + + + + + + + EOF # upload it @@ -1103,20 +1106,20 @@ EOF assert_equal "Placeholder node not found for reference -4 in way -1", @response.body # the same again, but this time use an existing way - diff = < - - - - - - - - - - - - + diff = < + + + + + + + + + + + + EOF # upload it @@ -1136,20 +1139,20 @@ EOF basic_authorization changeset.user.email, "test" - diff = < - - - - - - - - - - - - + diff = < + + + + + + + + + + + + EOF # upload it @@ -1160,20 +1163,20 @@ EOF assert_equal "Placeholder Node not found for reference -4 in relation -1.", @response.body # the same again, but this time use an existing relation - diff = < - - - - - - - - - - - - + diff = < + + + + + + + + + + + + EOF # upload it @@ -1315,6 +1318,8 @@ EOF # when we make some simple changes we get the same changes back from the # diff download. def test_diff_download_simple + node = create(:node) + ## First try with a non-public user, which should get a forbidden basic_authorization(create(:user, :data_public => false).email, "test") @@ -1337,19 +1342,19 @@ EOF changeset_id = @response.body.to_i # add a diff to it - diff = < - - - - - - - - - - - + diff = < + + + + + + + + + + + EOF # upload it @@ -1382,33 +1387,33 @@ EOF assert_response :success changeset_id = @response.body.to_i - diff = < - - - - - - - - - - - - - - - - - - - - - - - - - + diff = < + + + + + + + + + + + + + + + + + + + + + + + + + OSMFILE # upload it @@ -1431,6 +1436,9 @@ OSMFILE # when we make some complex changes we get the same changes back from the # diff download. def test_diff_download_complex + node = create(:node) + node2 = create(:node) + way = create(:way) basic_authorization(create(:user).email, "test") # create a temporary changeset @@ -1442,26 +1450,26 @@ OSMFILE changeset_id = @response.body.to_i # add a diff to it - diff = < - - - - - - - - - - - - - - - - - - + diff = < + + + + + + + + + + + + + + + + + + EOF # upload it @@ -1630,14 +1638,16 @@ EOF user = create(:user) changeset = create(:changeset, :user => user) closed_changeset = create(:changeset, :closed, :user => user, :created_at => Time.utc(2008, 1, 1, 0, 0, 0), :closed_at => Time.utc(2008, 1, 2, 0, 0, 0)) + changeset2 = create(:changeset, :min_lat => 5 * GeoRecord::SCALE, :min_lon => 5 * GeoRecord::SCALE, :max_lat => 15 * GeoRecord::SCALE, :max_lon => 15 * GeoRecord::SCALE) + changeset3 = create(:changeset, :min_lat => 4.5 * GeoRecord::SCALE, :min_lon => 4.5 * GeoRecord::SCALE, :max_lat => 5 * GeoRecord::SCALE, :max_lon => 5 * GeoRecord::SCALE) get :query, :bbox => "-10,-10, 10, 10" assert_response :success, "can't get changesets in bbox" - assert_changesets [1, 4, 6] + assert_changesets [changeset2, changeset3] get :query, :bbox => "4.5,4.5,4.6,4.6" assert_response :success, "can't get changesets in bbox" - assert_changesets [1] + assert_changesets [changeset3] # not found when looking for changesets of non-existing users get :query, :user => User.maximum(:id) + 1 @@ -1655,11 +1665,11 @@ EOF basic_authorization private_user.email, "test" get :query, :user => private_user.id assert_response :success, "can't get changesets by user ID" - assert_changesets [private_user_changeset.id, private_user_closed_changeset.id] + assert_changesets [private_user_changeset, private_user_closed_changeset] get :query, :display_name => private_user.display_name assert_response :success, "can't get changesets by user name" - assert_changesets [private_user_changeset.id, private_user_closed_changeset.id] + assert_changesets [private_user_changeset, private_user_closed_changeset] # check that the correct error is given when we provide both UID and name get :query, :user => private_user.id, :display_name => private_user.display_name @@ -1667,39 +1677,39 @@ EOF get :query, :user => private_user.id, :open => true assert_response :success, "can't get changesets by user and open" - assert_changesets [private_user_changeset.id] + assert_changesets [private_user_changeset] get :query, :time => "2007-12-31" assert_response :success, "can't get changesets by time-since" - assert_changesets [1, 2, 4, 5, 6, private_user_changeset.id, private_user_closed_changeset.id, changeset.id, closed_changeset.id] + assert_changesets [private_user_changeset, private_user_closed_changeset, changeset, closed_changeset, changeset2, changeset3] get :query, :time => "2008-01-01T12:34Z" assert_response :success, "can't get changesets by time-since with hour" - assert_changesets [1, 2, 4, 5, 6, private_user_changeset.id, private_user_closed_changeset.id, changeset.id, closed_changeset.id] + assert_changesets [private_user_changeset, private_user_closed_changeset, changeset, closed_changeset, changeset2, changeset3] get :query, :time => "2007-12-31T23:59Z,2008-01-02T00:01Z" assert_response :success, "can't get changesets by time-range" - assert_changesets [1, 5, 6, closed_changeset.id] + assert_changesets [closed_changeset] get :query, :open => "true" assert_response :success, "can't get changesets by open-ness" - assert_changesets [1, 2, 4, private_user_changeset.id, changeset.id] + assert_changesets [private_user_changeset, changeset, changeset2, changeset3] get :query, :closed => "true" assert_response :success, "can't get changesets by closed-ness" - assert_changesets [3, 5, 6, 7, 8, 9, private_user_closed_changeset.id, closed_changeset.id] + assert_changesets [private_user_closed_changeset, closed_changeset] get :query, :closed => "true", :user => private_user.id assert_response :success, "can't get changesets by closed-ness and user" - assert_changesets [private_user_closed_changeset.id] + assert_changesets [private_user_closed_changeset] get :query, :closed => "true", :user => user.id assert_response :success, "can't get changesets by closed-ness and user" - assert_changesets [closed_changeset.id] + assert_changesets [closed_changeset] get :query, :changesets => "#{private_user_changeset.id},#{changeset.id},#{closed_changeset.id}" assert_response :success, "can't get changesets by id (as comma-separated string)" - assert_changesets [private_user_changeset.id, changeset.id, closed_changeset.id] + assert_changesets [private_user_changeset, changeset, closed_changeset] get :query, :changesets => "" assert_response :bad_request, "should be a bad request since changesets is empty" @@ -2034,9 +2044,10 @@ EOF end ## - # This should display the last 20 changesets closed + # This should display the last 20 non-empty changesets def test_feed changeset = create(:changeset, :num_changes => 1) + closed_changeset = create(:changeset, :closed, :num_changes => 1) _empty_changeset = create(:changeset, :num_changes => 0) get :feed, :format => :atom @@ -2044,7 +2055,7 @@ EOF assert_template "list" assert_equal "application/atom+xml", response.content_type - check_feed_result([changeset]) + check_feed_result([changeset, closed_changeset]) end ## @@ -2429,10 +2440,10 @@ EOF ## # boilerplate for checking that certain changesets exist in the # output. - def assert_changesets(ids) - assert_select "osm>changeset", ids.size - ids.each do |id| - assert_select "osm>changeset[id='#{id}']", 1 + def assert_changesets(changesets) + assert_select "osm>changeset", changesets.size + changesets.each do |changeset| + assert_select "osm>changeset[id='#{changeset.id}']", 1 end end