source: subversion/sites/rails_port/test/unit/node_test.rb @ 14934

Last change on this file since 14934 was 14769, checked in by Shaun McDonald, 10 years ago

Make node update work with the new require data public to edit policy. Added convenience testing method for the require data public. Add 2 new fixtures that are owned by the public user.

File size: 6.7 KB
Line 
1require File.dirname(__FILE__) + '/../test_helper'
2
3class NodeTest < Test::Unit::TestCase
4  api_fixtures
5 
6  def test_node_count
7    assert_equal 16, Node.count
8  end
9
10  def test_node_too_far_north
11          invalid_node_test(:node_too_far_north)
12  end
13 
14  def test_node_north_limit
15    valid_node_test(:node_north_limit)
16  end
17 
18  def test_node_too_far_south
19    invalid_node_test(:node_too_far_south)
20  end
21 
22  def test_node_south_limit
23    valid_node_test(:node_south_limit)
24  end
25 
26  def test_node_too_far_west
27    invalid_node_test(:node_too_far_west)
28  end
29 
30  def test_node_west_limit
31    valid_node_test(:node_west_limit)
32  end
33 
34  def test_node_too_far_east
35    invalid_node_test(:node_too_far_east)
36  end
37 
38  def test_node_east_limit
39    valid_node_test(:node_east_limit)
40  end
41 
42  def test_totally_wrong
43    invalid_node_test(:node_totally_wrong)
44  end
45 
46  # This helper method will check to make sure that a node is within the world, and
47  # has the the same lat, lon and timestamp than what was put into the db by
48  # the fixture
49  def valid_node_test(nod)
50    node = current_nodes(nod)
51    dbnode = Node.find(node.id)
52    assert_equal dbnode.lat, node.latitude.to_f/SCALE
53    assert_equal dbnode.lon, node.longitude.to_f/SCALE
54    assert_equal dbnode.changeset_id, node.changeset_id
55    assert_equal dbnode.timestamp, node.timestamp
56    assert_equal dbnode.version, node.version
57    assert_equal dbnode.visible, node.visible
58    #assert_equal node.tile, QuadTile.tile_for_point(node.lat, node.lon)
59    assert_valid node
60  end
61 
62  # This helper method will check to make sure that a node is outwith the world,
63  # and has the same lat, lon and timesamp than what was put into the db by the
64  # fixture
65  def invalid_node_test(nod)
66    node = current_nodes(nod)
67    dbnode = Node.find(node.id)
68    assert_equal dbnode.lat, node.latitude.to_f/SCALE
69    assert_equal dbnode.lon, node.longitude.to_f/SCALE
70    assert_equal dbnode.changeset_id, node.changeset_id
71    assert_equal dbnode.timestamp, node.timestamp
72    assert_equal dbnode.version, node.version
73    assert_equal dbnode.visible, node.visible
74    #assert_equal node.tile, QuadTile.tile_for_point(node.lat, node.lon)
75    assert_equal false, dbnode.valid?
76  end
77 
78  # Check that you can create a node and store it
79  def test_create
80    node_template = Node.new(:latitude => 12.3456,
81                             :longitude => 65.4321,
82                             :changeset_id => changesets(:normal_user_first_change).id,
83                             :visible => 1, 
84                             :version => 1)
85    assert node_template.create_with_history(users(:normal_user))
86
87    node = Node.find(node_template.id)
88    assert_not_nil node
89    assert_equal node_template.latitude, node.latitude
90    assert_equal node_template.longitude, node.longitude
91    assert_equal node_template.changeset_id, node.changeset_id
92    assert_equal node_template.visible, node.visible
93    assert_equal node_template.timestamp.to_i, node.timestamp.to_i
94
95    assert_equal OldNode.find(:all, :conditions => [ "id = ?", node_template.id ]).length, 1
96    old_node = OldNode.find(:first, :conditions => [ "id = ?", node_template.id ])
97    assert_not_nil old_node
98    assert_equal node_template.latitude, old_node.latitude
99    assert_equal node_template.longitude, old_node.longitude
100    assert_equal node_template.changeset_id, old_node.changeset_id
101    assert_equal node_template.visible, old_node.visible
102    assert_equal node_template.tags, old_node.tags
103    assert_equal node_template.timestamp.to_i, old_node.timestamp.to_i
104  end
105
106  def test_update
107    node_template = Node.find(current_nodes(:visible_node).id)
108    assert_not_nil node_template
109
110    assert_equal OldNode.find(:all, :conditions => [ "id = ?", node_template.id ]).length, 1
111    old_node_template = OldNode.find(:first, :conditions => [ "id = ?", node_template.id ])
112    assert_not_nil old_node_template
113
114    node_template.latitude = 12.3456
115    node_template.longitude = 65.4321
116    #node_template.tags = "updated=yes"
117    assert node_template.update_from(old_node_template, users(:normal_user))
118
119    node = Node.find(node_template.id)
120    assert_not_nil node
121    assert_equal node_template.latitude, node.latitude
122    assert_equal node_template.longitude, node.longitude
123    assert_equal node_template.changeset_id, node.changeset_id
124    assert_equal node_template.visible, node.visible
125    #assert_equal node_template.tags, node.tags
126    assert_equal node_template.timestamp.to_i, node.timestamp.to_i
127
128    assert_equal OldNode.find(:all, :conditions => [ "id = ?", node_template.id ]).length, 2
129    assert_equal OldNode.find(:all, :conditions => [ "id = ? and timestamp = ?", node_template.id, node_template.timestamp ]).length, 1
130    old_node = OldNode.find(:first, :conditions => [ "id = ? and timestamp = ?", node_template.id, node_template.timestamp ])
131    assert_not_nil old_node
132    assert_equal node_template.latitude, old_node.latitude
133    assert_equal node_template.longitude, old_node.longitude
134    assert_equal node_template.changeset_id, old_node.changeset_id
135    assert_equal node_template.visible, old_node.visible
136    #assert_equal node_template.tags, old_node.tags
137    assert_equal node_template.timestamp.to_i, old_node.timestamp.to_i
138  end
139
140  def test_delete
141    node_template = Node.find(current_nodes(:visible_node))
142    assert_not_nil node_template
143
144    assert_equal OldNode.find(:all, :conditions => [ "id = ?", node_template.id ]).length, 1
145    old_node_template = OldNode.find(:first, :conditions => [ "id = ?", node_template.id ])
146    assert_not_nil old_node_template
147
148    assert node_template.delete_with_history!(old_node_template, users(:normal_user))
149
150    node = Node.find(node_template.id)
151    assert_not_nil node
152    assert_equal node_template.latitude, node.latitude
153    assert_equal node_template.longitude, node.longitude
154    assert_equal node_template.changeset_id, node.changeset_id
155    assert_equal node_template.visible, node.visible
156    #assert_equal node_template.tags, node.tags
157    assert_equal node_template.timestamp.to_i, node.timestamp.to_i
158
159    assert_equal OldNode.find(:all, :conditions => [ "id = ?", node_template.id ]).length, 2
160    assert_equal OldNode.find(:all, :conditions => [ "id = ? and timestamp = ?", node_template.id, node_template.timestamp ]).length, 1
161    old_node = OldNode.find(:first, :conditions => [ "id = ? and timestamp = ?", node_template.id, node_template.timestamp ])
162    assert_not_nil old_node
163    assert_equal node_template.latitude, old_node.latitude
164    assert_equal node_template.longitude, old_node.longitude
165    assert_equal node_template.changeset_id, old_node.changeset_id
166    assert_equal node_template.visible, old_node.visible
167    #assert_equal node_template.tags, old_node.tags
168    assert_equal node_template.timestamp.to_i, old_node.timestamp.to_i
169  end
170end
Note: See TracBrowser for help on using the repository browser.