composite_primary_keys 14.0.5 → 14.0.7

Sign up to get free protection for your applications and to get access to all the features.
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