X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/498d695064b7b856d5e65fcc9e888d17827d004c..0ca779e5bd2b53e83331640d21945b9fb06b2c8c:/test/functional/relation_controller_test.rb diff --git a/test/functional/relation_controller_test.rb b/test/functional/relation_controller_test.rb index 939a73df1..ed5951365 100644 --- a/test/functional/relation_controller_test.rb +++ b/test/functional/relation_controller_test.rb @@ -1,18 +1,9 @@ require File.dirname(__FILE__) + '/../test_helper' require 'relation_controller' -# Re-raise errors caught by the controller. -class RelationController; def rescue_action(e) raise e end; end - -class RelationControllerTest < Test::Unit::TestCase +class RelationControllerTest < ActionController::TestCase api_fixtures - def setup - @controller = RelationController.new - @request = ActionController::TestRequest.new - @response = ActionController::TestResponse.new - end - def basic_authorization(user, pass) @request.env["HTTP_AUTHORIZATION"] = "Basic %s" % Base64.encode64("#{user}:#{pass}") end @@ -43,44 +34,39 @@ class RelationControllerTest < Test::Unit::TestCase # check that all relations containing a particular node, and no extra # relations, are returned from the relations_for_node call. def test_relations_for_node - node_id = current_nodes(:node_used_by_relationship).id - - # fetch all the relations which contain that node - get :relations_for_node, :id => node_id + check_relations_for_element(:relations_for_node, "node", + current_nodes(:node_used_by_relationship).id, + [ :visible_relation, :used_relation ]) + end + + def test_relations_for_way + check_relations_for_element(:relations_for_way, "way", + current_ways(:used_way).id, + [ :visible_relation ]) + end + + def test_relations_for_relation + check_relations_for_element(:relations_for_relation, "relation", + current_relations(:used_relation).id, + [ :visible_relation ]) + end + + def check_relations_for_element(method, type, id, expected_relations) + # check the "relations for relation" mode + get method, :id => id assert_response :success # count one osm element assert_select "osm[version=#{API_VERSION}][generator=\"OpenStreetMap server\"]", 1 - # we should have only two relations - assert_select "osm>relation", 2 + # we should have only the expected number of relations + assert_select "osm>relation", expected_relations.size # and each of them should contain the node we originally searched for - [ :visible_relation, - :used_relation ].each do |r| + expected_relations.each do |r| relation_id = current_relations(r).id assert_select "osm>relation#?", relation_id - assert_select "osm>relation#?>member[type=\"node\"][ref=#{node_id}]", relation_id - end - end - - def test_relations_for_way - # check the "relations for way" mode - get :relations_for_way, :id => current_ways(:used_way).id - assert_response :success - # FIXME check whether this contains the stuff we want! - if $VERBOSE - print @response.body - end - end - - def test_relations_for_relation - # check the "relations for relation" mode - get :relations_for_relation, :id => current_relations(:used_relation).id - assert_response :success - # FIXME check whether this contains the stuff we want! - if $VERBOSE - print @response.body + assert_select "osm>relation#?>member[type=\"#{type}\"][ref=#{id}]", relation_id end end