Relation Tag testing. Also sort the belong_to/has_many for user/changeset/old_way.

This commit is contained in:
Shaun McDonald 2008-11-18 18:50:24 +00:00
parent 96dfe22fb0
commit b7b2b502cf
6 changed files with 144 additions and 3 deletions

View file

@ -1,5 +1,5 @@
class OldWayTag < ActiveRecord::Base
belongs_to :user
belongs_to :old_way
set_table_name 'way_tags'

View file

@ -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

View file

@ -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'

View file

@ -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

View file

@ -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

View file

@ -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