From: Tom Hughes Date: Sun, 18 Dec 2016 16:29:33 +0000 (+0000) Subject: Merge remote-tracking branch 'openstreetmap/pull/1367' X-Git-Tag: live~4676 X-Git-Url: https://git.openstreetmap.org./rails.git/commitdiff_plain/970e1a99d7dce64f0631e88c5b9f060fb48d75fe?hp=-c Merge remote-tracking branch 'openstreetmap/pull/1367' --- 970e1a99d7dce64f0631e88c5b9f060fb48d75fe diff --combined .rubocop_todo.yml index f1e93f25b,b5834b8ce..a7b456aec --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@@ -64,7 -64,7 +64,7 @@@ Metrics/BlockNesting # Offense count: 62 # Configuration parameters: CountComments. Metrics/ClassLength: - Max: 1659 - Max: 1653 ++ Max: 1660 # Offense count: 69 Metrics/CyclomaticComplexity: diff --combined test/controllers/changeset_controller_test.rb index efdf22e54,9c77040fe..ca2ff8e15 --- a/test/controllers/changeset_controller_test.rb +++ b/test/controllers/changeset_controller_test.rb @@@ -3,6 -3,7 +3,6 @@@ require "changeset_controller class ChangesetControllerTest < ActionController::TestCase api_fixtures - fixtures :changesets_subscribers ## # test all routes which lead to this controller @@@ -1388,7 -1389,10 +1388,10 @@@ EO end def test_changeset_download + tag = create(:old_node_tag, :old_node => nodes(:used_node_2)) + get :download, :id => changesets(:normal_user_first_change).id + assert_response :success assert_template nil # print @response.body @@@ -1396,7 -1400,7 +1399,7 @@@ 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 - assert_select "tag[k='#{node_tags(:t3).k}'][v='#{node_tags(:t3).v}']" + assert_select "tag[k='#{tag.k}'][v='#{tag.v}']" end assert_select "create>node[id='#{nodes(:visible_node).node_id}']" end @@@ -1648,7 -1652,6 +1651,7 @@@ ## Now try with the public user changeset = changesets(:public_user_first_change) + create(:changeset_tag, :changeset => changeset) new_changeset = changeset.to_xml new_tag = XML::Node.new "tag" new_tag["k"] = "tagtesting" @@@ -1986,15 -1989,9 +1989,15 @@@ end assert_response :success + changeset = changesets(:normal_user_subscribed_change) + changeset.subscribers.push(users(:normal_user)) + changeset.subscribers.push(users(:public_user)) + changeset.subscribers.push(users(:suspended_user)) + changeset.subscribers.push(users(:deleted_user)) + 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" + post :comment, :id => changeset.id, :text => "This is a comment" end end assert_response :success @@@ -2010,7 -2007,7 +2013,7 @@@ 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" + post :comment, :id => changeset.id, :text => "This is a comment" end end assert_response :success @@@ -2101,7 -2098,6 +2104,7 @@@ # trying to subscribe when already subscribed changeset = changesets(:normal_user_subscribed_change) + changeset.subscribers.push(users(:public_user)) assert_no_difference "changeset.subscribers.count" do post :subscribe, :id => changeset.id end @@@ -2113,7 -2109,6 +2116,7 @@@ def test_unsubscribe_success basic_authorization(users(:public_user).email, "test") changeset = changesets(:normal_user_subscribed_change) + changeset.subscribers.push(users(:public_user)) assert_difference "changeset.subscribers.count", -1 do post :unsubscribe, :id => changeset.id diff --combined test/test_helper.rb index 3eafdd55c,e3d1d7a86..9633989cd --- a/test/test_helper.rb +++ b/test/test_helper.rb @@@ -4,7 -4,6 +4,7 @@@ Coveralls.wear!("rails" ENV["RAILS_ENV"] = "test" require File.expand_path("../../config/environment", __FILE__) require "rails/test_help" +require "webmock/minitest" load "composite_primary_keys/fixtures.rb" module ActiveSupport @@@ -15,43 -14,35 +15,35 @@@ def self.api_fixtures # print "setting up the api_fixtures" fixtures :users, :user_roles - fixtures :changesets, :changeset_tags + fixtures :changesets fixtures :current_nodes, :nodes set_fixture_class :current_nodes => Node set_fixture_class :nodes => OldNode - fixtures :current_node_tags, :node_tags - set_fixture_class :current_node_tags => NodeTag - set_fixture_class :node_tags => OldNodeTag - fixtures :current_ways set_fixture_class :current_ways => Way - fixtures :current_way_nodes, :current_way_tags + fixtures :current_way_nodes set_fixture_class :current_way_nodes => WayNode - set_fixture_class :current_way_tags => WayTag fixtures :ways set_fixture_class :ways => OldWay - fixtures :way_nodes, :way_tags + fixtures :way_nodes set_fixture_class :way_nodes => OldWayNode - set_fixture_class :way_tags => OldWayTag fixtures :current_relations set_fixture_class :current_relations => Relation - fixtures :current_relation_members, :current_relation_tags + fixtures :current_relation_members set_fixture_class :current_relation_members => RelationMember - set_fixture_class :current_relation_tags => RelationTag fixtures :relations set_fixture_class :relations => OldRelation - fixtures :relation_members, :relation_tags + fixtures :relation_members set_fixture_class :relation_members => OldRelationMember - set_fixture_class :relation_tags => OldRelationTag fixtures :gpx_files, :gps_points, :gpx_file_tags set_fixture_class :gpx_files => Trace @@@ -77,19 -68,6 +69,19 @@@ end end + ## + # work round minitest insanity that causes it to tell you + # to use assert_nil to test for nil, which is fine if you're + # comparing to a nil constant but not if you're comparing + # an expression that might be nil sometimes + def assert_equal_allowing_nil(exp, act, msg = nil) + if exp.nil? + assert_nil act, msg + else + assert_equal exp, act, msg + end + end + ## # for some reason assert_equal a, b fails when the relations are # actually equal, so this method manually checks the fields... @@@ -174,24 -152,23 +166,24 @@@ ## # execute a block with a given set of HTTP responses stubbed def with_http_stubs(stubs_file) - http_client_save = OSM.http_client + stubs = YAML.load_file(File.expand_path("../http/#{stubs_file}.yml", __FILE__)) + stubs.each do |url, response| + stub_request(:get, Regexp.new(Regexp.quote(url))).to_return(:status => response["code"], :body => response["body"]) + end - begin - stubs = YAML.load_file(File.expand_path("../http/#{stubs_file}.yml", __FILE__)) + yield + end - OSM.http_client = Faraday.new do |builder| - builder.adapter :test do |stub| - stubs.each do |url, response| - stub.get(url) { |_env| [response["code"], {}, response["body"]] } - end - end - end + def stub_gravatar_request(email, status = 200, body = nil) + hash = Digest::MD5.hexdigest(email.downcase) + url = "https://www.gravatar.com/avatar/#{hash}?d=404" + stub_request(:get, url).and_return(:status => status, :body => body) + end - yield - ensure - OSM.http_client = http_client_save - end + def stub_hostip_requests + # Controller tests and integration tests use different IPs + stub_request(:get, "http://api.hostip.info/country.php?ip=0.0.0.0") + stub_request(:get, "http://api.hostip.info/country.php?ip=127.0.0.1") end end end