From c9a171c74581e0eb80794e2c9ed92e1b8faffa42 Mon Sep 17 00:00:00 2001 From: Shaun McDonald Date: Tue, 8 Jul 2008 18:17:08 +0000 Subject: [PATCH 1/1] Removing the in_world test from the model since it is included in the geo_record library. Adding visible and version to the nodes and current_nodes fixtures. Adding old node test. Slightly different comparisions. --- app/models/old_node.rb | 9 +-- test/fixtures/current_nodes.yml | 38 ++++++++++++ test/fixtures/nodes.yml | 102 ++++++++++++++++++++++++++++++++ test/unit/node_test.rb | 28 ++++++--- test/unit/old_node_test.rb | 79 +++++++++++++++++++++++++ 5 files changed, 240 insertions(+), 16 deletions(-) create mode 100644 test/unit/old_node_test.rb diff --git a/app/models/old_node.rb b/app/models/old_node.rb index 42f55f2d0..6b6b71b53 100644 --- a/app/models/old_node.rb +++ b/app/models/old_node.rb @@ -14,12 +14,6 @@ class OldNode < ActiveRecord::Base errors.add_to_base("Node is not in the world") unless in_world? end - def in_world? - return false if self.lat < -90 or self.lat > 90 - return false if self.lon < -180 or self.lon > 180 - return true - end - def self.from_node(node) old_node = OldNode.new old_node.latitude = node.latitude @@ -90,7 +84,8 @@ class OldNode < ActiveRecord::Base def tags=(t) @tags = t - end + end + def tags_as_hash hash = {} Tags.split(self.tags) do |k,v| diff --git a/test/fixtures/current_nodes.yml b/test/fixtures/current_nodes.yml index ef5e688f6..19fad704e 100644 --- a/test/fixtures/current_nodes.yml +++ b/test/fixtures/current_nodes.yml @@ -1,11 +1,14 @@ # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html <% SCALE = 10000000 unless defined?(SCALE) %> + visible_node: id: 1 latitude: <%= 1*SCALE %> longitude: <%= 1*SCALE %> user_id: 1 visible: 1 + version: 1 + tile: <%= QuadTile.tile_for_point(1,1) %> timestamp: 2007-01-01 00:00:00 invisible_node: @@ -14,6 +17,8 @@ invisible_node: longitude: <%= 2*SCALE %> user_id: 1 visible: 0 + version: 1 + tile: <%= QuadTile.tile_for_point(2,2) %> timestamp: 2007-01-01 00:00:00 used_node_1: @@ -22,6 +27,8 @@ used_node_1: longitude: <%= 3*SCALE %> user_id: 1 visible: 1 + version: 1 + tile: <%= QuadTile.tile_for_point(3,3) %> timestamp: 2007-01-01 00:00:00 used_node_2: @@ -30,6 +37,8 @@ used_node_2: longitude: <%= 4*SCALE %> user_id: 1 visible: 1 + version: 1 + tile: <%= QuadTile.tile_for_point(4,4) %> timestamp: 2007-01-01 00:00:00 node_used_by_relationship: @@ -38,6 +47,8 @@ node_used_by_relationship: longitude: <%= 5*SCALE %> user_id: 1 visible: 1 + version: 1 + tile: <%= QuadTile.tile_for_point(5,5) %> timestamp: 2007-01-01 00:00:00 node_too_far_north: @@ -45,6 +56,9 @@ node_too_far_north: latitude: <%= 90.01*SCALE %> longitude: <%= 6*SCALE %> user_id: 1 + visible: 1 + version: 1 + tile: <%= QuadTile.tile_for_point(90.01,6) %> timestamp: 2007-01-01 00:00:00 node_north_limit: @@ -52,6 +66,9 @@ node_north_limit: latitude: <%= 90*SCALE %> longitude: <%= 11*SCALE %> user_id: 1 + visible: 1 + version: 1 + tile: <%= QuadTile.tile_for_point(90,11) %> timestamp: 2008-07-08 14:50:00 node_too_far_south: @@ -59,6 +76,9 @@ node_too_far_south: latitude: <%= -90.01*SCALE %> longitude: <%= 7*SCALE %> user_id: 1 + visible: 1 + version: 1 + tile: <%= QuadTile.tile_for_point(-90.01,7) %> timestamp: 2007-01-01 00:00:00 node_south_limit: @@ -66,6 +86,9 @@ node_south_limit: latitude: <%= -90*SCALE %> longitude: <%= 12*SCALE %> user_id: 1 + visible: 1 + version: 1 + tile: <%= QuadTile.tile_for_point(-90,12) %> timestamp: 2008-07-08 15:02:18 node_too_far_west: @@ -73,6 +96,9 @@ node_too_far_west: latitude: <%= 8*SCALE %> longitude: <%= -180.01*SCALE %> user_id: 1 + visible: 1 + version: 1 + tile: <%= QuadTile.tile_for_point(8,-180.01) %> timestamp: 2007-01-01 00:00:00 node_west_limit: @@ -80,6 +106,9 @@ node_west_limit: latitude: <%= 13*SCALE %> longitude: <%= -180*SCALE %> user_id: 1 + visible: 1 + version: 1 + tile: <%= QuadTile.tile_for_point(13,-180) %> timestamp: 2008-07-08 15:17:37 node_too_far_east: @@ -87,6 +116,9 @@ node_too_far_east: latitude: <%= 9*SCALE %> longitude: <%= 180.01*SCALE %> user_id: 1 + visible: 1 + version: 1 + tile: <%= QuadTile.tile_for_point(9,180.01) %> timestamp: 2007-01-01 00:00:00 node_east_limit: @@ -94,6 +126,9 @@ node_east_limit: latitude: <%= 14*SCALE %> longitude: <%= 180*SCALE %> user_id: 1 + visible: 1 + version: 1 + tile: <%= QuadTile.tile_for_point(14,180) %> timestamp: 2008-07-08 15:46:16 node_totally_wrong: @@ -101,5 +136,8 @@ node_totally_wrong: latitude: <%= 200*SCALE %> longitude: <%= 200*SCALE %> user_id: 1 + visible: 1 + version: 1 + tile: <%= QuadTile.tile_for_point(200,200) %> timestamp: 2007-01-01 00:00:00 diff --git a/test/fixtures/nodes.yml b/test/fixtures/nodes.yml index 202a7d931..9699e395c 100644 --- a/test/fixtures/nodes.yml +++ b/test/fixtures/nodes.yml @@ -1,10 +1,14 @@ # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html +<% SCALE = 10000000 unless defined?(SCALE) %> + visible_node: id: 1 latitude: <%= 1*SCALE %> longitude: <%= 1*SCALE %> user_id: 1 visible: 1 + version: 1 + tile: <%= QuadTile.tile_for_point(1,1) %> timestamp: 2007-01-01 00:00:00 invisible_node: @@ -13,6 +17,8 @@ invisible_node: longitude: <%= 2*SCALE %> user_id: 1 visible: 0 + version: 1 + tile: <%= QuadTile.tile_for_point(2,2) %> timestamp: 2007-01-01 00:00:00 used_node_1: @@ -21,6 +27,8 @@ used_node_1: longitude: <%= 3*SCALE %> user_id: 1 visible: 1 + version: 1 + tile: <%= QuadTile.tile_for_point(3,3) %> timestamp: 2007-01-01 00:00:00 used_node_2: @@ -29,6 +37,8 @@ used_node_2: longitude: <%= 4*SCALE %> user_id: 1 visible: 1 + version: 1 + tile: <%= QuadTile.tile_for_point(4,4) %> timestamp: 2007-01-01 00:00:00 node_used_by_relationship: @@ -37,5 +47,97 @@ node_used_by_relationship: longitude: <%= 5*SCALE %> user_id: 1 visible: 1 + version: 1 + tile: <%= QuadTile.tile_for_point(5,5) %> timestamp: 2007-01-01 00:00:00 +node_too_far_north: + id: 6 + latitude: <%= 90.01*SCALE %> + longitude: <%= 6*SCALE %> + user_id: 1 + visible: 1 + version: 1 + tile: <%= QuadTile.tile_for_point(90.01,6) %> + timestamp: 2007-01-01 00:00:00 + +node_north_limit: + id: 11 + latitude: <%= 90*SCALE %> + longitude: <%= 11*SCALE %> + user_id: 1 + visible: 1 + version: 1 + tile: <%= QuadTile.tile_for_point(90,11) %> + timestamp: 2008-07-08 14:50:00 + +node_too_far_south: + id: 7 + latitude: <%= -90.01*SCALE %> + longitude: <%= 7*SCALE %> + user_id: 1 + visible: 1 + version: 1 + tile: <%= QuadTile.tile_for_point(-90.01,7) %> + timestamp: 2007-01-01 00:00:00 + +node_south_limit: + id: 12 + latitude: <%= -90*SCALE %> + longitude: <%= 12*SCALE %> + user_id: 1 + visible: 1 + version: 1 + tile: <%= QuadTile.tile_for_point(-90,12) %> + timestamp: 2008-07-08 15:02:18 + +node_too_far_west: + id: 8 + latitude: <%= 8*SCALE %> + longitude: <%= -180.01*SCALE %> + user_id: 1 + visible: 1 + version: 1 + tile: <%= QuadTile.tile_for_point(8,-180.01) %> + timestamp: 2007-01-01 00:00:00 + +node_west_limit: + id: 13 + latitude: <%= 13*SCALE %> + longitude: <%= -180*SCALE %> + user_id: 1 + visible: 1 + version: 1 + tile: <%= QuadTile.tile_for_point(13,-180) %> + timestamp: 2008-07-08 15:17:37 + +node_too_far_east: + id: 9 + latitude: <%= 9*SCALE %> + longitude: <%= 180.01*SCALE %> + user_id: 1 + visible: 1 + version: 1 + tile: <%= QuadTile.tile_for_point(9,180.01) %> + timestamp: 2007-01-01 00:00:00 + +node_east_limit: + id: 14 + latitude: <%= 14*SCALE %> + longitude: <%= 180*SCALE %> + user_id: 1 + visible: 1 + version: 1 + tile: <%= QuadTile.tile_for_point(14,180) %> + timestamp: 2008-07-08 15:46:16 + +node_totally_wrong: + id: 10 + latitude: <%= 200*SCALE %> + longitude: <%= 200*SCALE %> + user_id: 1 + visible: 1 + version: 1 + tile: <%= QuadTile.tile_for_point(200,200) %> + timestamp: 2007-01-01 00:00:00 + diff --git a/test/unit/node_test.rb b/test/unit/node_test.rb index 87b61a745..b5ef30298 100644 --- a/test/unit/node_test.rb +++ b/test/unit/node_test.rb @@ -1,7 +1,7 @@ require File.dirname(__FILE__) + '/../test_helper' class NodeTest < Test::Unit::TestCase - fixtures :current_nodes, :users, :current_node_tags,:nodes, :node_tags + fixtures :current_nodes, :users, :current_node_tags, :nodes, :node_tags set_fixture_class :current_nodes => :Node set_fixture_class :nodes => :OldNode set_fixture_class :node_tags => :OldNodeTag @@ -48,21 +48,31 @@ class NodeTest < Test::Unit::TestCase # the fixture def valid_node_test(nod) node = current_nodes(nod) - assert_equal node.lat, current_nodes(nod).latitude.to_f/SCALE - assert_equal node.lon, current_nodes(nod).longitude.to_f/SCALE - assert_equal node.timestamp, current_nodes(nod).timestamp + dbnode = Node.find(node.id) + assert_equal dbnode.lat, node.latitude.to_f/SCALE + assert_equal dbnode.lon, node.longitude.to_f/SCALE + assert_equal dbnode.user_id, node.user_id + assert_equal dbnode.timestamp, node.timestamp + assert_equal dbnode.version, node.version + assert_equal dbnode.visible, node.visible + #assert_equal node.tile, QuadTile.tile_for_point(node.lat, node.lon) assert_valid node end - # This helpermethod will check to make sure that a node is outwith the world, + # This helper method will check to make sure that a node is outwith the world, # and has the same lat, lon and timesamp than what was put into the db by the # fixture def invalid_node_test(nod) node = current_nodes(nod) - assert_equal node.lat, current_nodes(nod).latitude.to_f/SCALE - assert_equal node.lon, current_nodes(nod).longitude.to_f/SCALE - assert_equal node.timestamp, current_nodes(nod).timestamp - assert_equal false, node.valid? + dbnode = Node.find(node.id) + assert_equal dbnode.lat, node.latitude.to_f/SCALE + assert_equal dbnode.lon, node.longitude.to_f/SCALE + assert_equal dbnode.user_id, node.user_id + assert_equal dbnode.timestamp, node.timestamp + assert_equal dbnode.version, node.version + assert_equal dbnode.visible, node.visible + #assert_equal node.tile, QuadTile.tile_for_point(node.lat, node.lon) + assert_equal false, dbnode.valid? end # Check that you can create a node and store it diff --git a/test/unit/old_node_test.rb b/test/unit/old_node_test.rb new file mode 100644 index 000000000..85c2037c2 --- /dev/null +++ b/test/unit/old_node_test.rb @@ -0,0 +1,79 @@ +require File.dirname(__FILE__) + '/../test_helper' + +class OldNodeTest < Test::Unit::TestCase + fixtures :current_nodes, :users, :current_node_tags, :nodes, :node_tags + set_fixture_class :current_nodes => :Node + set_fixture_class :nodes => :OldNode + set_fixture_class :node_tags => :OldNodeTag + set_fixture_class :current_node_tags => :NodeTag + + def test_node_too_far_north + invalid_node_test(:node_too_far_north) + end + + def test_node_north_limit + valid_node_test(:node_north_limit) + end + + def test_node_too_far_south + invalid_node_test(:node_too_far_south) + end + + def test_node_south_limit + valid_node_test(:node_south_limit) + end + + def test_node_too_far_west + invalid_node_test(:node_too_far_west) + end + + def test_node_west_limit + valid_node_test(:node_west_limit) + end + + def test_node_too_far_east + invalid_node_test(:node_too_far_east) + end + + def test_node_east_limit + valid_node_test(:node_east_limit) + end + + def test_totally_wrong + invalid_node_test(:node_totally_wrong) + end + + # This helper method will check to make sure that a node is within the world, and + # has the the same lat, lon and timestamp than what was put into the db by + # the fixture + def valid_node_test(nod) + node = nodes(nod) + dbnode = Node.find(node.id) + assert_equal dbnode.lat, node.latitude.to_f/SCALE + assert_equal dbnode.lon, node.longitude.to_f/SCALE + assert_equal dbnode.user_id, node.user_id + assert_equal dbnode.version, node.version + assert_equal dbnode.visible, node.visible + assert_equal dbnode.timestamp, node.timestamp + #assert_equal node.tile, QuadTile.tile_for_point(nodes(nod).lat, nodes(nod).lon) + assert_valid node + end + + # This helpermethod will check to make sure that a node is outwith the world, + # and has the same lat, lon and timesamp than what was put into the db by the + # fixture + def invalid_node_test(nod) + node = nodes(nod) + dbnode = Node.find(node.id) + assert_equal dbnode.lat, node.latitude.to_f/SCALE + assert_equal dbnode.lon, node.longitude.to_f/SCALE + assert_equal dbnode.user_id, node.user_id + assert_equal dbnode.version, node.version + assert_equal dbnode.visible, node.visible + assert_equal dbnode.timestamp, node.timestamp + #assert_equal node.tile, QuadTile.tile_for_point(nodes(nod).lat, nodes(nod).lon) + assert_equal false, node.valid? + end + + +end -- 2.43.2