Adding some additional node fixtures to test edge cases. Having a bit of an issue...
[rails.git] / test / unit / node_test.rb
1 require File.dirname(__FILE__) + '/../test_helper'
2 require 'Node'
3
4 class NodeTest < Test::Unit::TestCase
5   fixtures :current_nodes, :nodes, :users, :current_node_tags, :node_tags
6   set_fixture_class :current_nodes => :Node
7   set_fixture_class :nodes => :OldNode
8   set_fixture_class :node_tags => :OldNodeTag
9   set_fixture_class :currenr_node_tags => :NodeTag
10     
11   def test_node_too_far_north
12     node = current_nodes(:node_too_far_north)
13     assert !node.valid?
14     assert node.error.invalid?(:latitude)
15   end
16   
17   def test_node_too_far_south
18     node = current_nodes(:node_too_far_south)
19     assert !node.valid?
20   end
21   
22   def test_node_too_far_west
23     node = current_nodes(:node_too_far_west)
24     assert !node.valid?
25   end
26   
27   def test_node_too_far_east
28     node = current_nodes(:node_too_far_east)
29     assert !node.valid?
30   end
31   
32   def test_totally_wrong
33     node = current_nodes(:node_totally_wrong)
34     assert !node.valid?
35   end
36   
37   def test_create
38     node_template = Node.new(:latitude => 12.3456,
39                              :longitude => 65.4321,
40                              :user_id => users(:normal_user),
41                              :visible => 1, 
42                              :version => 1)
43     assert node_template.save_with_history!
44
45     node = Node.find(node_template.id)
46     assert_not_nil node
47     assert_equal node_template.latitude, node.latitude
48     assert_equal node_template.longitude, node.longitude
49     assert_equal node_template.user_id, node.user_id
50     assert_equal node_template.visible, node.visible
51     assert_equal node_template.timestamp.to_i, node.timestamp.to_i
52
53     assert_equal OldNode.find(:all, :conditions => [ "id = ?", node_template.id ]).length, 1
54     old_node = OldNode.find(:first, :conditions => [ "id = ?", node_template.id ])
55     assert_not_nil old_node
56     assert_equal node_template.latitude, old_node.latitude
57     assert_equal node_template.longitude, old_node.longitude
58     assert_equal node_template.user_id, old_node.user_id
59     assert_equal node_template.visible, old_node.visible
60     assert_equal node_template.tags, old_node.tags
61     assert_equal node_template.timestamp.to_i, old_node.timestamp.to_i
62   end
63
64   def test_update
65     node_template = Node.find(current_nodes(:visible_node).id)
66     assert_not_nil node_template
67
68     assert_equal OldNode.find(:all, :conditions => [ "id = ?", node_template.id ]).length, 1
69     old_node_template = OldNode.find(:first, :conditions => [ "id = ?", node_template.id ])
70     assert_not_nil old_node_template
71
72     node_template.latitude = 12.3456
73     node_template.longitude = 65.4321
74     #node_template.tags = "updated=yes"
75     assert node_template.save_with_history!
76
77     node = Node.find(node_template.id)
78     assert_not_nil node
79     assert_equal node_template.latitude, node.latitude
80     assert_equal node_template.longitude, node.longitude
81     assert_equal node_template.user_id, node.user_id
82     assert_equal node_template.visible, node.visible
83     #assert_equal node_template.tags, node.tags
84     assert_equal node_template.timestamp.to_i, node.timestamp.to_i
85
86     assert_equal OldNode.find(:all, :conditions => [ "id = ?", node_template.id ]).length, 2
87     assert_equal OldNode.find(:all, :conditions => [ "id = ? and timestamp = ?", node_template.id, node_template.timestamp ]).length, 1
88     old_node = OldNode.find(:first, :conditions => [ "id = ? and timestamp = ?", node_template.id, node_template.timestamp ])
89     assert_not_nil old_node
90     assert_equal node_template.latitude, old_node.latitude
91     assert_equal node_template.longitude, old_node.longitude
92     assert_equal node_template.user_id, old_node.user_id
93     assert_equal node_template.visible, old_node.visible
94     #assert_equal node_template.tags, old_node.tags
95     assert_equal node_template.timestamp.to_i, old_node.timestamp.to_i
96   end
97
98   def test_delete
99     node_template = Node.find(current_nodes(:visible_node))
100     assert_not_nil node_template
101
102     assert_equal OldNode.find(:all, :conditions => [ "id = ?", node_template.id ]).length, 1
103     old_node_template = OldNode.find(:first, :conditions => [ "id = ?", node_template.id ])
104     assert_not_nil old_node_template
105
106     node_template.visible = 0
107     assert node_template.save_with_history!
108
109     node = Node.find(node_template.id)
110     assert_not_nil node
111     assert_equal node_template.latitude, node.latitude
112     assert_equal node_template.longitude, node.longitude
113     assert_equal node_template.user_id, node.user_id
114     assert_equal node_template.visible, node.visible
115     #assert_equal node_template.tags, node.tags
116     assert_equal node_template.timestamp.to_i, node.timestamp.to_i
117
118     assert_equal OldNode.find(:all, :conditions => [ "id = ?", node_template.id ]).length, 2
119     assert_equal OldNode.find(:all, :conditions => [ "id = ? and timestamp = ?", node_template.id, node_template.timestamp ]).length, 1
120     old_node = OldNode.find(:first, :conditions => [ "id = ? and timestamp = ?", node_template.id, node_template.timestamp ])
121     assert_not_nil old_node
122     assert_equal node_template.latitude, old_node.latitude
123     assert_equal node_template.longitude, old_node.longitude
124     assert_equal node_template.user_id, old_node.user_id
125     assert_equal node_template.visible, old_node.visible
126     #assert_equal node_template.tags, old_node.tags
127     assert_equal node_template.timestamp.to_i, old_node.timestamp.to_i
128   end
129 end