From b7b2b502cf2b119208e3c1f79e4a4e38cc0edcc5 Mon Sep 17 00:00:00 2001 From: Shaun McDonald Date: Tue, 18 Nov 2008 18:50:24 +0000 Subject: [PATCH] Relation Tag testing. Also sort the belong_to/has_many for user/changeset/old_way. --- app/models/old_way_tag.rb | 2 +- app/models/relation_tag.rb | 4 ++ app/models/user.rb | 1 + test/unit/old_relation_tag_test.rb | 76 ++++++++++++++++++++++++++++++ test/unit/relation_tag_test.rb | 60 +++++++++++++++++++++++ test/unit/way_tag_test.rb | 4 +- 6 files changed, 144 insertions(+), 3 deletions(-) create mode 100644 test/unit/old_relation_tag_test.rb diff --git a/app/models/old_way_tag.rb b/app/models/old_way_tag.rb index 547fd177c..68003cbeb 100644 --- a/app/models/old_way_tag.rb +++ b/app/models/old_way_tag.rb @@ -1,5 +1,5 @@ class OldWayTag < ActiveRecord::Base - belongs_to :user + belongs_to :old_way set_table_name 'way_tags' diff --git a/app/models/relation_tag.rb b/app/models/relation_tag.rb index 939165ebd..812b2ec35 100644 --- a/app/models/relation_tag.rb +++ b/app/models/relation_tag.rb @@ -3,4 +3,8 @@ class RelationTag < ActiveRecord::Base belongs_to :relation, :foreign_key => 'id' + 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 diff --git a/app/models/user.rb b/app/models/user.rb index 80faf68e9..ecf41fd18 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -9,6 +9,7 @@ class User < ActiveRecord::Base has_many :friends, :include => :befriendee, :conditions => ["users.visible = ?", true] has_many :tokens, :class_name => "UserToken" has_many :preferences, :class_name => "UserPreference" + has_many :changesets validates_presence_of :email, :display_name validates_confirmation_of :email, :message => 'Email addresses must match' diff --git a/test/unit/old_relation_tag_test.rb b/test/unit/old_relation_tag_test.rb new file mode 100644 index 000000000..309e2fe80 --- /dev/null +++ b/test/unit/old_relation_tag_test.rb @@ -0,0 +1,76 @@ +require File.dirname(__FILE__) + '/../test_helper' + +class RelationTagTest < Test::Unit::TestCase + fixtures :relation_tags + set_fixture_class :relation_tags => OldRelationTag + + def test_tag_count + assert_equal 3, OldRlationTag.count + end + + def test_length_key_valid + key = "k" + (0..255).each do |i| + tag = OldRelationTag.new + tag.id = relation_tags(:t1).id + tag.version = 1 + tag.k = key*i + tag.v = "v" + assert_valid tag + end + end + + def test_length_value_valid + val = "v" + (0..255).each do |i| + tag = OldRelationTag.new + tag.id = relation_tags(:t1).id + tag.version = 1 + tag.k = "k" + tag.v = val*i + assert_valid tag + end + end + + def test_length_key_invalid + ["k"*256].each do |i| + tag = OldRelationTag.new + tag.id = relation_tags(:t1).id + tag.version = 1 + tag.k = i + tag.v = "v" + assert !tag.valid?, "Key should be too long" + assert tag.errors.invalid?(:k) + end + end + + def test_length_value_invalid + ["k"*256].each do |i| + tag = OldRelationTag.new + tag.id = relation_tags(:t1).id + tag.version = 1 + tag.k = "k" + tag.v = i + assert !tag.valid?, "Value should be too long" + assert tag.errors.invalid?(:v) + end + end + + def test_empty_node_tag_invalid + tag = OldRelationTag.new + assert !tag.valid?, "Empty tag should be invalid" + assert tag.errors.invalid?(:id) + end + + def test_uniqueness + tag = OldRelationTag.new + tag.id = relation_tags(:t1).id + tag.version = relation_tags(:t1).version + tag.k = relation_tags(:t1).k + tag.v = relation_tags(:t1).v + assert tag.new_record? + assert !tag.valid? + assert_raise(ActiveRecord::RecordInvalid) {tag.save!} + assert tag.new_record? + end +end diff --git a/test/unit/relation_tag_test.rb b/test/unit/relation_tag_test.rb index 38c8af22b..f93e689ca 100644 --- a/test/unit/relation_tag_test.rb +++ b/test/unit/relation_tag_test.rb @@ -8,4 +8,64 @@ class RelationTagTest < Test::Unit::TestCase assert_equal 3, RelationTag.count end + def test_length_key_valid + key = "k" + (0..255).each do |i| + tag = RelationTag.new + tag.id = 1 + tag.k = key*i + tag.v = "v" + assert_valid tag + end + end + + def test_length_value_valid + val = "v" + (0..255).each do |i| + tag = RelationTag.new + tag.id = 1 + tag.k = "k" + tag.v = val*i + assert_valid tag + end + end + + def test_length_key_invalid + ["k"*256].each do |i| + tag = RelationTag.new + tag.id = 1 + tag.k = i + tag.v = "v" + assert !tag.valid?, "Key #{i} should be too long" + assert tag.errors.invalid?(:k) + end + end + + def test_length_value_invalid + ["v"*256].each do |i| + tag = RelationTag.new + tag.id = 1 + tag.k = "k" + tag.v = i + assert !tag.valid?, "Value #{i} should be too long" + assert tag.errors.invalid?(:v) + end + end + + def test_empty_tag_invalid + tag = RelationTag.new + assert !tag.valid?, "Empty relation tag should be invalid" + assert tag.errors.invalid?(:id) + end + + def test_uniquness + tag = RelationTag.new + tag.id = current_relation_tags(:t1).id + tag.k = current_relation_tags(:t1).k + tag.v = current_relation_tags(:t1).v + assert tag.new_record? + assert !tag.valid? + assert_raise(ActiveRecord::RecordInvalid) {tag.save!} + assert tag.new_record? + end end diff --git a/test/unit/way_tag_test.rb b/test/unit/way_tag_test.rb index 44b96ffe3..fc1c8efa5 100644 --- a/test/unit/way_tag_test.rb +++ b/test/unit/way_tag_test.rb @@ -42,7 +42,7 @@ class WayTagTest < Test::Unit::TestCase end def test_length_value_invalid - ["k"*256].each do |i| + ["v"*256].each do |i| tag = WayTag.new tag.id = current_way_tags(:t1).id tag.k = "k" @@ -57,7 +57,7 @@ class WayTagTest < Test::Unit::TestCase assert tag.errors.invalid?(:id) end - def test_uniquess + def test_uniquness tag = WayTag.new tag.id = current_way_tags(:t1).id tag.k = current_way_tags(:t1).k -- 2.39.5