Added some more functional tests for way and relation delete methods.
authorMatt Amos <zerebubuth@gmail.com>
Tue, 14 Oct 2008 14:34:17 +0000 (14:34 +0000)
committerMatt Amos <zerebubuth@gmail.com>
Tue, 14 Oct 2008 14:34:17 +0000 (14:34 +0000)
test/functional/relation_controller_test.rb
test/functional/way_controller_test.rb

index b54d9bc98cdce204c9ea8f78b1c58dbd9dda1fee..ffd65f6ccc26ad3a6471925051bed72417795c3d 100644 (file)
@@ -210,6 +210,22 @@ class RelationControllerTest < Test::Unit::TestCase
     delete :delete, :id => current_relations(:visible_relation).id
     assert_response :bad_request
 
+    # try to delete without specifying a changeset
+    content "<osm><relation id='#{current_relations(:visible_relation).id}'/></osm>"
+    delete :delete, :id => current_relations(:visible_relation).id
+    assert_response :conflict
+
+    # try to delete with an invalid (closed) changeset
+    content update_changeset(current_relations(:visible_relation).to_xml,
+                             changesets(:normal_user_closed_change).id)
+    delete :delete, :id => current_relations(:visible_relation).id
+    assert_response :conflict
+
+    # try to delete with an invalid (non-existent) changeset
+    content update_changeset(current_relations(:visible_relation).to_xml,0)
+    delete :delete, :id => current_relations(:visible_relation).id
+    assert_response :conflict
+
     # this won't work because the relation is in-use by another relation
     content(relations(:used_relation).to_xml)
     delete :delete, :id => current_relations(:used_relation).id
@@ -243,4 +259,24 @@ class RelationControllerTest < Test::Unit::TestCase
     assert_response :not_found
   end
 
+  ##
+  # update the changeset_id of a node element
+  def update_changeset(xml, changeset_id)
+    xml_attr_rewrite(xml, 'changeset', changeset_id)
+  end
+
+  ##
+  # update an attribute in the node element
+  def xml_attr_rewrite(xml, name, value)
+    xml.find("//osm/relation").first[name] = value.to_s
+    return xml
+  end
+
+  ##
+  # parse some xml
+  def xml_parse(xml)
+    parser = XML::Parser.new
+    parser.string = xml
+    parser.parse
+  end
 end
index d889be2ba83503313e8737cc766b0a132d4fdae3..2049ba0cbdade73d4a8d959b9444e844e3621b02 100644 (file)
@@ -165,6 +165,17 @@ class WayControllerTest < Test::Unit::TestCase
     delete :delete, :id => current_ways(:visible_way).id
     assert_response :bad_request
     
+    # try to delete with an invalid (closed) changeset
+    content update_changeset(current_ways(:visible_way).to_xml,
+                             changesets(:normal_user_closed_change).id)
+    delete :delete, :id => current_ways(:visible_way).id
+    assert_response :conflict
+
+    # try to delete with an invalid (non-existent) changeset
+    content update_changeset(current_ways(:visible_way).to_xml,0)
+    delete :delete, :id => current_ways(:visible_way).id
+    assert_response :conflict
+
     # Now try with a valid changeset
     content current_ways(:visible_way).to_xml
     delete :delete, :id => current_ways(:visible_way).id
@@ -192,4 +203,16 @@ class WayControllerTest < Test::Unit::TestCase
     assert_response :not_found
   end
 
+  ##
+  # update the changeset_id of a node element
+  def update_changeset(xml, changeset_id)
+    xml_attr_rewrite(xml, 'changeset', changeset_id)
+  end
+
+  ##
+  # update an attribute in the node element
+  def xml_attr_rewrite(xml, name, value)
+    xml.find("//osm/way").first[name] = value.to_s
+    return xml
+  end
 end