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 38cd8014f734efe2d27629127609cd7813532288..5baee2d59aabb3aa3950385eca8df939428cb22c 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 e926e06a210baa326842920a2c113f39085aee05..f2fe341aecc2bf6fcc3b82701201fb11eb48f03b 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 badcd74a2cb7d9d1975e9306559c56fb9fbd3e60..be115c53eaaaa026d38559ad63c5316326872968 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 ffddc7945396b72180ce5571f459c4ca8076ce25..e2a6505112fadd9b639c899cd3b5d295133e13d4 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 ce856e208d00072bbcef3d1531029dcb667e0e2e..da9cf0697104ecea39d12db601d17f26e1be8cec 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 2a2ec3dcae843dd10bc8f8c9c7ecdc2583ccea3f..19548f20ceed02e0d1c62f8afbff51ee53f353c7 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 3b3f9243283e64eee1ec27b7d34ac97e2db7d0df..e2e1ae302c17bd465c4561f9dcc7d2d9e0958946 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 2c6515cb7db019344d8d0a525e22f1b11f30f689..a2c8d7fb66379aa445cb4e3410fc4e9c44309d23 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!