composite_primary_keys 14.0.5 → 14.0.7

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.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/History.rdoc +21 -0
  3. data/Rakefile +1 -1
  4. data/lib/composite_primary_keys/associations/association.rb +2 -2
  5. data/lib/composite_primary_keys/associations/association_scope.rb +1 -1
  6. data/lib/composite_primary_keys/associations/has_many_through_association.rb +19 -0
  7. data/lib/composite_primary_keys/associations/preloader/association.rb +0 -16
  8. data/lib/composite_primary_keys/connection_adapters/abstract/database_statements.rb +1 -2
  9. data/lib/composite_primary_keys/relation/query_methods.rb +14 -16
  10. data/lib/composite_primary_keys/relation.rb +4 -2
  11. data/lib/composite_primary_keys/version.rb +1 -1
  12. data/lib/composite_primary_keys.rb +117 -119
  13. data/scripts/console.rb +2 -2
  14. data/tasks/databases/trilogy.rake +23 -0
  15. data/test/abstract_unit.rb +124 -118
  16. data/test/connections/databases.ci.yml +10 -0
  17. data/test/fixtures/admin.rb +4 -0
  18. data/test/fixtures/comments.yml +6 -0
  19. data/test/fixtures/db_definitions/db2-create-tables.sql +34 -0
  20. data/test/fixtures/db_definitions/db2-drop-tables.sql +7 -1
  21. data/test/fixtures/db_definitions/mysql.sql +23 -0
  22. data/test/fixtures/db_definitions/oracle.drop.sql +4 -0
  23. data/test/fixtures/db_definitions/oracle.sql +21 -0
  24. data/test/fixtures/db_definitions/postgresql.sql +23 -0
  25. data/test/fixtures/db_definitions/sqlite.sql +21 -0
  26. data/test/fixtures/db_definitions/sqlserver.sql +23 -0
  27. data/test/fixtures/moderator.rb +4 -0
  28. data/test/fixtures/room.rb +4 -1
  29. data/test/fixtures/staff_room.rb +6 -0
  30. data/test/fixtures/staff_room_key.rb +6 -0
  31. data/test/fixtures/user.rb +3 -0
  32. data/test/fixtures/user_with_polymorphic_name.rb +9 -0
  33. data/test/test_associations.rb +403 -403
  34. data/test/test_has_one_through.rb +30 -0
  35. data/test/test_polymorphic.rb +6 -0
  36. metadata +11 -4
  37. data/lib/composite_primary_keys/associations/through_association.rb +0 -24
@@ -0,0 +1,30 @@
1
+ require File.expand_path('../abstract_unit', __FILE__)
2
+
3
+ class TestHasOneThrough < ActiveSupport::TestCase
4
+ fixtures :users, :rooms
5
+
6
+ def test_no_cpk
7
+ # This test makes sure we don't break anything in standard rails by using CPK
8
+ user = User.find(1)
9
+ assert_nil user.moderator
10
+ assert_nil user.admin
11
+
12
+ admin = Admin.create!(user: user)
13
+ assert_equal admin, user.admin
14
+ assert_equal 1, user.moderator.id
15
+ assert_equal 1, admin.id
16
+ end
17
+
18
+ def test_has_one_through
19
+ room = Room.find([1,1])
20
+ assert_nil room.staff_room
21
+ assert_nil room.staff_room_key
22
+
23
+ key = StaffRoomKey.create!(room: room, key_no: '1234')
24
+ assert_equal key, room.staff_room_key
25
+ assert_equal 1, room.staff_room.dorm_id
26
+ assert_equal 1, room.staff_room.room_id
27
+ assert_equal 1, key.dorm_id
28
+ assert_equal 1, key.room_id
29
+ end
30
+ end
@@ -40,4 +40,10 @@ class TestPolymorphic < ActiveSupport::TestCase
40
40
  article.user_commentators = []
41
41
  assert_equal(0, article.comments.size)
42
42
  end
43
+
44
+ def test_polymorphic_has_many_with_polymorphic_name
45
+ comments = UserWithPolymorphicName.find(1).comments
46
+ assert_equal 1, comments[0].person_id
47
+ assert_equal "User1", comments[0].person_type
48
+ end
43
49
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: composite_primary_keys
3
3
  version: !ruby/object:Gem::Version
4
- version: 14.0.5
4
+ version: 14.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Charlie Savage
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-02-04 00:00:00.000000000 Z
11
+ date: 2023-11-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -59,7 +59,6 @@ files:
59
59
  - lib/composite_primary_keys/associations/has_many_through_association.rb
