More model validations. Fixing one test.
authorShaun McDonald <shaun@shaunmcdonald.me.uk>
Tue, 25 Nov 2008 17:23:47 +0000 (17:23 +0000)
committerShaun McDonald <shaun@shaunmcdonald.me.uk>
Tue, 25 Nov 2008 17:23:47 +0000 (17:23 +0000)
app/models/changeset.rb
app/models/node.rb
app/models/old_node.rb
app/models/old_relation.rb
app/models/old_way.rb
app/models/relation.rb
app/models/way.rb
test/unit/node_test.rb

index 38cd801..5baee2d 100644 (file)
@@ -12,8 +12,15 @@ class Changeset < ActiveRecord::Base
   has_many :old_ways
   has_many :old_relations
   
-  validates_presence_of :user_id, :created_at, :closed_at
-  
+  validates_presence_of :id, :on => :update
+  validates_presence_of :user_id, :created_at, :closed_at, :num_changes
+  validates_uniqueness_of :id
+  validates_numericality_of :id, :on => :update, :integer_only => true
+  validates_numericality_of :min_lat, :max_lat, :min_lon, :max_lat, :allow_nil => true, :integer_only => true
+  validates_numericality_of :user_id,  :integer_only => true, :greater_than_or_equal_to => 1
+  validates_numericality_of :num_changes, :integer_only => true, :greater_than_or_equal_to => 0
+  validates_associated :user
+
   # over-expansion factor to use when updating the bounding box
   EXPAND = 0.1
 
index e926e06..f2fe341 100644 (file)
@@ -6,11 +6,6 @@ class Node < ActiveRecord::Base
 
   set_table_name 'current_nodes'
 
-  validates_presence_of :changeset_id, :timestamp
-  validates_inclusion_of :visible, :in => [ true, false ]
-  validates_numericality_of :latitude, :longitude
-  validate :validate_position
-
   belongs_to :changeset
 
   has_many :old_nodes, :foreign_key => :id
@@ -26,6 +21,15 @@ class Node < ActiveRecord::Base
   has_many :containing_relation_members, :class_name => "RelationMember", :as => :member
   has_many :containing_relations, :class_name => "Relation", :through => :containing_relation_members, :source => :relation, :extend => ObjectFinder
 
+  validates_presence_of :id, :on => :update
+  validates_presence_of :timestamp,:version,  :changeset_id
+  validates_uniqueness_of :id
+  validates_inclusion_of :visible, :in => [ true, false ]
+  validates_numericality_of :latitude, :longitude, :changeset_id, :version, :integer_only => true
+  validates_numericality_of :id, :on => :update, :integer_only => true
+  validate :validate_position
+  validates_associated :changeset
+
   # Sanity check the latitude and longitude and add an error if it's broken
   def validate_position
     errors.add_to_base("Node is not in the world") unless in_world?
index badcd74..be115c5 100644 (file)
@@ -8,6 +8,7 @@ class OldNode < ActiveRecord::Base
   validates_inclusion_of :visible, :in => [ true, false ]
   validates_numericality_of :latitude, :longitude
   validate :validate_position
+  validates_associated :changeset
 
   belongs_to :changeset
  
index ffddc79..e2a6505 100644 (file)
@@ -4,6 +4,8 @@ class OldRelation < ActiveRecord::Base
   set_table_name 'relations'
 
   belongs_to :changeset
+  
+  validates_associated :changeset
 
   def self.from_relation(relation)
     old_relation = OldRelation.new
index ce856e2..da9cf06 100644 (file)
@@ -5,6 +5,8 @@ class OldWay < ActiveRecord::Base
 
   belongs_to :changeset
 
+  validates_associated :changeset
+  
   def self.from_way(way)
     old_way = OldWay.new
     old_way.visible = way.visible
index 2a2ec3d..19548f2 100644 (file)
@@ -15,6 +15,14 @@ class Relation < ActiveRecord::Base
   has_many :containing_relation_members, :class_name => "RelationMember", :as => :member
   has_many :containing_relations, :class_name => "Relation", :through => :containing_relation_members, :source => :relation, :extend => ObjectFinder
 
+  validates_presence_of :id, :on => :update
+  validates_presence_of :timestamp,:version,  :changeset_id 
+  validates_uniqueness_of :id
+  validates_inclusion_of :visible, :in => [ true, false ]
+  validates_numericality_of :id, :on => :update, :integer_only => true
+  validates_numericality_of :changeset_id, :version, :integer_only => true
+  validates_associated :changeset
+  
   TYPES = ["node", "way", "relation"]
 
   def self.from_xml(xml, create=false)
index 3b3f924..e2e1ae3 100644 (file)
@@ -4,9 +4,6 @@ class Way < ActiveRecord::Base
   include ConsistencyValidations
 
   set_table_name 'current_ways'
-
-  validates_presence_of :changeset_id, :timestamp
-  validates_inclusion_of :visible, :in => [ true, false ]
   
   belongs_to :changeset
 
@@ -20,6 +17,14 @@ class Way < ActiveRecord::Base
   has_many :containing_relation_members, :class_name => "RelationMember", :as => :member
   has_many :containing_relations, :class_name => "Relation", :through => :containing_relation_members, :source => :relation, :extend => ObjectFinder
 
+  validates_presence_of :id, :on => :update
+  validates_presence_of :changeset_id,:version,  :timestamp
+  validates_uniqueness_of :id
+  validates_inclusion_of :visible, :in => [ true, false ]
+  validates_numericality_of :changeset_id, :version, :integer_only => true
+  validates_numericality_of :id, :on => :update, :integer_only => true
+  validates_associated :changeset
+
   def self.from_xml(xml, create=false)
     begin
       p = XML::Parser.new
index 2c6515c..a2c8d7f 100644 (file)
@@ -79,7 +79,7 @@ class NodeTest < Test::Unit::TestCase
   def test_create
     node_template = Node.new(:latitude => 12.3456,
                              :longitude => 65.4321,
-                             :changeset_id => changesets(:normal_user_first_change),
+                             :changeset_id => changesets(:normal_user_first_change).id,
                              :visible => 1, 
                              :version => 1)
     assert node_template.save_with_history!