composite_primary_keys 1.0.3 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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