public
Description: Composite Primary Keys support for Active Record
Homepage: http://compositekeys.rubyforge.org
Clone URL: git://github.com/drnic/composite_primary_keys.git
Search Repo:
created test for oracle_enhanced adapter
Raimonds Simanovskis (author)
Mon Jul 14 14:11:27 -0700 2008
commit  4f33e8a2762a2a18fb72043c255382db0d1542dd
tree    97045336ff4d6a7a6bab558d53f4718b1a1f13ea
parent  78729877bd77d0aef699a7b6373694990470d10d
...
1
2
3
4
 
5
6
7
...
1
2
3
 
4
5
6
7
0
@@ -1,7 +1,7 @@
0
 require 'active_record'
0
 
0
 # UNTESTED - firebird sqlserver sqlserver_odbc db2 sybase openbase
0
-for adapter in %w( mysql sqlite oracle postgresql ibm_db )
0
+for adapter in %w( mysql sqlite oracle oracle_enhanced postgresql ibm_db )
0
   Rake::TestTask.new("test_#{adapter}") { |t|
0
     t.libs << "test" << "test/connections/native_#{adapter}"
0
     t.pattern = "test/test_*.rb"
...
27
28
29
30
31
 
 
 
 
 
 
 
32
...
27
28
29
 
30
31
32
33
34
35
36
37
38
0
@@ -27,4 +27,10 @@ drop sequence comments_seq;
0
 drop table hacks;
0
 drop table kitchen_sinks;
0
 drop table restaurants;
0
-drop table restaurants_suburbs;
0
\ No newline at end of file
0
+drop table restaurants_suburbs;
0
+drop table dorms;
0
+drop sequence dorms_seq;
0
+drop table rooms;
0
+drop table room_attributes;
0
+drop sequence room_attributes_seq;
0
+drop table room_attribute_assignments;
0
\ No newline at end of file
...
157
158
159
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
160
161
...
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
0
@@ -157,4 +157,33 @@ create table restaurants_suburbs (
0
   store_id number(11) not null,
0
   city_id number(11) not null,
0
   suburb_id number(11) not null
0
+);
0
+
0
+create table dorms (
0
+ id number(11) not null,
0
+ constraint dorms_pk primary key (id)
0
+);
0
+
0
+create sequence dorms_seq
0
+ start with 1000;
0
+
0
+create table rooms (
0
+ dorm_id number(11) not null,
0
+ room_id number(11) not null,
0
+ constraint rooms_pk primary key (dorm_id, room_id)
0
+);
0
+
0
+create table room_attributes (
0
+ id number(11) not null,
0
+ name varchar(50),
0
+ constraint room_attributes_pk primary key (id)
0
+);
0
+
0
+create sequence room_attributes_seq
0
+ start with 1000;
0
+
0
+create table room_attribute_assignments (
0
+ dorm_id number(11) not null,
0
+ room_id number(11) not null,
0
+ room_attribute_id number(11) not null
0
 );
0
\ No newline at end of file
...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
84
85
...
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
0
@@ -1,84 +1,84 @@
0
-require 'abstract_unit'
0
-require 'fixtures/reference_type'
0
-require 'fixtures/reference_code'
0
-require 'fixtures/product'
0
-require 'fixtures/tariff'
0
-require 'fixtures/product_tariff'
0
-
0
-class TestAttributes < Test::Unit::TestCase
0
- fixtures :reference_types, :reference_codes, :products, :tariffs, :product_tariffs
0
-
0
- CLASSES = {
0
- :single => {
0
- :class => ReferenceType,
0
- :primary_keys => :reference_type_id,
0
- },
0
- :dual => {
0
- :class => ReferenceCode,
0
- :primary_keys => [:reference_type_id, :reference_code],
0
- },
0
- }
0
-
0
- def setup
0
- self.class.classes = CLASSES
0
- end
0
-
0
- def test_brackets
0
- testing_with do
0
- @first.attributes.each_pair do |attr_name, value|
0
- assert_equal value, @first[attr_name]
0
- end
0
- end
0
- end
0
-
0
- def test_brackets_primary_key
0
- testing_with do
0
- assert_equal @first.id, @first[@primary_keys], "[] failing for #{@klass}"
0
- assert_equal @first.id, @first[@first.class.primary_key]
0
- end
0
- end
0
-
0
- def test_brackets_assignment
0
- testing_with do
0
- @first.attributes.each_pair do |attr_name, value|
0
- @first[attr_name]= !value.nil? ? value * 2 : '1'
0
- assert_equal !value.nil? ? value * 2 : '1', @first[attr_name]
0
- end
0
- end
0
- end
0
-
0
- def test_brackets_foreign_key_assignment
0
- @flat = Tariff.find(1, Date.today.to_s(:db))
0
- @second_free = ProductTariff.find(2,2,Date.today.to_s(:db))
0
- @second_free_fk = [:tariff_id, :tariff_start_date]
0
- @second_free[key = @second_free_fk] = @flat.id
0
- compare_indexes('@flat', @flat.class.primary_key, '@second_free', @second_free_fk)
0
- assert_equal @flat.id, @second_free[key]
0
- @second_free[key = @second_free_fk.to_composite_ids] = @flat.id
0
- assert_equal @flat.id, @second_free[key]
0
- compare_indexes('@flat', @flat.class.primary_key, '@second_free', @second_free_fk)
0
- @second_free[key = @second_free_fk.to_composite_ids] = @flat.id.to_s
0
- assert_equal @flat.id, @second_free[key]
0
- compare_indexes('@flat', @flat.class.primary_key, '@second_free', @second_free_fk)
0
- @second_free[key = @second_free_fk.to_composite_ids] = @flat.id.to_s
0
- assert_equal @flat.id, @second_free[key]
0
- compare_indexes('@flat', @flat.class.primary_key, '@second_free', @second_free_fk)
0
- @second_free[key = @second_free_fk.to_composite_ids.to_s] = @flat.id
0
- assert_equal @flat.id, @second_free[key]
0
- compare_indexes('@flat', @flat.class.primary_key, '@second_free', @second_free_fk)
0
- @second_free[key = @second_free_fk.to_composite_ids.to_s] = @flat.id.to_s
0
- assert_equal @flat.id, @second_free[key]
0
- compare_indexes('@flat', @flat.class.primary_key, '@second_free', @second_free_fk)
0
- end
0
-private
0
- def compare_indexes(obj_name1, indexes1, obj_name2, indexes2)
0
- obj1, obj2 = eval "[#{obj_name1}, #{obj_name2}]"
0
- indexes1.length.times do |key_index|
0
- assert_equal obj1[indexes1[key_index].to_s],
0
- obj2[indexes2[key_index].to_s],
0
- "#{obj_name1}[#{indexes1[key_index]}]=#{obj1[indexes1[key_index].to_s].inspect} != " +
0
- "#{obj_name2}[#{indexes2[key_index]}]=#{obj2[indexes2[key_index].to_s].inspect}; " +
0
- "#{obj_name2} = #{obj2.inspect}"
0
- end
0
- end
0
+require 'abstract_unit'
0
+require 'fixtures/reference_type'
0
+require 'fixtures/reference_code'
0
+require 'fixtures/product'
0
+require 'fixtures/tariff'
0
+require 'fixtures/product_tariff'
0
+
0
+class TestAttributes < Test::Unit::TestCase
0
+ fixtures :reference_types, :reference_codes, :products, :tariffs, :product_tariffs
0
+
0
+ CLASSES = {
0
+ :single => {
0
+ :class => ReferenceType,
0
+ :primary_keys => :reference_type_id,
0
+ },
0
+ :dual => {
0
+ :class => ReferenceCode,
0
+ :primary_keys => [:reference_type_id, :reference_code],
0
+ },
0
+ }
0
+
0
+ def setup
0
+ self.class.classes = CLASSES
0
+ end
0
+
0
+ def test_brackets
0
+ testing_with do
0
+ @first.attributes.each_pair do |attr_name, value|
0
+ assert_equal value, @first[attr_name]
0
+ end
0
+ end
0
+ end
0
+
0
+ def test_brackets_primary_key
0
+ testing_with do
0
+ assert_equal @first.id, @first[@primary_keys], "[] failing for #{@klass}"
0
+ assert_equal @first.id, @first[@first.class.primary_key]
0
+ end
0
+ end
0
+
0
+ def test_brackets_assignment
0
+ testing_with do
0
+ @first.attributes.each_pair do |attr_name, value|
0
+ @first[attr_name]= !value.nil? ? value * 2 : '1'
0
+ assert_equal !value.nil? ? value * 2 : '1', @first[attr_name]
0
+ end
0
+ end
0
+ end
0
+
0
+ def test_brackets_foreign_key_assignment
0
+ @flat = Tariff.find(1, Date.today.to_s(:db))
0
+ @second_free = ProductTariff.find(2,2,Date.today.to_s(:db))
0
+ @second_free_fk = [:tariff_id, :tariff_start_date]
0
+ @second_free[key = @second_free_fk] = @flat.id
0
+ compare_indexes('@flat', @flat.class.primary_key, '@second_free', @second_free_fk)
0
+ assert_equal @flat.id, @second_free[key]
0
+ @second_free[key = @second_free_fk.to_composite_ids] = @flat.id
0
+ assert_equal @flat.id, @second_free[key]
0
+ compare_indexes('@flat', @flat.class.primary_key, '@second_free', @second_free_fk)
0
+ @second_free[key = @second_free_fk.to_composite_ids] = @flat.id.to_s
0
+ assert_equal @flat.id, @second_free[key]
0
+ compare_indexes('@flat', @flat.class.primary_key, '@second_free', @second_free_fk)
0
+ @second_free[key = @second_free_fk.to_composite_ids] = @flat.id.to_s
0
+ assert_equal @flat.id, @second_free[key]
0
+ compare_indexes('@flat', @flat.class.primary_key, '@second_free', @second_free_fk)
0
+ @second_free[key = @second_free_fk.to_composite_ids.to_s] = @flat.id
0
+ assert_equal @flat.id, @second_free[key]
0
+ compare_indexes('@flat', @flat.class.primary_key, '@second_free', @second_free_fk)
0
+ @second_free[key = @second_free_fk.to_composite_ids.to_s] = @flat.id.to_s
0
+ assert_equal @flat.id, @second_free[key]
0
+ compare_indexes('@flat', @flat.class.primary_key, '@second_free', @second_free_fk)
0
+ end
0
+private
0
+ def compare_indexes(obj_name1, indexes1, obj_name2, indexes2)
0
+ obj1, obj2 = eval "[#{obj_name1}, #{obj_name2}]"
0
+ indexes1.length.times do |key_index|
0
+ assert_equal obj1[indexes1[key_index].to_s],
0
+ obj2[indexes2[key_index].to_s],
0
+ "#{obj_name1}[#{indexes1[key_index]}]=#{obj1[indexes1[key_index].to_s].inspect} != " +
0
+ "#{obj_name2}[#{indexes2[key_index]}]=#{obj2[indexes2[key_index].to_s].inspect}; " +
0
+ "#{obj_name2} = #{obj2.inspect}"
0
+ end
0
+ end
0
 end
0
\ No newline at end of file

Comments

    No one has commented yet.