]> git.openstreetmap.org Git - rails.git/blob - vendor/gems/composite_primary_keys-1.1.0/test/test_find.rb
Merged 14009:14059 from trunk.
[rails.git] / vendor / gems / composite_primary_keys-1.1.0 / test / test_find.rb
1 require 'abstract_unit'\r
2 require 'fixtures/reference_type'\r
3 require 'fixtures/reference_code'\r
4 \r
5 # Testing the find action on composite ActiveRecords with two primary keys\r
6 class TestFind < Test::Unit::TestCase\r
7   fixtures :reference_types, :reference_codes\r
8   \r
9   CLASSES = {\r
10     :single => {\r
11       :class => ReferenceType,\r
12       :primary_keys => [:reference_type_id],\r
13     },\r
14     :dual   => { \r
15       :class => ReferenceCode,\r
16       :primary_keys => [:reference_type_id, :reference_code],\r
17     },\r
18     :dual_strs   => { \r
19       :class => ReferenceCode,\r
20       :primary_keys => ['reference_type_id', 'reference_code'],\r
21     },\r
22   }\r
23   \r
24   def setup\r
25     self.class.classes = CLASSES\r
26   end\r
27   \r
28   def test_find_first\r
29     testing_with do\r
30       obj = @klass.find(:first)\r
31       assert obj\r
32       assert_equal @klass, obj.class\r
33     end\r
34   end\r
35   \r
36   def test_find\r
37     testing_with do\r
38       found = @klass.find(*first_id) # e.g. find(1,1) or find 1,1\r
39       assert found\r
40       assert_equal @klass, found.class\r
41       assert_equal found, @klass.find(found.id)\r
42       assert_equal found, @klass.find(found.to_param)\r
43     end\r
44   end\r
45   \r
46   def test_find_composite_ids\r
47     testing_with do\r
48       found = @klass.find(first_id) # e.g. find([1,1].to_composite_ids)\r
49       assert found\r
50       assert_equal @klass, found.class\r
51       assert_equal found, @klass.find(found.id)\r
52       assert_equal found, @klass.find(found.to_param)\r
53     end\r
54   end\r
55   \r
56   def test_to_param\r
57     testing_with do\r
58       assert_equal first_id_str, @first.to_param.to_s\r
59     end\r
60   end\r
61   \r
62   def things_to_look_at\r
63     testing_with do\r
64       assert_equal found, @klass.find(found.id.to_s) # fails for 2+ keys\r
65     end\r
66   end\r
67   \r
68   def test_not_found\r
69     assert_raise(::ActiveRecord::RecordNotFound) do\r
70       ReferenceCode.send :find, '999,999'\r
71     end\r
72   end\r
73 end