60
60
  - lib/composite_primary_keys/associations/join_association.rb
61
61
  - lib/composite_primary_keys/associations/preloader/association.rb
62
- - lib/composite_primary_keys/associations/through_association.rb
63
62
  - lib/composite_primary_keys/attribute_methods.rb
64
63
  - lib/composite_primary_keys/attribute_methods/primary_key.rb
65
64
  - lib/composite_primary_keys/attribute_methods/read.rb
@@ -99,6 +98,7 @@ files:
99
98
  - tasks/databases/postgresql.rake
100
99
  - tasks/databases/sqlite.rake
101
100
  - tasks/databases/sqlserver.rake
101
+ - tasks/databases/trilogy.rake
102
102
  - tasks/website.rake
103
103
  - test/README_tests.rdoc
104
104
  - test/abstract_unit.rb
@@ -106,6 +106,7 @@ files:
106
106
  - test/connections/databases.ci.yml
107
107
  - test/connections/databases.example.yml
108
108
  - test/connections/databases.yml
109
+ - test/fixtures/admin.rb
109
110
  - test/fixtures/article.rb
110
111
  - test/fixtures/articles.yml
111
112
  - test/fixtures/capitol.rb
@@ -132,6 +133,7 @@ files:
132
133
  - test/fixtures/membership_status.rb
133
134
  - test/fixtures/membership_statuses.yml
134
135
  - test/fixtures/memberships.yml
136
+ - test/fixtures/moderator.rb
135
137
  - test/fixtures/product.rb
136
138
  - test/fixtures/product_tariff.rb
137
139
  - test/fixtures/product_tariffs.yml
@@ -154,6 +156,8 @@ files:
154
156
  - test/fixtures/room_attribute_assignments.yml
155
157
  - test/fixtures/room_attributes.yml
156
158
  - test/fixtures/rooms.yml
159
+ - test/fixtures/staff_room.rb
160
+ - test/fixtures/staff_room_key.rb
157
161
  - test/fixtures/street.rb
158
162
  - test/fixtures/streets.yml
159
163
  - test/fixtures/student.rb
@@ -165,6 +169,7 @@ files:
165
169
  - test/fixtures/topic_sources.yml
166
170
  - test/fixtures/topics.yml
167
171
  - test/fixtures/user.rb
172
+ - test/fixtures/user_with_polymorphic_name.rb
168
173
  - test/fixtures/users.yml
169
174
  - test/plugins/pagination.rb
170
175
  - test/plugins/pagination_helper.rb
@@ -183,6 +188,7 @@ files:
183
188
  - test/test_exists.rb
184
189
  - test/test_find.rb
185
190
  - test/test_habtm.rb
191
+ - test/test_has_one_through.rb
186
192
  - test/test_ids.rb
187
193
  - test/test_miscellaneous.rb
188
194
  - test/test_nested_attributes.rb
@@ -216,7 +222,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
216
222
  - !ruby/object:Gem::Version
217
223
  version: '0'
218
224
  requirements: []
219
- rubygems_version: 3.4.6
225
+ rubygems_version: 3.4.10
220
226
  signing_key:
221
227
  specification_version: 4
222
228
  summary: Composite key support for ActiveRecord
@@ -238,6 +244,7 @@ test_files:
238
244
  - test/test_exists.rb
239
245
  - test/test_find.rb
240
246
  - test/test_habtm.rb
247
+ - test/test_has_one_through.rb
241
248
  - test/test_ids.rb
242
249
  - test/test_miscellaneous.rb
243
250
  - test/test_nested_attributes.rb
@@ -1,24 +0,0 @@
1
- module ActiveRecord
2
- module Associations
3
- module ThroughAssociation
4
- alias :original_construct_join_attributes :construct_join_attributes
5
-
6
- def construct_join_attributes(*records)
7
- # CPK
8
- if !self.source_reflection.polymorphic? && source_reflection.klass.composite?
9
- ensure_mutable
10
-
11
- ids = records.map do |record|
12
- source_reflection.association_primary_key(reflection.klass).map do |key|
13
- record.send(key)
14
- end
15
- end
16
-
17
- cpk_in_predicate(through_association.scope.klass.arel_table, source_reflection.foreign_key, ids)
18
- else
19
- original_construct_join_attributes(*records)
20
- end
21
- end
22
- end
23
- end
24
- end