poly_belongs_to 0.2.8 → 0.2.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/MIT-LICENSE +1 -1
- data/README.md +4 -2
- data/lib/poly_belongs_to/core.rb +3 -3
- data/lib/poly_belongs_to/version.rb +1 -1
- data/test/core_test.rb +20 -0
- data/test/dummy/app/models/address_book.rb +3 -0
- data/test/dummy/app/models/contact.rb +1 -0
- data/test/dummy/app/models/event.rb +3 -0
- data/test/dummy/app/models/work_order.rb +3 -0
- data/test/dummy/db/migrate/20160120224015_add_contactable_to_contacts.rb +5 -0
- data/test/dummy/db/migrate/20160120231645_create_address_books.rb +8 -0
- data/test/dummy/db/migrate/20161209115003_create_events.rb +10 -0
- data/test/dummy/db/migrate/20161209115212_create_work_orders.rb +8 -0
- data/test/dummy/db/schema.rb +52 -31
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/dummy/log/development.log +598 -0
- data/test/dummy/log/test.log +43913 -0
- data/test/dummy/test/fixtures/events.yml +8 -0
- data/test/dummy/test/fixtures/work_orders.yml +12 -0
- data/test/dummy/test/models/address_book_test.rb +13 -0
- data/test/dummy/test/models/event_test.rb +13 -0
- data/test/dummy/test/models/work_order_test.rb +13 -0
- data/test/faked_collection_test.rb +17 -0
- data/test/fixtures/address_books.yml +9 -0
- data/test/fixtures/contacts.yml +18 -0
- data/test/major_version_changes_test.rb +66 -0
- data/test/test_helper.rb +4 -2
- metadata +33 -3
@@ -0,0 +1,12 @@
|
|
1
|
+
# Read about fixtures at
|
2
|
+
# http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html
|
3
|
+
|
4
|
+
# This model initially had no columns defined. If you add columns to the
|
5
|
+
# model remove the '{}' from the fixture names and add the columns immediately
|
6
|
+
# below each fixture, per the syntax in the comments below
|
7
|
+
#
|
8
|
+
one: {}
|
9
|
+
# column: value
|
10
|
+
#
|
11
|
+
two: {}
|
12
|
+
# column: value
|
@@ -35,6 +35,7 @@ class FakedCollectionTest < ActiveSupport::TestCase
|
|
35
35
|
[nil, photos(:steve_photo).id].must_include steve_photos.id
|
36
36
|
nil_steve.id.must_be_nil
|
37
37
|
nil_photo.id.must_be_nil
|
38
|
+
null_object.id.must_be_nil
|
38
39
|
end
|
39
40
|
|
40
41
|
it "#all is an Array" do
|
@@ -105,16 +106,25 @@ class FakedCollectionTest < ActiveSupport::TestCase
|
|
105
106
|
steve_photos.ancestors.must_include(ActiveRecord::Base)
|
106
107
|
end
|
107
108
|
|
109
|
+
it "#ancestors has NilClass if empty" do
|
110
|
+
null_object.ancestors.must_include(NilClass)
|
111
|
+
nil_steve.ancestors.must_include(NilClass)
|
112
|
+
nil_photo.ancestors.must_include(NilClass)
|
113
|
+
end
|
114
|
+
|
108
115
|
it "build #kind_of? FakedCollection object" do
|
109
116
|
steve_photos.must_be_kind_of(PolyBelongsTo::FakedCollection)
|
117
|
+
null_object.must_be_kind_of(PolyBelongsTo::FakedCollection)
|
110
118
|
end
|
111
119
|
|
112
120
|
it "build #is_a? FakedCollection object" do
|
113
121
|
steve_photos.is_a?(PolyBelongsTo::FakedCollection).must_be_same_as true
|
122
|
+
null_object.is_a?(PolyBelongsTo::FakedCollection).must_be_same_as true
|
114
123
|
end
|
115
124
|
|
116
125
|
it "build #instance_of? FakedCollection object" do
|
117
126
|
steve_photos.must_be_instance_of(PolyBelongsTo::FakedCollection)
|
127
|
+
null_object.must_be_instance_of(PolyBelongsTo::FakedCollection)
|
118
128
|
end
|
119
129
|
|
120
130
|
it "#build builds appropriately" do
|
@@ -154,6 +164,7 @@ class FakedCollectionTest < ActiveSupport::TestCase
|
|
154
164
|
|
155
165
|
it "has method_missing forward appropriate calls" do
|
156
166
|
steve_photos.method_missing(:nil?).must_equal false
|
167
|
+
null_object.method_missing(:nil?).must_equal true
|
157
168
|
end
|
158
169
|
|
159
170
|
it "will not initialize on has_many" do
|
@@ -173,6 +184,12 @@ class FakedCollectionTest < ActiveSupport::TestCase
|
|
173
184
|
nil_steve.must_be :empty?
|
174
185
|
nil_steve.instance_eval {@instance}.must_be_nil
|
175
186
|
nil_steve.wont_be :valid?
|
187
|
+
|
188
|
+
null_object.all.must_equal []
|
189
|
+
null_object.size.must_be_same_as 0
|
190
|
+
null_object.must_be :empty?
|
191
|
+
null_object.instance_eval {@instance}.must_be_nil
|
192
|
+
null_object.wont_be :valid?
|
176
193
|
end
|
177
194
|
|
178
195
|
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
# Read about fixtures at
|
2
|
+
# http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html
|
3
|
+
|
4
|
+
# This model initially had no columns defined. If you add columns to the
|
5
|
+
# model remove the '{}' from the fixture names and add the columns immediately
|
6
|
+
# below each fixture, per the syntax in the comments below
|
7
|
+
bob_address_book: {}
|
8
|
+
steve_address_book: {}
|
9
|
+
susan_address_book: {}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
bob_contact:
|
2
|
+
user_id: <%= ActiveRecord::FixtureSet.identify(:bob) %>
|
3
|
+
contactable_id: <%= ActiveRecord::FixtureSet.identify(:bob_address_book) %>
|
4
|
+
contactable_type: AddressBook
|
5
|
+
content: <%= SecureRandom.hex %>
|
6
|
+
|
7
|
+
#steve_contact:
|
8
|
+
# user_id: <%= ActiveRecord::FixtureSet.identify(:steve) %>
|
9
|
+
# contactable_id: <%= ActiveRecord::FixtureSet.identify(:steve_address_book) %>
|
10
|
+
# contactable_type: AddressBook
|
11
|
+
# content: <%= SecureRandom.hex %>
|
12
|
+
#
|
13
|
+
#susan_contact:
|
14
|
+
# user_id: <%= ActiveRecord::FixtureSet.identify(:susan) %>
|
15
|
+
# contactable_id: <%= ActiveRecord::FixtureSet.identify(:susan_address_book) %>
|
16
|
+
# contactable_type: AddressBook
|
17
|
+
# content: <%= SecureRandom.hex %>
|
18
|
+
#
|
@@ -0,0 +1,66 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'minitest/autorun'
|
3
|
+
|
4
|
+
class MajorVersionChangesTest < ActiveSupport::TestCase
|
5
|
+
fixtures :all
|
6
|
+
|
7
|
+
describe "Test breaking changes between major versions" do
|
8
|
+
|
9
|
+
let(:contact) { contacts(:bob_contact) }
|
10
|
+
|
11
|
+
case PolyBelongsTo::VERSION.split('.').take(3).join.to_i
|
12
|
+
when ->v{ v < 100 }
|
13
|
+
it "pre 1.0.0 first parent relation" do
|
14
|
+
contact.pbt.must_be_same_as :user
|
15
|
+
Contact.pbt.must_be_same_as :user
|
16
|
+
|
17
|
+
contact.pbts.must_include :user
|
18
|
+
contact.pbts.must_include :contactable
|
19
|
+
contact.pbts.first.must_be_same_as :user
|
20
|
+
Contact.pbts.must_include :user
|
21
|
+
Contact.pbts.must_include :contactable
|
22
|
+
Contact.pbts.first.must_be_same_as :user
|
23
|
+
end
|
24
|
+
|
25
|
+
it "pre 1.0.0 :poly? on dual ownership with non-polymorphic first" do
|
26
|
+
contact.poly?.must_be_same_as false
|
27
|
+
Contact.poly?.must_be_same_as false
|
28
|
+
end
|
29
|
+
|
30
|
+
it "pre 1.0.0 :pbt_type_sym on dual ownership with non-polymorphic first" do
|
31
|
+
contact.pbt_id_sym.must_be_same_as :user_id
|
32
|
+
Contact.pbt_id_sym.must_be_same_as :user_id
|
33
|
+
end
|
34
|
+
|
35
|
+
it "pre 1.0.0 :pbt_parent returns first parent" do
|
36
|
+
contact.pbt_parent.id.must_be_same_as users(:bob).id
|
37
|
+
end
|
38
|
+
when ->v { v >= 100 }
|
39
|
+
it "post 1.0.0 first polymorphic parent relation" do
|
40
|
+
contact.pbt.must_be_same_as :contactable
|
41
|
+
Contact.pbt.must_be_same_as :contactable
|
42
|
+
|
43
|
+
contact.pbts.must_include :user
|
44
|
+
contact.pbts.must_include :contactable
|
45
|
+
contact.pbts.first.must_be_same_as :contactable
|
46
|
+
Contact.pbts.must_include :user
|
47
|
+
Contact.pbts.must_include :contactable
|
48
|
+
Contact.pbts.first.must_be_same_as :contactable
|
49
|
+
end
|
50
|
+
|
51
|
+
it "post 1.0.0 :poly? on dual ownership with non-polymorphic first" do
|
52
|
+
contact.poly?.must_be_same_as true
|
53
|
+
Contact.poly?.must_be_same_as true
|
54
|
+
end
|
55
|
+
|
56
|
+
it "pre 1.0.0 :pbt_type_sym on dual ownership with non-polymorphic first" do
|
57
|
+
contact.pbt_id_sym.must_be_same_as :addressable_id
|
58
|
+
Contact.pbt_id_sym.must_be_same_as :addressable_id
|
59
|
+
end
|
60
|
+
|
61
|
+
it "post 1.0.0 :pbt_parent gives polymorphic parent precedence" do
|
62
|
+
contact.pbt_parent.id.wont_equal users(:bob).id
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
data/test/test_helper.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
ENV["RAILS_ENV"] = "test"
|
2
|
-
require "codeclimate-test-reporter"
|
3
|
-
CodeClimate::TestReporter.start
|
2
|
+
#require "codeclimate-test-reporter"
|
3
|
+
#CodeClimate::TestReporter.start
|
4
|
+
require 'simplecov'
|
5
|
+
SimpleCov.start
|
4
6
|
require File.expand_path("../../test/dummy/config/environment.rb", __FILE__)
|
5
7
|
|
6
8
|
ActiveRecord::Migrator.migrations_paths = [File.expand_path("../../test/dummy/db/migrate", __FILE__)]
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: poly_belongs_to
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel P. Clark
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-12-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -108,6 +108,7 @@ files:
|
|
108
108
|
- test/dummy/app/controllers/application_controller.rb
|
109
109
|
- test/dummy/app/helpers/application_helper.rb
|
110
110
|
- test/dummy/app/models/address.rb
|
111
|
+
- test/dummy/app/models/address_book.rb
|
111
112
|
- test/dummy/app/models/alpha.rb
|
112
113
|
- test/dummy/app/models/beta.rb
|
113
114
|
- test/dummy/app/models/capa.rb
|
@@ -115,6 +116,7 @@ files:
|
|
115
116
|
- test/dummy/app/models/coffee.rb
|
116
117
|
- test/dummy/app/models/contact.rb
|
117
118
|
- test/dummy/app/models/delta.rb
|
119
|
+
- test/dummy/app/models/event.rb
|
118
120
|
- test/dummy/app/models/geo_location.rb
|
119
121
|
- test/dummy/app/models/phone.rb
|
120
122
|
- test/dummy/app/models/photo.rb
|
@@ -124,6 +126,7 @@ files:
|
|
124
126
|
- test/dummy/app/models/tag.rb
|
125
127
|
- test/dummy/app/models/tire.rb
|
126
128
|
- test/dummy/app/models/user.rb
|
129
|
+
- test/dummy/app/models/work_order.rb
|
127
130
|
- test/dummy/app/views/layouts/application.html.erb
|
128
131
|
- test/dummy/bin/bundle
|
129
132
|
- test/dummy/bin/rails
|
@@ -165,17 +168,28 @@ files:
|
|
165
168
|
- test/dummy/db/migrate/20150322233743_create_capas.rb
|
166
169
|
- test/dummy/db/migrate/20150322233755_create_delta.rb
|
167
170
|
- test/dummy/db/migrate/20150511161648_create_coffees.rb
|
171
|
+
- test/dummy/db/migrate/20160120224015_add_contactable_to_contacts.rb
|
172
|
+
- test/dummy/db/migrate/20160120231645_create_address_books.rb
|
173
|
+
- test/dummy/db/migrate/20161209115003_create_events.rb
|
174
|
+
- test/dummy/db/migrate/20161209115212_create_work_orders.rb
|
168
175
|
- test/dummy/db/schema.rb
|
169
176
|
- test/dummy/db/test.sqlite3
|
170
177
|
- test/dummy/log/development.log
|
171
178
|
- test/dummy/log/test.log
|
172
179
|
- test/dummy/public/favicon.ico
|
173
180
|
- test/dummy/test/fixtures/coffees.yml
|
181
|
+
- test/dummy/test/fixtures/events.yml
|
182
|
+
- test/dummy/test/fixtures/work_orders.yml
|
183
|
+
- test/dummy/test/models/address_book_test.rb
|
174
184
|
- test/dummy/test/models/coffee_test.rb
|
185
|
+
- test/dummy/test/models/event_test.rb
|
186
|
+
- test/dummy/test/models/work_order_test.rb
|
175
187
|
- test/dup_test.rb
|
176
188
|
- test/faked_collection_test.rb
|
189
|
+
- test/fixtures/address_books.yml
|
177
190
|
- test/fixtures/addresses.yml
|
178
191
|
- test/fixtures/cars.yml
|
192
|
+
- test/fixtures/contacts.yml
|
179
193
|
- test/fixtures/geo_locations.yml
|
180
194
|
- test/fixtures/phones.yml
|
181
195
|
- test/fixtures/photos.yml
|
@@ -185,6 +199,7 @@ files:
|
|
185
199
|
- test/fixtures/tags.yml
|
186
200
|
- test/fixtures/tires.yml
|
187
201
|
- test/fixtures/users.yml
|
202
|
+
- test/major_version_changes_test.rb
|
188
203
|
- test/pbt_test.rb
|
189
204
|
- test/singleton_set_test.rb
|
190
205
|
- test/test_helper.rb
|
@@ -208,7 +223,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
208
223
|
version: '0'
|
209
224
|
requirements: []
|
210
225
|
rubyforge_project:
|
211
|
-
rubygems_version: 2.
|
226
|
+
rubygems_version: 2.5.2
|
212
227
|
signing_key:
|
213
228
|
specification_version: 4
|
214
229
|
summary: Uniform Omni-Relational ActiveRecord Tools
|
@@ -224,6 +239,8 @@ test_files:
|
|
224
239
|
- test/fixtures/users.yml
|
225
240
|
- test/fixtures/cars.yml
|
226
241
|
- test/fixtures/tags.yml
|
242
|
+
- test/fixtures/contacts.yml
|
243
|
+
- test/fixtures/address_books.yml
|
227
244
|
- test/fixtures/ssns.yml
|
228
245
|
- test/singleton_set_test.rb
|
229
246
|
- test/test_helper.rb
|
@@ -232,6 +249,8 @@ test_files:
|
|
232
249
|
- test/dummy/db/test.sqlite3
|
233
250
|
- test/dummy/db/schema.rb
|
234
251
|
- test/dummy/db/migrate/20150220230146_create_squishies.rb
|
252
|
+
- test/dummy/db/migrate/20161209115003_create_events.rb
|
253
|
+
- test/dummy/db/migrate/20161209115212_create_work_orders.rb
|
235
254
|
- test/dummy/db/migrate/20150322233755_create_delta.rb
|
236
255
|
- test/dummy/db/migrate/20150322233743_create_capas.rb
|
237
256
|
- test/dummy/db/migrate/20150216092449_create_contacts.rb
|
@@ -240,7 +259,9 @@ test_files:
|
|
240
259
|
- test/dummy/db/migrate/20150322233720_create_alphas.rb
|
241
260
|
- test/dummy/db/migrate/20150216092218_create_addresses.rb
|
242
261
|
- test/dummy/db/migrate/20150211224225_create_phones.rb
|
262
|
+
- test/dummy/db/migrate/20160120224015_add_contactable_to_contacts.rb
|
243
263
|
- test/dummy/db/migrate/20150220213422_create_geo_locations.rb
|
264
|
+
- test/dummy/db/migrate/20160120231645_create_address_books.rb
|
244
265
|
- test/dummy/db/migrate/20150216092519_create_ssns.rb
|
245
266
|
- test/dummy/db/migrate/20150211224157_create_tags.rb
|
246
267
|
- test/dummy/db/migrate/20150211224139_create_users.rb
|
@@ -270,7 +291,10 @@ test_files:
|
|
270
291
|
- test/dummy/app/helpers/application_helper.rb
|
271
292
|
- test/dummy/app/models/coffee.rb
|
272
293
|
- test/dummy/app/models/ssn.rb
|
294
|
+
- test/dummy/app/models/event.rb
|
273
295
|
- test/dummy/app/models/capa.rb
|
296
|
+
- test/dummy/app/models/work_order.rb
|
297
|
+
- test/dummy/app/models/address_book.rb
|
274
298
|
- test/dummy/app/models/contact.rb
|
275
299
|
- test/dummy/app/models/alpha.rb
|
276
300
|
- test/dummy/app/models/car.rb
|
@@ -295,6 +319,12 @@ test_files:
|
|
295
319
|
- test/dummy/bin/rails
|
296
320
|
- test/dummy/bin/bundle
|
297
321
|
- test/dummy/bin/setup
|
322
|
+
- test/dummy/test/fixtures/work_orders.yml
|
323
|
+
- test/dummy/test/fixtures/events.yml
|
298
324
|
- test/dummy/test/fixtures/coffees.yml
|
299
325
|
- test/dummy/test/models/coffee_test.rb
|
326
|
+
- test/dummy/test/models/address_book_test.rb
|
327
|
+
- test/dummy/test/models/work_order_test.rb
|
328
|
+
- test/dummy/test/models/event_test.rb
|
300
329
|
- test/pbt_test.rb
|
330
|
+
- test/major_version_changes_test.rb
|