resync from rails_port 11795:12304
[rails.git] / test / unit / node_tag_test.rb
1 require File.dirname(__FILE__) + '/../test_helper'
2
3 class NodeTagTest < Test::Unit::TestCase
4   fixtures :current_node_tags, :current_nodes
5   set_fixture_class :current_nodes => Node
6   set_fixture_class :current_node_tags => NodeTag
7   
8   def test_tag_count
9     assert_equal 6, NodeTag.count
10     node_tag_count(:visible_node, 1)
11     node_tag_count(:invisible_node, 1)
12     node_tag_count(:used_node_1, 1)
13     node_tag_count(:used_node_2, 1)
14     node_tag_count(:node_with_versions, 2)
15   end
16   
17   def node_tag_count (node, count)
18     nod = current_nodes(node)
19     assert_equal count, nod.node_tags.count
20   end
21   
22   def test_length_key_valid
23     key = "k"
24     (0..255).each do |i|
25       tag = NodeTag.new
26       tag.id = current_node_tags(:t1).id
27       tag.k = key*i
28       tag.v = "v"
29       assert_valid tag
30     end
31   end
32   
33   def test_length_value_valid
34     val = "v"
35     (0..255).each do |i|
36       tag = NodeTag.new
37       tag.id = current_node_tags(:t1).id
38       tag.k = "k"
39       tag.v = val*i
40       assert_valid tag
41     end
42   end
43   
44   def test_length_key_invalid
45     ["k"*256].each do |i|
46       tag = NodeTag.new
47       tag.id = current_node_tags(:t1).id
48       tag.k = i
49       tag.v = "v"
50       assert !tag.valid?, "Key should be too long"
51       assert tag.errors.invalid?(:k)
52     end
53   end
54   
55   def test_length_value_invalid
56     ["k"*256].each do |i|
57       tag = NodeTag.new
58       tag.id = current_node_tags(:t1).id
59       tag.k = "k"
60       tag.v = i
61       assert !tag.valid?, "Value should be too long"
62       assert tag.errors.invalid?(:v)
63     end
64   end
65   
66   def test_empty_node_tag_invalid
67     tag = NodeTag.new
68     assert !tag.valid?, "Empty tag should be invalid"
69     assert tag.errors.invalid?(:id)
70   end
71   
72   def test_uniqueness
73     tag = NodeTag.new
74     tag.id = current_node_tags(:t1).id
75     tag.k = current_node_tags(:t1).k
76     tag.v = current_node_tags(:t1).v
77     assert tag.new_record?
78     assert !tag.valid?
79     assert_raise(ActiveRecord::RecordInvalid) {tag.save!}
80     assert tag.new_record?
81   end
82 end