From: Shaun McDonald Date: Mon, 17 Nov 2008 18:53:09 +0000 (+0000) Subject: Adding validations for the length of node tags, and the presence of the id (and versi... X-Git-Tag: live~7609^2~142 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/9a4ea6bfd09acd76533e29e1d4c22c6037909707 Adding validations for the length of node tags, and the presence of the id (and version). More tests, including some boiler plate tests. --- diff --git a/app/models/node_tag.rb b/app/models/node_tag.rb index 9795ff493..de3d0629c 100644 --- a/app/models/node_tag.rb +++ b/app/models/node_tag.rb @@ -2,4 +2,7 @@ class NodeTag < ActiveRecord::Base set_table_name 'current_node_tags' belongs_to :node, :foreign_key => 'id' + + validates_presence_of :id + validates_length_of :k, :v, :within => 0..255, :allow_blank => true end diff --git a/app/models/old_node_tag.rb b/app/models/old_node_tag.rb index 26a6c92b4..ef32a0613 100644 --- a/app/models/old_node_tag.rb +++ b/app/models/old_node_tag.rb @@ -3,5 +3,7 @@ class OldNodeTag < ActiveRecord::Base set_table_name 'node_tags' + validates_presence_of :id, :version + validates_length_of :k, :v, :within => 0..255, :allow_blank => true end diff --git a/test/fixtures/friends.yml b/test/fixtures/friends.yml new file mode 100644 index 000000000..782f1e3d2 --- /dev/null +++ b/test/fixtures/friends.yml @@ -0,0 +1,4 @@ +normal_user_with_second_user: + id: 1 + user_id: 1 + friend_user_id: 2 diff --git a/test/unit/current_node_tag_test.rb b/test/unit/current_node_tag_test.rb deleted file mode 100644 index 143fa2442..000000000 --- a/test/unit/current_node_tag_test.rb +++ /dev/null @@ -1,22 +0,0 @@ -require File.dirname(__FILE__) + '/../test_helper' - -class CurrentNodeTagTest < Test::Unit::TestCase - fixtures :current_node_tags, :current_nodes - set_fixture_class :current_nodes => Node - set_fixture_class :current_node_tags => NodeTag - - def test_tag_count - assert_equal 6, NodeTag.count - node_tag_count(:visible_node, 1) - node_tag_count(:invisible_node, 1) - node_tag_count(:used_node_1, 1) - node_tag_count(:used_node_2, 1) - node_tag_count(:node_with_versions, 2) - end - - def node_tag_count (node, count) - nod = current_nodes(node) - assert_equal count, nod.node_tags.count - end - -end diff --git a/test/unit/diary_comment_test.rb b/test/unit/diary_comment_test.rb new file mode 100644 index 000000000..d7f30a69c --- /dev/null +++ b/test/unit/diary_comment_test.rb @@ -0,0 +1,11 @@ +require File.dirname(__FILE__) + '/../test_helper' + +class DiaryCommentTest < Test::Unit::TestCase + fixtures :diary_comments + + + def test_diary_comment_count + assert_equal 1, DiaryComment.count + end + +end diff --git a/test/unit/diary_entry_test.rb b/test/unit/diary_entry_test.rb new file mode 100644 index 000000000..0e10f8a9a --- /dev/null +++ b/test/unit/diary_entry_test.rb @@ -0,0 +1,11 @@ +require File.dirname(__FILE__) + '/../test_helper' + +class DiaryEntryTest < Test::Unit::TestCase + fixtures :diary_entries + + + def test_diary_entry_count + assert_equal 2, DiaryEntry.count + end + +end diff --git a/test/unit/friend_test.rb b/test/unit/friend_test.rb new file mode 100644 index 000000000..fd8b5033f --- /dev/null +++ b/test/unit/friend_test.rb @@ -0,0 +1,11 @@ +require File.dirname(__FILE__) + '/../test_helper' + +class FriendTest < Test::Unit::TestCase + fixtures :friends + + + def test_friend_count + assert_equal 1, Friend.count + end + +end diff --git a/test/unit/node_tag_test.rb b/test/unit/node_tag_test.rb index 5e4d47953..fe6ebb166 100644 --- a/test/unit/node_tag_test.rb +++ b/test/unit/node_tag_test.rb @@ -1,11 +1,71 @@ require File.dirname(__FILE__) + '/../test_helper' class NodeTagTest < Test::Unit::TestCase - fixtures :current_node_tags + fixtures :current_node_tags, :current_nodes + set_fixture_class :current_nodes => Node set_fixture_class :current_node_tags => NodeTag - def test_node_tag_count + def test_tag_count assert_equal 6, NodeTag.count + node_tag_count(:visible_node, 1) + node_tag_count(:invisible_node, 1) + node_tag_count(:used_node_1, 1) + node_tag_count(:used_node_2, 1) + node_tag_count(:node_with_versions, 2) end + def node_tag_count (node, count) + nod = current_nodes(node) + assert_equal count, nod.node_tags.count + end + + def test_length_key_valid + key = "k" + (0..255).each do |i| + tag = NodeTag.new + tag.id = current_node_tags(:t1).id + 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 = NodeTag.new + tag.id = current_node_tags(:t1).id + tag.k = "k" + tag.v = val*i + assert_valid tag + end + end + + def test_length_key_invalid + ["k"*256].each do |i| + tag = NodeTag.new + tag.id = current_node_tags(:t1).id + tag.k = i + tag.v = "v", "Key should be too long" + assert !tag.valid? + assert tag.errors.invalid?(:k) + end + end + + def test_length_value_invalid + ["k"*256].each do |i| + tag = NodeTag.new + tag.id = current_node_tags(:t1).id + 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 = NodeTag.new + assert !tag.valid?, "Empty tag should be invalid" + assert tag.errors.invalid?(:id) + end end diff --git a/test/unit/old_node_tag_test.rb b/test/unit/old_node_tag_test.rb new file mode 100644 index 000000000..4a9bcbfcb --- /dev/null +++ b/test/unit/old_node_tag_test.rb @@ -0,0 +1,66 @@ +require File.dirname(__FILE__) + '/../test_helper' + +class OldNodeTest < Test::Unit::TestCase + set_fixture_class :nodes => OldNode + set_fixture_class :node_tags => OldNodeTag + fixtures :users, :nodes, :node_tags + + def test_old_node_tag_count + assert_equal 8, OldNodeTag.count, "Unexpected number of fixtures loaded." + end + + def test_length_key_valid + key = "k" + (0..255).each do |i| + tag = OldNodeTag.new + tag.id = node_tags(:t1).id + tag.version = node_tags(:t1).version + 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 = OldNodeTag.new + tag.id = node_tags(:t1).id + tag.version = node_tags(:t1).version + tag.k = "k" + tag.v = val*i + assert_valid tag + end + end + + def test_length_key_invalid + ["k"*256].each do |i| + tag = OldNodeTag.new + tag.id = node_tags(:t1).id + tag.version = node_tags(:t1).version + tag.k = i + tag.v = "v", "Key should be too long" + assert !tag.valid? + assert tag.errors.invalid?(:k) + end + end + + def test_length_value_invalid + ["k"*256].each do |i| + tag = OldNodeTag.new + tag.id = node_tags(:t1).id + tag.version = node_tags(:t1).version + tag.k = "k" + tag.v = i + assert !tag.valid?, "Value should be too long" + assert tag.errors.invalid?(:v) + end + end + + def test_empty_old_node_tag_invalid + tag = OldNodeTag.new + assert !tag.valid?, "Empty tag should be invalid" + assert tag.errors.invalid?(:id) + assert tag.errors.invalid?(:version) + end +end diff --git a/test/unit/user_test.rb b/test/unit/user_test.rb index 486344fee..c0df4b716 100644 --- a/test/unit/user_test.rb +++ b/test/unit/user_test.rb @@ -96,7 +96,7 @@ class UserTest < Test::Unit::TestCase end def test_friend_with - assert_equal false, users(:normal_user).is_friends_with?(users(:second_user)) + assert_equal true, users(:normal_user).is_friends_with?(users(:second_user)) assert_equal false, users(:normal_user).is_friends_with?(users(:inactive_user)) assert_equal false, users(:second_user).is_friends_with?(users(:normal_user)) assert_equal false, users(:second_user).is_friends_with?(users(:inactive_user)) @@ -114,15 +114,15 @@ class UserTest < Test::Unit::TestCase end def test_friends_with - # make normal user a friend of second user + # normal user is a friend of second user # it should be a one way friend accossitation - assert_equal 0, Friend.count + assert_equal 1, Friend.count norm = users(:normal_user) sec = users(:second_user) - friend = Friend.new - friend.befriender = norm - friend.befriendee = sec - friend.save + #friend = Friend.new + #friend.befriender = norm + #friend.befriendee = sec + #friend.save assert_equal [sec], norm.nearby assert_equal 1, norm.nearby.size assert_equal 1, Friend.count @@ -133,7 +133,7 @@ class UserTest < Test::Unit::TestCase assert_equal false, users(:second_user).is_friends_with?(users(:inactive_user)) assert_equal false, users(:inactive_user).is_friends_with?(users(:normal_user)) assert_equal false, users(:inactive_user).is_friends_with?(users(:second_user)) - Friend.delete(friend) - assert_equal 0, Friend.count + #Friend.delete(friend) + #assert_equal 0, Friend.count end end