]> git.openstreetmap.org Git - rails.git/commitdiff
Merge remote-tracking branch 'openstreetmap/pull/1507'
authorTom Hughes <tom@compton.nu>
Thu, 30 Mar 2017 14:18:14 +0000 (15:18 +0100)
committerTom Hughes <tom@compton.nu>
Thu, 30 Mar 2017 14:18:14 +0000 (15:18 +0100)
app/models/node.rb
test/controllers/api_controller_test.rb
test/controllers/way_controller_test.rb
test/models/node_test.rb

index f8559dca75d74431153342f4c4c987281a5354e8..6346907f1ef88354ee098f1ee8c72c774898b1ad 100644 (file)
@@ -185,8 +185,8 @@ class Node < ActiveRecord::Base
     add_metadata_to_xml_node(el, self, changeset_cache, user_display_name_cache)
 
     if visible?
-      el["lat"] = lat.to_s
-      el["lon"] = lon.to_s
+      el["lat"] = format("%.7f", lat)
+      el["lon"] = format("%.7f", lon)
     end
 
     add_tags_to_xml_node(el, node_tags)
index 5aac44a4fe7242b0184116e950a713092932cfef..7d249acf333a24dc70404de41719cb81d541a9d9 100644 (file)
@@ -69,7 +69,7 @@ class ApiControllerTest < ActionController::TestCase
     assert_response :success, "Expected scucess with the map call"
     assert_select "osm[version='#{API_VERSION}'][generator='#{GENERATOR}']", :count => 1 do
       assert_select "bounds[minlon='#{minlon}'][minlat='#{minlat}'][maxlon='#{maxlon}'][maxlat='#{maxlat}']", :count => 1
-      assert_select "node[id='#{node.id}'][lat='#{node.lat}'][lon='#{node.lon}'][version='#{node.version}'][changeset='#{node.changeset_id}'][visible='#{node.visible}'][timestamp='#{node.timestamp.xmlschema}']", :count => 1 do
+      assert_select "node[id='#{node.id}'][lat='#{format('%.7f', node.lat)}'][lon='#{format('%.7f', node.lon)}'][version='#{node.version}'][changeset='#{node.changeset_id}'][visible='#{node.visible}'][timestamp='#{node.timestamp.xmlschema}']", :count => 1 do
         # This should really be more generic
         assert_select "tag[k='#{tag.k}'][v='#{tag.v}']"
       end
@@ -91,7 +91,7 @@ class ApiControllerTest < ActionController::TestCase
     assert_response :success, "The map call should have succeeded"
     assert_select "osm[version='#{API_VERSION}'][generator='#{GENERATOR}']", :count => 1 do
       assert_select "bounds[minlon='#{node.lon}'][minlat='#{node.lat}'][maxlon='#{node.lon}'][maxlat='#{node.lat}']", :count => 1
-      assert_select "node[id='#{node.id}'][lat='#{node.lat}'][lon='#{node.lon}'][version='#{node.version}'][changeset='#{node.changeset_id}'][visible='#{node.visible}'][timestamp='#{node.timestamp.xmlschema}']", :count => 1 do
+      assert_select "node[id='#{node.id}'][lat='#{format('%.7f', node.lat)}'][lon='#{format('%.7f', node.lon)}'][version='#{node.version}'][changeset='#{node.changeset_id}'][visible='#{node.visible}'][timestamp='#{node.timestamp.xmlschema}']", :count => 1 do
         # This should really be more generic
         assert_select "tag[k='#{tag.k}'][v='#{tag.v}']"
       end
index 650977078a1c31c1899e453ebd63e79bb1fcdaf1..ae52c036f43d02f4692e02607cfb30ff1614bdcc 100644 (file)
@@ -74,7 +74,7 @@ class WayControllerTest < ActionController::TestCase
       way.nodes.each do |n|
         count = (way.nodes - (way.nodes - [n])).length
         assert_select "osm way nd[ref='#{n.id}']", count
-        assert_select "osm node[id='#{n.id}'][version='#{n.version}'][lat='#{n.lat}'][lon='#{n.lon}']", 1
+        assert_select "osm node[id='#{n.id}'][version='#{n.version}'][lat='#{format('%.7f', n.lat)}'][lon='#{format('%.7f', n.lon)}']", 1
       end
     end
   end
index 4384c6287eb8aa0eb4730d933fe3ac9ad509f135..bd664cfca407f4e7e38692854b69f641b423d574 100644 (file)
@@ -61,6 +61,14 @@ class NodeTest < ActiveSupport::TestCase
     assert_in_delta 76.543 * OldNode::SCALE, node.longitude, 0.000001
   end
 
+  # Ensure the lat/lon is formatted as a decimal e.g. not 4.0e-05
+  def test_lat_lon_xml_format
+    node = build(:node, :latitude => 0.00004 * OldNode::SCALE, :longitude => 0.00008 * OldNode::SCALE)
+
+    assert_match /lat="0.0000400"/, node.to_xml.to_s
+    assert_match /lon="0.0000800"/, node.to_xml.to_s
+  end
+
   # Check that you can create a node and store it
   def test_create
     changeset = create(:changeset)