Fixed node functional tests. A couple of changes to the old_node model and node controller for changesets.
This commit is contained in:
parent
734cbb967d
commit
a2498928e4
6 changed files with 21 additions and 12 deletions
|
@ -96,7 +96,7 @@ class NodeController < ApplicationController
|
||||||
|
|
||||||
if new_node and new_node.id == node.id
|
if new_node and new_node.id == node.id
|
||||||
node.delete_with_history(new_node, @user)
|
node.delete_with_history(new_node, @user)
|
||||||
render :nothing => true, :status => :success
|
render :nothing => true
|
||||||
else
|
else
|
||||||
render :nothing => true, :status => :bad_request
|
render :nothing => true, :status => :bad_request
|
||||||
end
|
end
|
||||||
|
|
|
@ -38,6 +38,7 @@ class OldNode < ActiveRecord::Base
|
||||||
el1['id'] = self.id.to_s
|
el1['id'] = self.id.to_s
|
||||||
el1['lat'] = self.lat.to_s
|
el1['lat'] = self.lat.to_s
|
||||||
el1['lon'] = self.lon.to_s
|
el1['lon'] = self.lon.to_s
|
||||||
|
el1['changeset'] = self.changeset.id.to_s
|
||||||
el1['user'] = self.changeset.user.display_name if self.changeset.user.data_public?
|
el1['user'] = self.changeset.user.display_name if self.changeset.user.data_public?
|
||||||
|
|
||||||
self.tags.each do |k,v|
|
self.tags.each do |k,v|
|
||||||
|
|
|
@ -53,8 +53,6 @@ module GeoRecord
|
||||||
raise OSM::APIVersionMismatchError.new(new.version, old.version)
|
raise OSM::APIVersionMismatchError.new(new.version, old.version)
|
||||||
elsif new.changeset.nil?
|
elsif new.changeset.nil?
|
||||||
raise OSM::APIChangesetMissingError.new
|
raise OSM::APIChangesetMissingError.new
|
||||||
elsif new.changeset.empty?
|
|
||||||
raise OSM::APIChangesetMissingError.new
|
|
||||||
elsif new.changeset.user_id != user.id
|
elsif new.changeset.user_id != user.id
|
||||||
raise OSM::APIUserChangesetMismatchError.new
|
raise OSM::APIUserChangesetMismatchError.new
|
||||||
elsif not new.changeset.is_open?
|
elsif not new.changeset.is_open?
|
||||||
|
|
6
test/fixtures/node_tags.yml
vendored
6
test/fixtures/node_tags.yml
vendored
|
@ -1,17 +1,17 @@
|
||||||
t1:
|
t1:
|
||||||
id: visible_node
|
id: 1
|
||||||
k: testvisible
|
k: testvisible
|
||||||
v: yes
|
v: yes
|
||||||
version: 1
|
version: 1
|
||||||
|
|
||||||
t2:
|
t2:
|
||||||
id: used_node_1
|
id: 3
|
||||||
k: testused
|
k: testused
|
||||||
v: yes
|
v: yes
|
||||||
version: 1
|
version: 1
|
||||||
|
|
||||||
t3:
|
t3:
|
||||||
id: used_node_2
|
id: 4
|
||||||
k: test
|
k: test
|
||||||
v: yes
|
v: yes
|
||||||
version: 1
|
version: 1
|
||||||
|
|
|
@ -21,10 +21,14 @@ class NodeControllerTest < Test::Unit::TestCase
|
||||||
# create a node with random lat/lon
|
# create a node with random lat/lon
|
||||||
lat = rand(100)-50 + rand
|
lat = rand(100)-50 + rand
|
||||||
lon = rand(100)-50 + rand
|
lon = rand(100)-50 + rand
|
||||||
content("<osm><node lat='#{lat}' lon='#{lon}' /></osm>")
|
# normal user has a changeset open, so we'll use that.
|
||||||
|
changeset = changesets(:normal_user_first_change)
|
||||||
|
# create a minimal xml file
|
||||||
|
content("<osm><node lat='#{lat}' lon='#{lon}' changeset='#{changeset.id}'/></osm>")
|
||||||
put :create
|
put :create
|
||||||
# hope for success
|
# hope for success
|
||||||
assert_response :success, "node upload did not return success status"
|
assert_response :success, "node upload did not return success status"
|
||||||
|
|
||||||
# read id of created node and search for it
|
# read id of created node and search for it
|
||||||
nodeid = @response.body
|
nodeid = @response.body
|
||||||
checknode = Node.find(nodeid)
|
checknode = Node.find(nodeid)
|
||||||
|
@ -32,7 +36,7 @@ class NodeControllerTest < Test::Unit::TestCase
|
||||||
# compare values
|
# compare values
|
||||||
assert_in_delta lat * 10000000, checknode.latitude, 1, "saved node does not match requested latitude"
|
assert_in_delta lat * 10000000, checknode.latitude, 1, "saved node does not match requested latitude"
|
||||||
assert_in_delta lon * 10000000, checknode.longitude, 1, "saved node does not match requested longitude"
|
assert_in_delta lon * 10000000, checknode.longitude, 1, "saved node does not match requested longitude"
|
||||||
assert_equal users(:normal_user).id, checknode.user_id, "saved node does not belong to user that created it"
|
assert_equal changesets(:normal_user_first_change).id, checknode.changeset_id, "saved node does not belong to changeset that it was created in"
|
||||||
assert_equal true, checknode.visible, "saved node is not visible"
|
assert_equal true, checknode.visible, "saved node is not visible"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -61,11 +65,13 @@ class NodeControllerTest < Test::Unit::TestCase
|
||||||
# now set auth
|
# now set auth
|
||||||
basic_authorization(users(:normal_user).email, "test");
|
basic_authorization(users(:normal_user).email, "test");
|
||||||
|
|
||||||
# this should work
|
# delete now takes a payload
|
||||||
|
content(nodes(:visible_node).to_xml)
|
||||||
delete :delete, :id => current_nodes(:visible_node).id
|
delete :delete, :id => current_nodes(:visible_node).id
|
||||||
assert_response :success
|
assert_response :success
|
||||||
|
|
||||||
# this won't work since the node is already deleted
|
# this won't work since the node is already deleted
|
||||||
|
content(nodes(:invisible_node).to_xml)
|
||||||
delete :delete, :id => current_nodes(:invisible_node).id
|
delete :delete, :id => current_nodes(:invisible_node).id
|
||||||
assert_response :gone
|
assert_response :gone
|
||||||
|
|
||||||
|
@ -74,6 +80,7 @@ class NodeControllerTest < Test::Unit::TestCase
|
||||||
assert_response :not_found
|
assert_response :not_found
|
||||||
|
|
||||||
# this won't work since the node is in use
|
# this won't work since the node is in use
|
||||||
|
content(nodes(:used_node_1).to_xml)
|
||||||
delete :delete, :id => current_nodes(:used_node_1).id
|
delete :delete, :id => current_nodes(:used_node_1).id
|
||||||
assert_response :precondition_failed
|
assert_response :precondition_failed
|
||||||
end
|
end
|
||||||
|
@ -84,6 +91,6 @@ class NodeControllerTest < Test::Unit::TestCase
|
||||||
end
|
end
|
||||||
|
|
||||||
def content(c)
|
def content(c)
|
||||||
@request.env["RAW_POST_DATA"] = c
|
@request.env["RAW_POST_DATA"] = c.to_s
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -27,12 +27,15 @@ class Test::Unit::TestCase
|
||||||
|
|
||||||
# Load standard fixtures needed to test API methods
|
# Load standard fixtures needed to test API methods
|
||||||
def self.api_fixtures
|
def self.api_fixtures
|
||||||
fixtures :users
|
fixtures :users, :changesets
|
||||||
|
|
||||||
fixtures :current_nodes, :nodes, :current_node_tags
|
fixtures :current_nodes, :nodes
|
||||||
set_fixture_class :current_nodes => :Node
|
set_fixture_class :current_nodes => :Node
|
||||||
set_fixture_class :nodes => :OldNode
|
set_fixture_class :nodes => :OldNode
|
||||||
|
|
||||||
|
fixtures :current_node_tags,:node_tags
|
||||||
set_fixture_class :current_node_tags => :NodeTag
|
set_fixture_class :current_node_tags => :NodeTag
|
||||||
|
set_fixture_class :node_tags => :OldNodeTag
|
||||||
|
|
||||||
fixtures :current_ways, :current_way_nodes, :current_way_tags
|
fixtures :current_ways, :current_way_nodes, :current_way_tags
|
||||||
set_fixture_class :current_ways => :Way
|
set_fixture_class :current_ways => :Way
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue