From 498d695064b7b856d5e65fcc9e888d17827d004c Mon Sep 17 00:00:00 2001 From: Matt Amos Date: Tue, 21 Oct 2008 11:38:13 +0000 Subject: [PATCH 1/1] Added test for relations_for_node where the relation had been deleted. --- app/controllers/relation_controller.rb | 2 +- test/fixtures/current_relation_members.yml | 6 ++++ test/functional/relation_controller_test.rb | 34 ++++++++++++++++----- 3 files changed, 34 insertions(+), 8 deletions(-) diff --git a/app/controllers/relation_controller.rb b/app/controllers/relation_controller.rb index 7ce58dae6..da5129467 100644 --- a/app/controllers/relation_controller.rb +++ b/app/controllers/relation_controller.rb @@ -185,7 +185,7 @@ class RelationController < ApplicationController doc = OSM::API.new.get_xml_doc Relation.find(relationids).each do |relation| - doc.root << relation.to_xml_node + doc.root << relation.to_xml_node if relation.visible end render :text => doc.to_s, :content_type => "text/xml" diff --git a/test/fixtures/current_relation_members.yml b/test/fixtures/current_relation_members.yml index bddc8a0dd..5696a365f 100644 --- a/test/fixtures/current_relation_members.yml +++ b/test/fixtures/current_relation_members.yml @@ -21,3 +21,9 @@ t4: member_role: "some" member_type: "node" member_id: 5 + +t5: + id: 2 + member_role: "some" + member_type: "node" + member_id: 5 diff --git a/test/functional/relation_controller_test.rb b/test/functional/relation_controller_test.rb index ffd65f6cc..939a73df1 100644 --- a/test/functional/relation_controller_test.rb +++ b/test/functional/relation_controller_test.rb @@ -37,18 +37,34 @@ class RelationControllerTest < Test::Unit::TestCase # check chat a non-existent relation is not returned get :read, :id => 0 assert_response :not_found + end - # check the "relations for node" mode - get :relations_for_node, :id => current_nodes(:node_used_by_relationship).id + ## + # 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 assert_response :success - # FIXME check whether this contains the stuff we want! - # see the test_read in way_controller_test.rb for the assert_select + + # count one osm element assert_select "osm[version=#{API_VERSION}][generator=\"OpenStreetMap server\"]", 1 - assert_select "osm relation" - if $VERBOSE - print @response.body + + # we should have only two relations + assert_select "osm>relation", 2 + + # and each of them should contain the node we originally searched for + [ :visible_relation, + :used_relation ].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 @@ -56,7 +72,9 @@ class RelationControllerTest < Test::Unit::TestCase 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 @@ -64,7 +82,9 @@ class RelationControllerTest < Test::Unit::TestCase if $VERBOSE print @response.body end + end + def test_full # check the "full" mode get :full, :id => current_relations(:visible_relation).id assert_response :success -- 2.43.2