# Ideally we would do ":include => :nodes" here but if we do that
# then rails only seems to return the first copy of a node when a
# way includes a node more than once
- way = Way.where(:id => wayid).preload(:nodes => :node_tags).first
+ way = Way.where(:id => wayid).first
# check case where way has been deleted or doesn't exist
return [-4, 'way', wayid] if way.nil? or !way.visible
- points = way.nodes.collect do |node|
+ points = way.nodes.preload(:node_tags).collect do |node|
nodetags=node.tags
nodetags.delete('created_by')
[node.lon, node.lat, node.id, nodetags, node.version]
assert_response :success
amf_parse_response
way = amf_result("/1")
- assert_equal way[0], 0
- assert_equal way[2], id
+ assert_equal 0, way[0]
+ assert_equal "", way[1]
+ assert_equal id, way[2]
+ assert_equal 1, way[3].length
+ assert_equal 3, way[3][0][2]
+ assert_equal 1, way[5]
+ assert_equal 2, way[6]
end
def test_getway_invisible
assert_response :success
amf_parse_response
way = amf_result("/1")
- assert_equal way[0], -4
- assert_equal way[1], "way"
- assert_equal way[2], id
- assert way[3].nil? and way[4].nil?
+ assert_equal -4, way[0], -4
+ assert_equal "way", way[1]
+ assert_equal id, way[2]
+ assert way[3].nil? and way[4].nil? and way[5].nil? and way[6].nil?
+ end
+
+ def test_getway_with_versions
+ # check a way with multiple versions
+ id = current_ways(:way_with_versions).id
+ amf_content "getway", "/1", [id]
+ post :amf_read
+ assert_response :success
+ amf_parse_response
+ way = amf_result("/1")
+ assert_equal 0, way[0]
+ assert_equal "", way[1]
+ assert_equal id, way[2]
+ assert_equal 1, way[3].length
+ assert_equal 15, way[3][0][2]
+ assert_equal 4, way[5]
+ assert_equal 2, way[6]
+ end
+
+ def test_getway_with_duplicate_nodes
+ # check a way with duplicate nodes
+ id = current_ways(:way_with_duplicate_nodes).id
+ amf_content "getway", "/1", [id]
+ post :amf_read
+ assert_response :success
+ amf_parse_response
+ way = amf_result("/1")
+ assert_equal 0, way[0]
+ assert_equal "", way[1]
+ assert_equal id, way[2]
+ assert_equal 2, way[3].length
+ assert_equal 4, way[3][0][2]
+ assert_equal 4, way[3][1][2]
+ assert_equal 1, way[5]
+ assert_equal 2, way[6]
+ end
+
+ def test_getway_with_multiple_nodes
+ # check a way with multiple nodes
+ id = current_ways(:way_with_multiple_nodes).id
+ amf_content "getway", "/1", [id]
+ post :amf_read
+ assert_response :success
+ amf_parse_response
+ way = amf_result("/1")
+ assert_equal 0, way[0]
+ assert_equal "", way[1]
+ assert_equal id, way[2]
+ assert_equal 3, way[3].length
+ assert_equal 4, way[3][0][2]
+ assert_equal 15, way[3][1][2]
+ assert_equal 6, way[3][2][2]
+ assert_equal 2, way[5]
+ assert_equal 2, way[6]
end
def test_getway_nonexistent
assert_response :success
amf_parse_response
way = amf_result("/1")
- assert_equal way[0], -4
- assert_equal way[1], "way"
- assert_equal way[2], 0
- assert way[3].nil? and way[4].nil?
+ assert_equal -4, way[0]
+ assert_equal "way", way[1]
+ assert_equal 0, way[2]
+ assert way[3].nil? and way[4].nil? and way[5].nil? and way[6].nil?
end
def test_whichways