Changeset tag unit tests

This commit is contained in:
Shaun McDonald 2008-11-19 18:00:52 +00:00
parent ffbc4d5cb2
commit d6b4b8c8a1
3 changed files with 68 additions and 5 deletions

View file

@ -1,5 +1,8 @@
class ChangesetTag < ActiveRecord::Base
belongs_to :changeset, :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

@ -2,10 +2,69 @@ require File.dirname(__FILE__) + '/../test_helper'
class ChangesetTagTest < Test::Unit::TestCase
fixtures :changeset_tags
def test_changeset_tags_count
def test_changeset_tag_count
assert_equal 1, ChangesetTag.count
end
def test_length_key_valid
key = "k"
(0..255).each do |i|
tag = ChangesetTag.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 = ChangesetTag.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 |k|
tag = ChangesetTag.new
tag.id = 1
tag.k = k
tag.v = "v"
assert !tag.valid?, "Key #{k} should be too long"
assert tag.errors.invalid?(:k)
end
end
def test_length_value_invalid
["v"*256].each do |v|
tag = ChangesetTag.new
tag.id = 1
tag.k = "k"
tag.v = v
assert !tag.valid?, "Value #{v} should be too long"
assert tag.errors.invalid?(:v)
end
end
def test_empty_tag_invalid
tag = ChangesetTag.new
assert !tag.valid?, "Empty tag should be invalid"
assert tag.errors.invalid?(:id)
end
def test_uniqueness
tag = ChangesetTag.new
tag.id = changeset_tags(:changeset_1_tag_1).id
tag.k = changeset_tags(:changeset_1_tag_1).k
tag.v = changeset_tags(:changeset_1_tag_1).v
assert tag.new_record?
assert !tag.valid?
assert_raise(ActiveRecord::RecordInvalid) {tag.save!}
assert tag.new_record?
end
end

View file

@ -48,6 +48,7 @@ class WayTagTest < Test::Unit::TestCase
tag.k = "k"
tag.v = i
assert !tag.valid?, "Value #{i} should be too long"
assert tag.errors.invalid?(:v)
end
end
@ -57,7 +58,7 @@ class WayTagTest < Test::Unit::TestCase
assert tag.errors.invalid?(:id)
end
def test_uniquness
def test_uniqueness
tag = WayTag.new
tag.id = current_way_tags(:t1).id
tag.k = current_way_tags(:t1).k