X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/ef7f3d800cbdd49b692df10d312e5fd880e2e938..93fb360a08e388997e402faa6d5804580b11b1c5:/test/controllers/changeset_controller_test.rb diff --git a/test/controllers/changeset_controller_test.rb b/test/controllers/changeset_controller_test.rb index 07b06e675..1be10ec2a 100644 --- a/test/controllers/changeset_controller_test.rb +++ b/test/controllers/changeset_controller_test.rb @@ -1,5 +1,5 @@ -require 'test_helper' -require 'changeset_controller' +require "test_helper" +require "changeset_controller" class ChangesetControllerTest < ActionController::TestCase api_fixtures @@ -180,6 +180,7 @@ class ChangesetControllerTest < ActionController::TestCase # document structure. def test_read changeset_id = changesets(:normal_user_first_change).id + get :read, :id => changeset_id assert_response :success, "cannot get first changeset" @@ -193,6 +194,17 @@ class ChangesetControllerTest < ActionController::TestCase assert_select "osm[version='#{API_VERSION}'][generator='OpenStreetMap server']", 1 assert_select "osm>changeset[id='#{changeset_id}']", 1 assert_select "osm>changeset>discussion", 1 + assert_select "osm>changeset>discussion>comment", 0 + + changeset_id = changesets(:normal_user_closed_change).id + + get :read, :id => changeset_id, :include_discussion => true + assert_response :success, "cannot get closed changeset with comments" + + assert_select "osm[version='#{API_VERSION}'][generator='OpenStreetMap server']", 1 + assert_select "osm>changeset[id='#{changeset_id}']", 1 + assert_select "osm>changeset>discussion", 1 + assert_select "osm>changeset>discussion>comment", 3 end ## @@ -464,7 +476,7 @@ EOF changeset_id = changesets(:public_user_first_change).id %w(node way relation).each do |type| delete.find("//osmChange/delete/#{type}").each do |n| - n['changeset'] = changeset_id.to_s + n["changeset"] = changeset_id.to_s end end @@ -517,11 +529,10 @@ EOF content "" + "" + "" - assert_difference('Changeset.count', 1) do + assert_difference "Changeset.count", 1 do put :create end assert_response :success - changeset_id = @response.body.to_i end end @@ -727,7 +738,7 @@ EOF assert_equal 2, Node.find(new_node_id).tags.size, "new node should have two tags" assert_equal [new_node_id, 3], Way.find(1).nds, "way nodes should match" Relation.find(1).members.each do |type, id, _role| - if type == 'node' + if type == "node" assert_equal new_node_id, id, "relation should contain new node" end end @@ -778,6 +789,7 @@ EOF # check that objects are unmodified assert_nodes_are_equal(node, Node.find(1)) assert_ways_are_equal(way, Way.find(1)) + assert_relations_are_equal(rel, Relation.find(1)) end ## @@ -1381,7 +1393,7 @@ EOF assert_response :success assert_template nil # print @response.body - # FIXME needs more assert_select tests + # FIXME: needs more assert_select tests assert_select "osmChange[version='#{API_VERSION}'][generator='#{GENERATOR}']" do assert_select "create", :count => 5 assert_select "create>node[id='#{nodes(:used_node_2).node_id}'][visible='#{nodes(:used_node_2).visible?}'][version='#{nodes(:used_node_2).version}']" do @@ -1393,7 +1405,7 @@ EOF ## # check that the bounding box of a changeset gets updated correctly - ## FIXME: This should really be moded to a integration test due to the with_controller + # FIXME: This should really be moded to a integration test due to the with_controller def test_changeset_bbox basic_authorization users(:public_user).email, "test" @@ -1544,39 +1556,39 @@ EOF assert_response :success, "can't get changesets by user and open" assert_changesets [1] - get :query, :time => '2007-12-31' + get :query, :time => "2007-12-31" assert_response :success, "can't get changesets by time-since" assert_changesets [1, 2, 4, 5, 6] - get :query, :time => '2008-01-01T12:34Z' + 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] - get :query, :time => '2007-12-31T23:59Z,2008-01-01T00:01Z' + get :query, :time => "2007-12-31T23:59Z,2008-01-01T00:01Z" assert_response :success, "can't get changesets by time-range" assert_changesets [1, 5, 6] - get :query, :open => 'true' + get :query, :open => "true" assert_response :success, "can't get changesets by open-ness" assert_changesets [1, 2, 4] - get :query, :closed => 'true' + get :query, :closed => "true" assert_response :success, "can't get changesets by closed-ness" assert_changesets [3, 5, 6, 7, 8] - get :query, :closed => 'true', :user => users(:normal_user).id + get :query, :closed => "true", :user => users(:normal_user).id assert_response :success, "can't get changesets by closed-ness and user" assert_changesets [3, 6, 8] - get :query, :closed => 'true', :user => users(:public_user).id + get :query, :closed => "true", :user => users(:public_user).id assert_response :success, "can't get changesets by closed-ness and user" assert_changesets [7] - get :query, :changesets => '1,2,3' + get :query, :changesets => "1,2,3" assert_response :success, "can't get changesets by id (as comma-separated string)" assert_changesets [1, 2, 3] - get :query, :changesets => '' + get :query, :changesets => "" assert_response :bad_request, "should be a bad request since changesets is empty" end @@ -1619,8 +1631,8 @@ EOF changeset = changesets(:normal_user_first_change) new_changeset = changeset.to_xml new_tag = XML::Node.new "tag" - new_tag['k'] = "tagtesting" - new_tag['v'] = "valuetesting" + new_tag["k"] = "tagtesting" + new_tag["v"] = "valuetesting" new_changeset.find("//osm/changeset").first << new_tag content new_changeset @@ -1642,8 +1654,8 @@ EOF changeset = changesets(:public_user_first_change) new_changeset = changeset.to_xml new_tag = XML::Node.new "tag" - new_tag['k'] = "tagtesting" - new_tag['v'] = "valuetesting" + new_tag["k"] = "tagtesting" + new_tag["v"] = "valuetesting" new_changeset.find("//osm/changeset").first << new_tag content new_changeset @@ -1676,8 +1688,8 @@ EOF changeset = changesets(:normal_user_first_change) new_changeset = changeset.to_xml new_tag = XML::Node.new "tag" - new_tag['k'] = "testing" - new_tag['v'] = "testing" + new_tag["k"] = "testing" + new_tag["v"] = "testing" new_changeset.find("//osm/changeset").first << new_tag content new_changeset @@ -1719,9 +1731,9 @@ EOF # loop until we fill the changeset with nodes offset.times do |i| - node_xml['lat'] = rand.to_s - node_xml['lon'] = rand.to_s - node_xml['version'] = (i + 1).to_s + node_xml["lat"] = rand.to_s + node_xml["lon"] = rand.to_s + node_xml["version"] = (i + 1).to_s content node_doc put :update, :id => node_id @@ -1729,9 +1741,9 @@ EOF end # trying again should fail - node_xml['lat'] = rand.to_s - node_xml['lon'] = rand.to_s - node_xml['version'] = offset.to_s + node_xml["lat"] = rand.to_s + node_xml["lon"] = rand.to_s + node_xml["version"] = offset.to_s content node_doc put :update, :id => node_id @@ -1756,7 +1768,7 @@ EOF assert_template :layout => "map" assert_select "h2", :text => "Changesets", :count => 1 - get :list, :format => "html", :list => '1', :bbox => '-180,-90,90,180' + get :list, :format => "html", :list => "1", :bbox => "-180,-90,90,180" assert_response :success assert_template "list" @@ -1769,7 +1781,7 @@ EOF # Now check that all 20 (or however many were returned) changesets are in the html assert_select "li", :count => changesets.size changesets.each do |_changeset| - # FIXME this test needs rewriting - test for table contents + # FIXME: this test needs rewriting - test for table contents end end @@ -1782,7 +1794,7 @@ EOF assert_template :layout => "xhr" assert_select "h2", :text => "Changesets", :count => 1 - get :list, :format => "html", :list => '1', :bbox => '-180,-90,90,180' + get :list, :format => "html", :list => "1", :bbox => "-180,-90,90,180" assert_response :success assert_template "list" @@ -1795,7 +1807,7 @@ EOF # Now check that all 20 (or however many were returned) changesets are in the html assert_select "li", :count => changesets.size changesets.each do |_changeset| - # FIXME this test needs rewriting - test for table contents + # FIXME: this test needs rewriting - test for table contents end end @@ -1806,7 +1818,7 @@ EOF get :list, :format => "html", :display_name => user.display_name assert_response :success assert_template "history" - ## FIXME need to add more checks to see which if edits are actually shown if your data is public + # FIXME: need to add more checks to see which if edits are actually shown if your data is public end ## @@ -1814,7 +1826,7 @@ EOF def test_list_user_not_found get :list, :format => "html", :display_name => "Some random user" assert_response :not_found - assert_template 'user/no_such_user' + assert_template "user/no_such_user" end ## @@ -1829,7 +1841,7 @@ EOF assert_select "feed", :count => 1 assert_select "entry", :count => changesets.size changesets.each do |_changeset| - # FIXME this test needs rewriting - test for feed contents + # FIXME: this test needs rewriting - test for feed contents end end @@ -1841,7 +1853,7 @@ EOF assert_response :success assert_template "list" assert_equal "application/atom+xml", response.content_type - ## FIXME need to add more checks to see which if edits are actually shown if your data is public + # FIXME: need to add more checks to see which if edits are actually shown if your data is public end ## @@ -1870,44 +1882,81 @@ EOF ## # create comment success def test_create_comment_success - basic_authorization(users(:public_user).email, 'test') + basic_authorization(users(:public_user).email, "test") + + assert_difference "ChangesetComment.count", 1 do + assert_no_difference "ActionMailer::Base.deliveries.size" do + post :comment, :id => changesets(:normal_user_closed_change).id, :text => "This is a comment" + end + end + assert_response :success - assert_difference('ChangesetComment.count') do - post :comment, :id => changesets(:normal_user_closed_change).id, :text => 'This is a comment' + assert_difference "ChangesetComment.count", 1 do + assert_difference "ActionMailer::Base.deliveries.size", 1 do + post :comment, :id => changesets(:normal_user_subscribed_change).id, :text => "This is a comment" + end end assert_response :success + + email = ActionMailer::Base.deliveries.first + assert_equal 1, email.to.length + assert_equal "[OpenStreetMap] test2 has commented on one of your changesets", email.subject + assert_equal "test@openstreetmap.org", email.to.first + + ActionMailer::Base.deliveries.clear + + basic_authorization(users(:second_public_user).email, "test") + + assert_difference "ChangesetComment.count", 1 do + assert_difference "ActionMailer::Base.deliveries.size", 2 do + post :comment, :id => changesets(:normal_user_subscribed_change).id, :text => "This is a comment" + end + end + assert_response :success + + email = ActionMailer::Base.deliveries.find { |e| e.to.first == "test@openstreetmap.org" } + assert_not_nil email + assert_equal 1, email.to.length + assert_equal "[OpenStreetMap] pulibc_test2 has commented on one of your changesets", email.subject + + email = ActionMailer::Base.deliveries.find { |e| e.to.first == "test@example.com" } + assert_not_nil email + assert_equal 1, email.to.length + assert_equal "[OpenStreetMap] pulibc_test2 has commented on a changeset you are interested in", email.subject + + ActionMailer::Base.deliveries.clear end ## # create comment fail def test_create_comment_fail # unauthorized - post :comment, :id => changesets(:normal_user_closed_change).id, :text => 'This is a comment' + post :comment, :id => changesets(:normal_user_closed_change).id, :text => "This is a comment" assert_response :unauthorized - basic_authorization(users(:public_user).email, 'test') + basic_authorization(users(:public_user).email, "test") # bad changeset id - assert_no_difference('ChangesetComment.count') do - post :comment, :id => 999111, :text => 'This is a comment' + assert_no_difference "ChangesetComment.count" do + post :comment, :id => 999111, :text => "This is a comment" end assert_response :not_found # not closed changeset - assert_no_difference('ChangesetComment.count') do - post :comment, :id => changesets(:normal_user_first_change).id, :text => 'This is a comment' + assert_no_difference "ChangesetComment.count" do + post :comment, :id => changesets(:normal_user_first_change).id, :text => "This is a comment" end assert_response :conflict # no text - assert_no_difference('ChangesetComment.count') do + assert_no_difference "ChangesetComment.count" do post :comment, :id => changesets(:normal_user_closed_change).id end assert_response :bad_request # empty text - assert_no_difference('ChangesetComment.count') do - post :comment, :id => changesets(:normal_user_closed_change).id, :text => '' + assert_no_difference "ChangesetComment.count" do + post :comment, :id => changesets(:normal_user_closed_change).id, :text => "" end assert_response :bad_request end @@ -1915,10 +1964,10 @@ EOF ## # test subscribe success def test_subscribe_success - basic_authorization(users(:public_user).email, 'test') + basic_authorization(users(:public_user).email, "test") changeset = changesets(:normal_user_closed_change) - assert_difference('changeset.subscribers.count') do + assert_difference "changeset.subscribers.count", 1 do post :subscribe, :id => changeset.id end assert_response :success @@ -1929,29 +1978,29 @@ EOF def test_subscribe_fail # unauthorized changeset = changesets(:normal_user_closed_change) - assert_no_difference('changeset.subscribers.count') do + assert_no_difference "changeset.subscribers.count" do post :subscribe, :id => changeset.id end assert_response :unauthorized - basic_authorization(users(:public_user).email, 'test') + basic_authorization(users(:public_user).email, "test") # bad changeset id - assert_no_difference('changeset.subscribers.count') do + assert_no_difference "changeset.subscribers.count" do post :subscribe, :id => 999111 end assert_response :not_found # not closed changeset changeset = changesets(:normal_user_first_change) - assert_no_difference('changeset.subscribers.count') do + assert_no_difference "changeset.subscribers.count" do post :subscribe, :id => changeset.id end assert_response :conflict # trying to subscribe when already subscribed changeset = changesets(:normal_user_subscribed_change) - assert_no_difference('changeset.subscribers.count') do + assert_no_difference "changeset.subscribers.count" do post :subscribe, :id => changeset.id end assert_response :conflict @@ -1960,10 +2009,10 @@ EOF ## # test unsubscribe success def test_unsubscribe_success - basic_authorization(users(:public_user).email, 'test') + basic_authorization(users(:public_user).email, "test") changeset = changesets(:normal_user_subscribed_change) - assert_difference('changeset.subscribers.count', -1) do + assert_difference "changeset.subscribers.count", -1 do post :unsubscribe, :id => changeset.id end assert_response :success @@ -1974,29 +2023,29 @@ EOF def test_unsubscribe_fail # unauthorized changeset = changesets(:normal_user_closed_change) - assert_no_difference('changeset.subscribers.count') do + assert_no_difference "changeset.subscribers.count" do post :unsubscribe, :id => changeset.id end assert_response :unauthorized - basic_authorization(users(:public_user).email, 'test') + basic_authorization(users(:public_user).email, "test") # bad changeset id - assert_no_difference('changeset.subscribers.count', -1) do + assert_no_difference "changeset.subscribers.count" do post :unsubscribe, :id => 999111 end assert_response :not_found # not closed changeset changeset = changesets(:normal_user_first_change) - assert_no_difference('changeset.subscribers.count', -1) do + assert_no_difference "changeset.subscribers.count" do post :unsubscribe, :id => changeset.id end assert_response :conflict # trying to unsubscribe when not subscribed changeset = changesets(:normal_user_closed_change) - assert_no_difference('changeset.subscribers.count') do + assert_no_difference "changeset.subscribers.count" do post :unsubscribe, :id => changeset.id end assert_response :not_found @@ -2007,20 +2056,20 @@ EOF def test_hide_comment_fail # unauthorized comment = changeset_comments(:normal_comment_1) - assert('comment.visible') do + assert("comment.visible") do post :hide_comment, :id => comment.id assert_response :unauthorized end - basic_authorization(users(:public_user).email, 'test') + basic_authorization(users(:public_user).email, "test") # not a moderator - assert('comment.visible') do + assert("comment.visible") do post :hide_comment, :id => comment.id assert_response :forbidden end - basic_authorization(users(:moderator_user).email, 'test') + basic_authorization(users(:moderator_user).email, "test") # bad comment id post :hide_comment, :id => 999111 @@ -2032,9 +2081,9 @@ EOF def test_hide_comment_success comment = changeset_comments(:normal_comment_1) - basic_authorization(users(:moderator_user).email, 'test') + basic_authorization(users(:moderator_user).email, "test") - assert('!comment.visible') do + assert("!comment.visible") do post :hide_comment, :id => comment.id end assert_response :success @@ -2045,20 +2094,20 @@ EOF def test_unhide_comment_fail # unauthorized comment = changeset_comments(:normal_comment_1) - assert('comment.visible') do + assert("comment.visible") do post :unhide_comment, :id => comment.id assert_response :unauthorized end - basic_authorization(users(:public_user).email, 'test') + basic_authorization(users(:public_user).email, "test") # not a moderator - assert('comment.visible') do + assert("comment.visible") do post :unhide_comment, :id => comment.id assert_response :forbidden end - basic_authorization(users(:moderator_user).email, 'test') + basic_authorization(users(:moderator_user).email, "test") # bad comment id post :unhide_comment, :id => 999111 @@ -2070,9 +2119,9 @@ EOF def test_unhide_comment_success comment = changeset_comments(:normal_comment_1) - basic_authorization(users(:moderator_user).email, 'test') + basic_authorization(users(:moderator_user).email, "test") - assert('!comment.visible') do + assert("!comment.visible") do post :unhide_comment, :id => comment.id end assert_response :success @@ -2128,16 +2177,16 @@ EOF # check the bbox doc = XML::Parser.string(@response.body).parse changeset = doc.find("//osm/changeset").first - assert_equal bbox[0], changeset['min_lon'].to_f, "min lon" - assert_equal bbox[1], changeset['min_lat'].to_f, "min lat" - assert_equal bbox[2], changeset['max_lon'].to_f, "max lon" - assert_equal bbox[3], changeset['max_lat'].to_f, "max lat" + assert_equal bbox[0], changeset["min_lon"].to_f, "min lon" + assert_equal bbox[1], changeset["min_lat"].to_f, "min lat" + assert_equal bbox[2], changeset["max_lon"].to_f, "max lon" + assert_equal bbox[3], changeset["max_lat"].to_f, "max lat" end ## # update the changeset_id of a way element def update_changeset(xml, changeset_id) - xml_attr_rewrite(xml, 'changeset', changeset_id) + xml_attr_rewrite(xml, "changeset", changeset_id) end ##