From: Dave Stubbs Date: Sun, 9 Nov 2008 18:48:16 +0000 (+0000) Subject: amf get*_history tests and related fixes X-Git-Tag: live~7557^2~171 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/2aa3daf0e091be9a3257e08f4059b6adfb05fc10?hp=436470b0576574971ea13b9754142047a6d109df amf get*_history tests and related fixes --- diff --git a/app/controllers/amf_controller.rb b/app/controllers/amf_controller.rb index f90a62a9a..d04166aea 100644 --- a/app/controllers/amf_controller.rb +++ b/app/controllers/amf_controller.rb @@ -246,26 +246,36 @@ class AmfController < ApplicationController # an array of previous versions. def getway_history(wayid) #:doc: - history = Way.find(wayid).old_ways.reverse.collect do |old_way| - user = old_way.user.data_public? ? old_way.user.display_name : 'anonymous' - uid = old_way.user.data_public? ? old_way.user.id : 0 - [old_way.version, old_way.timestamp.strftime("%d %b %Y, %H:%M"), old_way.visible ? 1 : 0, user, uid] - end + begin + history = Way.find(wayid).old_ways.reverse.collect do |old_way| + user_object = old_way.changeset.user + user = user_object.data_public? ? user_object.display_name : 'anonymous' + uid = user_object.data_public? ? user_object.id : 0 + [old_way.version, old_way.timestamp.strftime("%d %b %Y, %H:%M"), old_way.visible ? 1 : 0, user, uid] + end - ['way',wayid,history] + return ['way',wayid,history] + rescue ActiveRecord::RecordNotFound + return ['way', wayid, []] + end end # Find history of a node. Returns 'node', id, and # an array of previous versions. def getnode_history(nodeid) #:doc: - history = Node.find(nodeid).old_nodes.reverse.collect do |old_node| - user = old_node.user.data_public? ? old_node.user.display_name : 'anonymous' - uid = old_node.user.data_public? ? old_node.user.id : 0 - [old_node.timestamp.to_i, old_node.timestamp.strftime("%d %b %Y, %H:%M"), old_node.visible ? 1 : 0, user, uid] - end + begin + history = Node.find(nodeid).old_nodes.reverse.collect do |old_node| + user_object = old_node.changeset.user + user = user_object.data_public? ? user_object.display_name : 'anonymous' + uid = user_object.data_public? ? user_object.id : 0 + [old_node.timestamp.to_i, old_node.timestamp.strftime("%d %b %Y, %H:%M"), old_node.visible ? 1 : 0, user, uid] + end - ['node',nodeid,history] + return ['node',nodeid,history] + rescue ActiveRecord::RecordNotFound + return ['node', nodeid, []] + end end # Get a relation with all tags and members. diff --git a/test/functional/amf_controller_test.rb b/test/functional/amf_controller_test.rb index 9a12a01c4..0cf56fca4 100644 --- a/test/functional/amf_controller_test.rb +++ b/test/functional/amf_controller_test.rb @@ -187,6 +187,62 @@ class AmfControllerTest < ActionController::TestCase end end + def test_getway_history + latest = current_ways(:way_with_versions) + amf_content "getway_history", "/1", [latest.id] + post :amf_read + assert_response :success + amf_parse_response + history = amf_result("/1") + + # ['way',wayid,history] + assert_equal history[0], 'way' + assert_equal history[1], latest.id + assert_equal history[2].first[0], latest.version + assert_equal history[2].last[0], ways(:way_with_versions_v1).version + end + + def test_getway_history_nonexistent + amf_content "getway_history", "/1", [0] + post :amf_read + assert_response :success + amf_parse_response + history = amf_result("/1") + + # ['way',wayid,history] + assert_equal history[0], 'way' + assert_equal history[1], 0 + assert history[2].empty? + end + + def test_getnode_history + latest = current_nodes(:node_with_versions) + amf_content "getnode_history", "/1", [latest.id] + post :amf_read + assert_response :success + amf_parse_response + history = amf_result("/1") + + # ['node',nodeid,history] + assert_equal history[0], 'node' + assert_equal history[1], latest.id + assert_equal history[2].first[0], latest.timestamp.to_i + assert_equal history[2].last[0], nodes(:node_with_versions_v1).timestamp.to_i + end + + def test_getnode_history_nonexistent + amf_content "getnode_history", "/1", [0] + post :amf_read + assert_response :success + amf_parse_response + history = amf_result("/1") + + # ['node',nodeid,history] + assert_equal history[0], 'node' + assert_equal history[1], 0 + assert history[2].empty? + end + # ************************************************************ # AMF Helper functions