composite_primary_keys 1.0.3 → 1.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,7 @@
1
+ == 1.0.4 2008-07-15
2
+
3
+ * support for oracle_enhanced adapter [thx Raimonds Simanovskis]
4
+
1
5
  == 1.0.3 2008-07-13
2
6
 
3
7
  * more fixes and tests for has many through [thx Menno van der Sman]
@@ -1,7 +1,7 @@
1
1
  require 'active_record'
2
2
 
3
3
  # UNTESTED - firebird sqlserver sqlserver_odbc db2 sybase openbase
4
- for adapter in %w( mysql sqlite oracle postgresql ibm_db )
4
+ for adapter in %w( mysql sqlite oracle oracle_enhanced postgresql ibm_db )
5
5
  Rake::TestTask.new("test_#{adapter}") { |t|
6
6
  t.libs << "test" << "test/connections/native_#{adapter}"
7
7
  t.pattern = "test/test_*.rb"
@@ -27,4 +27,10 @@ drop sequence comments_seq;
27
27
  drop table hacks;
28
28
  drop table kitchen_sinks;
29
29
  drop table restaurants;
30
- drop table restaurants_suburbs;
30
+ drop table restaurants_suburbs;
31
+ drop table dorms;
32
+ drop sequence dorms_seq;
33
+ drop table rooms;
34
+ drop table room_attributes;
35
+ drop sequence room_attributes_seq;
36
+ drop table room_attribute_assignments;
@@ -157,4 +157,33 @@ create table restaurants_suburbs (
157
157
  store_id number(11) not null,
158
158
  city_id number(11) not null,
159
159
  suburb_id number(11) not null
160
+ );
161
+
162
+ create table dorms (
163
+ id number(11) not null,
164
+ constraint dorms_pk primary key (id)
165
+ );
166
+
167
+ create sequence dorms_seq
168
+ start with 1000;
169
+
170
+ create table rooms (
171
+ dorm_id number(11) not null,
172
+ room_id number(11) not null,
173
+ constraint rooms_pk primary key (dorm_id, room_id)
174
+ );
175
+
176
+ create table room_attributes (
177
+ id number(11) not null,
178
+ name varchar(50),
179
+ constraint room_attributes_pk primary key (id)
180
+ );
181
+
182
+ create sequence room_attributes_seq
183
+ start with 1000;
184
+
185
+ create table room_attribute_assignments (
186
+ dorm_id number(11) not null,
187
+ room_id number(11) not null,
188
+ room_attribute_id number(11) not null
160
189
  );
@@ -11,10 +11,11 @@ require 'fixtures/room_attribute'
11
11
  require 'fixtures/room_attribute_assignment'
12
12
  require 'fixtures/student'
13
13
  require 'fixtures/room_assignment'
14
+ require 'fixtures/user'
14
15
 
15
16
  class TestAssociations < Test::Unit::TestCase
16
17
  fixtures :products, :tariffs, :product_tariffs, :suburbs, :streets, :restaurants, :restaurants_suburbs,
17
- :dorms, :rooms, :room_attributes, :room_attribute_assignments, :students, :room_assignments
18
+ :dorms, :rooms, :room_attributes, :room_attribute_assignments, :students, :room_assignments, :users
18
19
 
19
20
  def test_quoted_table_columns
20
21
  assert_equal "product_tariffs.product_id,product_tariffs.tariff_id,product_tariffs.tariff_start_date",
@@ -31,7 +32,7 @@ class TestAssociations < Test::Unit::TestCase
31
32
  assert_equal 0, room.room_attributes.find(:all, :conditions => ["room_attributes.name != ?", "keg"]).size
32
33
  end
33
34
 
34
- def test_has_many_through_on_custom_finder_when_through_association_is_not_composite
35
+ def test_has_many_through_on_custom_finder_when_through_association_is_composite_finder_when_through_association_is_not_composite
35
36
  user = User.find(:first)
36
37
  assert_equal 1, user.find_custom_articles.size
37
38
  end
@@ -1,84 +1,84 @@
1
- require 'abstract_unit'
2
- require 'fixtures/reference_type'
3
- require 'fixtures/reference_code'
4
- require 'fixtures/product'
5
- require 'fixtures/tariff'
6
- require 'fixtures/product_tariff'
7
-
8
- class TestAttributes < Test::Unit::TestCase
9
- fixtures :reference_types, :reference_codes, :products, :tariffs, :product_tariffs
10
-
11
- CLASSES = {
12
- :single => {
13
- :class => ReferenceType,
14
- :primary_keys => :reference_type_id,
15
- },
16
- :dual => {
17
- :class => ReferenceCode,
18
- :primary_keys => [:reference_type_id, :reference_code],
19
- },
20
- }
21
-
22
- def setup
23
- self.class.classes = CLASSES
24
- end
25
-
26
- def test_brackets
27
- testing_with do
28
- @first.attributes.each_pair do |attr_name, value|
29
- assert_equal value, @first[attr_name]
30
- end
31
- end
32
- end
33
-
34
- def test_brackets_primary_key
35
- testing_with do
36
- assert_equal @first.id, @first[@primary_keys], "[] failing for #{@klass}"
37
- assert_equal @first.id, @first[@first.class.primary_key]
38
- end
39
- end
40
-
41
- def test_brackets_assignment
42
- testing_with do
43
- @first.attributes.each_pair do |attr_name, value|
44
- @first[attr_name]= !value.nil? ? value * 2 : '1'
45
- assert_equal !value.nil? ? value * 2 : '1', @first[attr_name]
46
- end
47
- end
48
- end
49
-
50
- def test_brackets_foreign_key_assignment
51
- @flat = Tariff.find(1, Date.today.to_s(:db))
52
- @second_free = ProductTariff.find(2,2,Date.today.to_s(:db))
53
- @second_free_fk = [:tariff_id, :tariff_start_date]
54
- @second_free[key = @second_free_fk] = @flat.id
55
- compare_indexes('@flat', @flat.class.primary_key, '@second_free', @second_free_fk)
56
- assert_equal @flat.id, @second_free[key]
57
- @second_free[key = @second_free_fk.to_composite_ids] = @flat.id
58
- assert_equal @flat.id, @second_free[key]
59
- compare_indexes('@flat', @flat.class.primary_key, '@second_free', @second_free_fk)
60
- @second_free[key = @second_free_fk.to_composite_ids] = @flat.id.to_s
61
- assert_equal @flat.id, @second_free[key]
62
- compare_indexes('@flat', @flat.class.primary_key, '@second_free', @second_free_fk)
63
- @second_free[key = @second_free_fk.to_composite_ids] = @flat.id.to_s
64
- assert_equal @flat.id, @second_free[key]
65
- compare_indexes('@flat', @flat.class.primary_key, '@second_free', @second_free_fk)
66
- @second_free[key = @second_free_fk.to_composite_ids.to_s] = @flat.id
67
- assert_equal @flat.id, @second_free[key]
68
- compare_indexes('@flat', @flat.class.primary_key, '@second_free', @second_free_fk)
69
- @second_free[key = @second_free_fk.to_composite_ids.to_s] = @flat.id.to_s
70
- assert_equal @flat.id, @second_free[key]
71
- compare_indexes('@flat', @flat.class.primary_key, '@second_free', @second_free_fk)
72
- end
73
- private
74
- def compare_indexes(obj_name1, indexes1, obj_name2, indexes2)
75
- obj1, obj2 = eval "[#{obj_name1}, #{obj_name2}]"
76
- indexes1.length.times do |key_index|
77
- assert_equal obj1[indexes1[key_index].to_s],
78
- obj2[indexes2[key_index].to_s],
79
- "#{obj_name1}[#{indexes1[key_index]}]=#{obj1[indexes1[key_index].to_s].inspect} != " +
80
- "#{obj_name2}[#{indexes2[key_index]}]=#{obj2[indexes2[key_index].to_s].inspect}; " +
81
- "#{obj_name2} = #{obj2.inspect}"
82
- end
83
- end
1
+ require 'abstract_unit'
2
+ require 'fixtures/reference_type'
3
+ require 'fixtures/reference_code'
4
+ require 'fixtures/product'
5
+ require 'fixtures/tariff'
6
+ require 'fixtures/product_tariff'
7
+
8
+ class TestAttributes < Test::Unit::TestCase
9
+ fixtures :reference_types, :reference_codes, :products, :tariffs, :product_tariffs
10
+
11
+ CLASSES = {
12
+ :single => {
13
+ :class => ReferenceType,
14
+ :primary_keys => :reference_type_id,
15
+ },
16
+ :dual => {
17
+ :class => ReferenceCode,
18
+ :primary_keys => [:reference_type_id, :reference_code],
19
+ },
20
+ }
21
+
22
+ def setup
23
+ self.class.classes = CLASSES
24
+ end
25
+
26
+ def test_brackets
27
+ testing_with do
28
+ @first.attributes.each_pair do |attr_name, value|
29
+ assert_equal value, @first[attr_name]
30
+ end
31
+ end
32
+ end
33
+
34
+ def test_brackets_primary_key
35
+ testing_with do
36
+ assert_equal @first.id, @first[@primary_keys], "[] failing for #{@klass}"
37
+ assert_equal @first.id, @first[@first.class.primary_key]
38
+ end
39
+ end
40
+
41
+ def test_brackets_assignment
42
+ testing_with do
43
+ @first.attributes.each_pair do |attr_name, value|
44
+ @first[attr_name]= !value.nil? ? value * 2 : '1'
45
+ assert_equal !value.nil? ? value * 2 : '1', @first[attr_name]
46
+ end
47
+ end
48
+ end
49
+
50
+ def test_brackets_foreign_key_assignment
51
+ @flat = Tariff.find(1, Date.today.to_s(:db))
52
+ @second_free = ProductTariff.find(2,2,Date.today.to_s(:db))
53
+ @second_free_fk = [:tariff_id, :tariff_start_date]
54
+ @second_free[key = @second_free_fk] = @flat.id
55
+ compare_indexes('@flat', @flat.class.primary_key, '@second_free', @second_free_fk)
56
+ assert_equal @flat.id, @second_free[key]
57
+ @second_free[key = @second_free_fk.to_composite_ids] = @flat.id
58
+ assert_equal @flat.id, @second_free[key]
59
+ compare_indexes('@flat', @flat.class.primary_key, '@second_free', @second_free_fk)
60
+ @second_free[key = @second_free_fk.to_composite_ids] = @flat.id.to_s
61
+ assert_equal @flat.id, @second_free[key]
62
+ compare_indexes('@flat', @flat.class.primary_key, '@second_free', @second_free_fk)
63
+ @second_free[key = @second_free_fk.to_composite_ids] = @flat.id.to_s
64
+ assert_equal @flat.id, @second_free[key]
65
+ compare_indexes('@flat', @flat.class.primary_key, '@second_free', @second_free_fk)
66
+ @second_free[key = @second_free_fk.to_composite_ids.to_s] = @flat.id
67
+ assert_equal @flat.id, @second_free[key]
68
+ compare_indexes('@flat', @flat.class.primary_key, '@second_free', @second_free_fk)
69
+ @second_free[key = @second_free_fk.to_composite_ids.to_s] = @flat.id.to_s
70
+ assert_equal @flat.id, @second_free[key]
71
+ compare_indexes('@flat', @flat.class.primary_key, '@second_free', @second_free_fk)
72
+ end
73
+ private
74
+ def compare_indexes(obj_name1, indexes1, obj_name2, indexes2)
75
+ obj1, obj2 = eval "[#{obj_name1}, #{obj_name2}]"
76
+ indexes1.length.times do |key_index|
77
+ assert_equal obj1[indexes1[key_index].to_s],
78
+ obj2[indexes2[key_index].to_s],
79
+ "#{obj_name1}[#{indexes1[key_index]}]=#{obj1[indexes1[key_index].to_s].inspect} != " +
80
+ "#{obj_name2}[#{indexes2[key_index]}]=#{obj2[indexes2[key_index].to_s].inspect}; " +
81
+ "#{obj_name2} = #{obj2.inspect}"
82
+ end
83
+ end
84
84
  end
Binary file
@@ -33,7 +33,7 @@
33
33
  <h1>Composite Primary Keys</h1>
34
34
  <div id="version" class="clickable" onclick='document.location = "http://rubyforge.org/projects/compositekeys"; return false'>
35
35
  Get Version
36
- <a href="http://rubyforge.org/projects/compositekeys" class="numbers">1.0.2</a>
36
+ <a href="http://rubyforge.org/projects/compositekeys" class="numbers">1.0.3</a>
37
37
  </div>
38
38
  <h1>&#x2192; Ruby on Rails</h1>
39
39
 
@@ -296,7 +296,7 @@ other stories and things.</p>
296
296
 
297
297
  <p>Comments are welcome. Send an email to <a href="mailto:drnicwilliams@gmail.com">Dr Nic Williams</a>.</p>
298
298
  <p class="coda">
299
- <a href="mailto:drnicwilliams@gmail.com">Dr Nic</a>, 6th June 2008<br>
299
+ <a href="mailto:drnicwilliams@gmail.com">Dr Nic</a>, 15th July 2008<br>
300
300
  Theme extended from <a href="http://rb2js.rubyforge.org/">Paul Battley</a>
301
301
  </p>
302
302
  </div>
@@ -1,3 +1,3 @@
1
1
  // Announcement JS file
2
- var version = "1.0.2";
2
+ var version = "1.0.3";
3
3
  MagicAnnouncement.show('compositekeys', version);
@@ -1,4 +1,4 @@
1
1
  // Version JS file
2
- var version = "1.0.2";
2
+ var version = "1.0.3";
3
3
 
4
4
  document.write(" - " + version);
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: composite_primary_keys
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dr Nic Williams
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-07-13 00:00:00 -05:00
12
+ date: 2008-07-15 00:00:00 -05:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency