]> git.openstreetmap.org Git - rails.git/blob - vendor/gems/composite_primary_keys-2.2.2/test/test_ids.rb
Merge branch 'master' into openstreetbugs
[rails.git] / vendor / gems / composite_primary_keys-2.2.2 / test / test_ids.rb
1 require 'abstract_unit'
2 require 'fixtures/reference_type'
3 require 'fixtures/reference_code'
4
5 class TestIds < Test::Unit::TestCase
6   fixtures :reference_types, :reference_codes
7   
8   CLASSES = {
9     :single => {
10       :class => ReferenceType,
11       :primary_keys => [:reference_type_id],
12     },
13     :dual   => { 
14       :class => ReferenceCode,
15       :primary_keys => [:reference_type_id, :reference_code],
16     },
17     :dual_strs   => { 
18       :class => ReferenceCode,
19       :primary_keys => ['reference_type_id', 'reference_code'],
20     },
21   }
22   
23   def setup
24     self.class.classes = CLASSES
25   end
26   
27   def test_id
28     testing_with do
29       assert_equal @first.id, @first.ids if composite?
30     end
31   end
32   
33   def test_id_to_s
34     testing_with do
35       assert_equal first_id_str, @first.id.to_s
36       assert_equal first_id_str, "#{@first.id}"
37     end
38   end
39   
40   def test_ids_to_s
41     testing_with do
42       order = @klass.primary_key.is_a?(String) ? @klass.primary_key : @klass.primary_key.join(',')
43       to_test = @klass.find(:all, :order => order)[0..1].map(&:id)
44       assert_equal '(1,1),(1,2)', @klass.ids_to_s(to_test) if @key_test == :dual
45       assert_equal '1,1;1,2', @klass.ids_to_s(to_test, ',', ';', '', '') if @key_test == :dual
46     end
47   end
48   
49   def test_composite_where_clause
50     testing_with do
51       where = 'reference_codes.reference_type_id=1 AND reference_codes.reference_code=2) OR (reference_codes.reference_type_id=2 AND reference_codes.reference_code=2'
52       assert_equal(where, @klass.composite_where_clause([[1, 2], [2, 2]])) if @key_test == :dual
53     end
54   end
55   
56   def test_set_ids_string
57     testing_with do
58       array = @primary_keys.collect {|key| 5}
59       expected = composite? ? array.to_composite_keys : array.first
60       @first.id = expected.to_s
61       assert_equal expected, @first.id
62     end
63   end
64   
65   def test_set_ids_array
66     testing_with do
67       array = @primary_keys.collect {|key| 5}
68       expected = composite? ? array.to_composite_keys : array.first
69       @first.id = expected
70       assert_equal expected, @first.id
71     end
72   end
73   
74   def test_set_ids_comp
75     testing_with do
76       array = @primary_keys.collect {|key| 5}
77       expected = composite? ? array.to_composite_keys : array.first
78       @first.id = expected
79       assert_equal expected, @first.id
80     end
81   end
82   
83   def test_primary_keys
84     testing_with do
85       if composite?
86         assert_not_nil @klass.primary_keys
87         assert_equal @primary_keys.map {|key| key.to_sym}, @klass.primary_keys
88         assert_equal @klass.primary_keys, @klass.primary_key
89       else
90         assert_not_nil @klass.primary_key
91         assert_equal @primary_keys, [@klass.primary_key.to_sym]
92       end
93       assert_equal @primary_keys.join(','), @klass.primary_key.to_s
94       # Need a :primary_keys should be Array with to_s overridden
95     end
96   end
97 end