X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/420a7289a0b08eee091f6650c2e83166df3fbe69..35370684e503ef4c51a9b6798eef12d336ed1ee9:/test/test_helper.rb diff --git a/test/test_helper.rb b/test/test_helper.rb index b7b934552..05385b4f9 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -1,6 +1,21 @@ require "coveralls" Coveralls.wear!("rails") +# Override the simplecov output message, since it is mostly unwanted noise +module SimpleCov + module Formatter + class HTMLFormatter + def output_message(_result); end + end + end +end + +# Output both the local simplecov html and the coveralls report +SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new( + [SimpleCov::Formatter::HTMLFormatter, + Coveralls::SimpleCov::Formatter] +) + ENV["RAILS_ENV"] = "test" require_relative "../config/environment" require "rails/test_help" @@ -11,6 +26,7 @@ WebMock.disable_net_connect!(:allow_localhost => true) module ActiveSupport class TestCase include FactoryBot::Syntax::Methods + include ActiveJob::TestHelper ## # takes a block which is executed in the context of a different @@ -87,28 +103,12 @@ module ActiveSupport @request.env["HTTP_AUTHORIZATION"] = format("Basic %{auth}", :auth => Base64.encode64("#{user}:#{pass}")) end - ## - # set oauth token permissions - def grant_oauth_token(*tokens) - request.env["oauth.token"] = AccessToken.new do |token| - tokens.each do |t| - token.public_send("#{t}=", true) - end - end - end - ## # set request readers to ask for a particular error format def error_format(format) @request.env["HTTP_X_ERROR_FORMAT"] = format end - ## - # set the raw body to be sent with a POST request - def content(c) - @request.env["RAW_POST_DATA"] = c.to_s - end - ## # Used to check that the error header and the forbidden responses are given # when the owner of the changset has their data not marked as public @@ -170,5 +170,87 @@ module ActiveSupport fill_in "password", :with => "test" click_on "Login", :match => :first end + + def xml_for_node(node) + doc = OSM::API.new.get_xml_doc + doc.root << xml_node_for_node(node) + doc + end + + def xml_node_for_node(node) + el = XML::Node.new "node" + el["id"] = node.id.to_s + + OMHelper.add_metadata_to_xml_node(el, node, {}, {}) + + if node.visible? + el["lat"] = node.lat.to_s + el["lon"] = node.lon.to_s + end + + OMHelper.add_tags_to_xml_node(el, node.node_tags) + + el + end + + def xml_for_way(way) + doc = OSM::API.new.get_xml_doc + doc.root << xml_node_for_way(way) + doc + end + + def xml_node_for_way(way) + el = XML::Node.new "way" + el["id"] = way.id.to_s + + OMHelper.add_metadata_to_xml_node(el, way, {}, {}) + + # make sure nodes are output in sequence_id order + ordered_nodes = [] + way.way_nodes.each do |nd| + ordered_nodes[nd.sequence_id] = nd.node_id.to_s if nd.node&.visible? + end + + ordered_nodes.each do |nd_id| + next unless nd_id && nd_id != "0" + + node_el = XML::Node.new "nd" + node_el["ref"] = nd_id + el << node_el + end + + OMHelper.add_tags_to_xml_node(el, way.way_tags) + + el + end + + def xml_for_relation(relation) + doc = OSM::API.new.get_xml_doc + doc.root << xml_node_for_relation(relation) + doc + end + + def xml_node_for_relation(relation) + el = XML::Node.new "relation" + el["id"] = relation.id.to_s + + OMHelper.add_metadata_to_xml_node(el, relation, {}, {}) + + relation.relation_members.each do |member| + member_el = XML::Node.new "member" + member_el["type"] = member.member_type.downcase + member_el["ref"] = member.member_id.to_s + member_el["role"] = member.member_role + el << member_el + end + + OMHelper.add_tags_to_xml_node(el, relation.relation_tags) + + el + end + + class OMHelper + extend ObjectMetadata + end end end