More tag validations, and finishing the node/way/relation tests.
authorShaun McDonald <shaun@shaunmcdonald.me.uk>
Wed, 19 Nov 2008 17:23:15 +0000 (17:23 +0000)
committerShaun McDonald <shaun@shaunmcdonald.me.uk>
Wed, 19 Nov 2008 17:23:15 +0000 (17:23 +0000)
app/models/node_tag.rb
app/models/old_node_tag.rb
app/models/old_relation_tag.rb
app/models/old_way_tag.rb
test/unit/node_tag_test.rb
test/unit/old_node_tag_test.rb
test/unit/old_relation_tag_test.rb

index 6b21e4b01422a6e18c017afc18730d136fd3e68f..4942601128d908c7d1fc4306d02fb51c98f9883e 100644 (file)
@@ -5,4 +5,6 @@ class NodeTag < ActiveRecord::Base
   
   validates_presence_of :id
   validates_length_of :k, :v, :maximum => 255, :allow_blank => true
+  validates_uniqueness_of :id, :scope => :k
+  validates_numericality_of :id, :only_integer => true
 end
index 392e3934ed4ada476794b61ddbd0e0a31cea7208..3fd4bf86b4fb71504e5c92f58fa6da570f8f0c07 100644 (file)
@@ -1,9 +1,10 @@
 class OldNodeTag < ActiveRecord::Base
-  belongs_to :user
-
   set_table_name 'node_tags'
+  
+  belongs_to :user
 
   validates_presence_of :id, :version
   validates_length_of :k, :v, :maximum => 255, :allow_blank => true
-
+  validates_uniqueness_of :id, :scope => [:k, :version]
+  validates_numericality_of :id, :version, :only_integer => true
 end
index 7ce6f694e633bb2a2110711229b1be8b6886e275..0fcb113269ea475fef4438d747ccee8eb9c69e26 100644 (file)
@@ -1,3 +1,10 @@
 class OldRelationTag < ActiveRecord::Base
   set_table_name 'relation_tags'
+  
+  belongs_to :old_relation, :foreign_key => [:id, :version]
+  
+  validates_presence_of :id, :version
+  validates_length_of :k, :v, :maximum => 255, :allow_blank => true
+  validates_uniqueness_of :id, :scope => [:k, :version]
+  validates_numericality_of :id, :version, :only_integer => true
 end
index 68003cbebad7151084f4cd9f8369d8b43094f7cd..801532dbaa7632d2074e33fbb48ac4a5251285a3 100644 (file)
@@ -1,8 +1,8 @@
 class OldWayTag < ActiveRecord::Base
-  belongs_to :old_way
-
   set_table_name 'way_tags'
 
+  belongs_to :old_way, :foreign_key => [:id, :version]
+
   validates_presence_of :id
   validates_length_of :k, :v, :maximum => 255, :allow_blank => true
   validates_uniqueness_of :id, :scope => [:k, :version]
index 9d3da03b1ea40ffb9b6d97ce6e6fd05605732fdf..2ff9f9f00563addb235919c6b25eae0f38f1ae59 100644 (file)
@@ -68,4 +68,15 @@ class NodeTagTest < Test::Unit::TestCase
     assert !tag.valid?, "Empty tag should be invalid"
     assert tag.errors.invalid?(:id)
   end
+  
+  def test_uniqueness
+    tag = NodeTag.new
+    tag.id = current_node_tags(:t1).id
+    tag.k = current_node_tags(:t1).k
+    tag.v = current_node_tags(:t1).v
+    assert tag.new_record?
+    assert !tag.valid?
+    assert_raise(ActiveRecord::RecordInvalid) {tag.save!}
+    assert tag.new_record?
+  end
 end
index 4a9bcbfcb95fbb4ba52a92bd49b33c8ef012f7c7..4971843489a88853d9f534d671702f4455f1a7fd 100644 (file)
@@ -63,4 +63,16 @@ class OldNodeTest < Test::Unit::TestCase
     assert tag.errors.invalid?(:id)
     assert tag.errors.invalid?(:version)
   end
+  
+  def test_uniqueness
+    tag = OldNodeTag.new
+    tag.id = node_tags(:t1).id
+    tag.version = node_tags(:t1).version
+    tag.k = node_tags(:t1).k
+    tag.v = node_tags(:t1).v
+    assert tag.new_record?
+    assert !tag.valid?
+    assert_raise(ActiveRecord::RecordInvalid) {tag.save!}
+    assert tag.new_record?
+  end
 end
index 309e2fe80899e5b7b9472b098b0430c6caa7e1af..d651810c0ff4b74f2549130e5eab9fcaf53f382a 100644 (file)
@@ -1,11 +1,11 @@
 require File.dirname(__FILE__) + '/../test_helper'
 
-class RelationTagTest < Test::Unit::TestCase
+class OldRelationTagTest < Test::Unit::TestCase
   fixtures :relation_tags
   set_fixture_class :relation_tags => OldRelationTag
   
   def test_tag_count
-    assert_equal 3, OldRlationTag.count
+    assert_equal 3, OldRelationTag.count
   end
   
   def test_length_key_valid