]> git.openstreetmap.org Git - rails.git/blobdiff - test/unit/relation_tag_test.rb
Update to iD v1.3.6
[rails.git] / test / unit / relation_tag_test.rb
index 5c008fc34c415759dc2e8bda5f2819177e207416..0833c572d1de0480ac519e2913a8e33770e6820a 100644 (file)
@@ -1,20 +1,20 @@
 require File.dirname(__FILE__) + '/../test_helper'
 
-class RelationTagTest < Test::Unit::TestCase
+class RelationTagTest < ActiveSupport::TestCase
   api_fixtures
   
   def test_relation_tag_count
-    assert_equal 3, RelationTag.count
+    assert_equal 9, RelationTag.count
   end
   
   def test_length_key_valid
     key = "k"
     (0..255).each do |i|
       tag = RelationTag.new
-      tag.id = 1
+      tag.relation_id = 1
       tag.k = key*i
       tag.v = "v"
-      assert_valid tag
+      assert tag.valid?
     end
   end
   
@@ -22,44 +22,44 @@ class RelationTagTest < Test::Unit::TestCase
     val = "v"
     (0..255).each do |i|
       tag = RelationTag.new
-      tag.id = 1
+      tag.relation_id = 1
       tag.k = "k"
       tag.v = val*i
-      assert_valid tag
+      assert tag.valid?
     end
   end
   
   def test_length_key_invalid
     ["k"*256].each do |i|
       tag = RelationTag.new
-      tag.id = 1
+      tag.relation_id = 1
       tag.k = i
       tag.v = "v"
       assert !tag.valid?, "Key #{i} should be too long"
-      assert tag.errors.invalid?(:k)
+      assert tag.errors[:k].any?
     end
   end
   
   def test_length_value_invalid
     ["v"*256].each do |i|
       tag = RelationTag.new
-      tag.id = 1
+      tag.relation_id = 1
       tag.k = "k"
       tag.v = i
       assert !tag.valid?, "Value #{i} should be too long"
-      assert tag.errors.invalid?(:v)
+      assert tag.errors[:v].any?
     end
   end
   
   def test_empty_tag_invalid
     tag = RelationTag.new
     assert !tag.valid?, "Empty relation tag should be invalid"
-    assert tag.errors.invalid?(:id)
+    assert tag.errors[:relation].any?
   end
   
   def test_uniquness
     tag = RelationTag.new
-    tag.id = current_relation_tags(:t1).id
+    tag.relation_id = current_relation_tags(:t1).relation_id
     tag.k = current_relation_tags(:t1).k
     tag.v = current_relation_tags(:t1).v
     assert tag.new_record?
@@ -67,4 +67,28 @@ class RelationTagTest < Test::Unit::TestCase
     assert_raise(ActiveRecord::RecordInvalid) {tag.save!}
     assert tag.new_record?
   end
+
+  ##
+  # test that tags can be updated and saved uniquely, i.e: tag.save!
+  # only affects the single tag that the activerecord object 
+  # represents. this amounts to testing that the primary key is
+  # unique.
+  #
+  # Commenting this out - I attempted to fix it, but composite primary keys
+  # wasn't playing nice with the column already called :id. Seemed to be 
+  # impossible to have validations on the :id column. If someone knows better
+  # please fix, otherwise this test is shelved.
+  #
+  # def test_update
+  #   v = "probably unique string here 3142592654"
+  #   assert_equal 0, RelationTag.count(:conditions => ['v=?', v])
+
+  #   # make sure we select a tag on a relation which has more than one tag
+  #   id = current_relations(:multi_tag_relation).relation_id
+  #   tag = RelationTag.find(:first, :conditions => ["id = ?", id])
+  #   tag.v = v
+  #   tag.save!
+
+  #   assert_equal 1, RelationTag.count(:conditions => ['v=?', v])
+  # end
 end