poly_belongs_to 0.1.6 → 0.1.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +5 -0
- data/lib/poly_belongs_to/dup.rb +7 -23
- data/lib/poly_belongs_to/faked_collection.rb +64 -0
- data/lib/poly_belongs_to/poly_belongs_to.rb +10 -0
- data/lib/poly_belongs_to/version.rb +1 -1
- data/lib/poly_belongs_to.rb +1 -0
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/dummy/log/test.log +28311 -0
- data/test/dup_test.rb +0 -2
- data/test/faked_collection_test.rb +75 -0
- data/test/pbt_test.rb +33 -0
- metadata +5 -2
data/test/dup_test.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
|
2
1
|
require 'test_helper'
|
3
2
|
require 'minitest/autorun'
|
4
3
|
|
@@ -24,7 +23,6 @@ class DupTest < ActiveSupport::TestCase
|
|
24
23
|
end
|
25
24
|
|
26
25
|
it "builds deep copy of dup'd attributes" do
|
27
|
-
#skip "Prepping method. It's in the making."
|
28
26
|
user1 = users(:steve)
|
29
27
|
bob_prof = profiles(:bob_prof)
|
30
28
|
contact = user1.contacts.new
|
@@ -0,0 +1,75 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'minitest/autorun'
|
3
|
+
|
4
|
+
class FakedCollectionTest < ActiveSupport::TestCase
|
5
|
+
fixtures :all
|
6
|
+
|
7
|
+
let(:photos){
|
8
|
+
steve_prof = users(:steve).profiles.first
|
9
|
+
PolyBelongsTo::FakedCollection.new(steve_prof, Photo)
|
10
|
+
}
|
11
|
+
|
12
|
+
it ".all is an Array" do
|
13
|
+
photos.all.is_a?(Array).must_be_same_as true
|
14
|
+
photos.all.kind_of?(Array).must_be_same_as true
|
15
|
+
end
|
16
|
+
|
17
|
+
it "first is the item" do
|
18
|
+
photos.first.class.name.must_equal "Photo"
|
19
|
+
end
|
20
|
+
|
21
|
+
it "last is the item" do
|
22
|
+
photos.last.class.name.must_equal "Photo"
|
23
|
+
end
|
24
|
+
|
25
|
+
it "counts as 1 or 0" do
|
26
|
+
photos.count.between?(0,1).must_be_same_as true
|
27
|
+
photos.size.between?(0,1).must_be_same_as true
|
28
|
+
end
|
29
|
+
|
30
|
+
it "FakedCollection has ancestors" do
|
31
|
+
photos.ancestors.include?(Object).must_be_same_as true
|
32
|
+
end
|
33
|
+
|
34
|
+
it "build returns FakedCollection object" do
|
35
|
+
photos.kind_of?(PolyBelongsTo::FakedCollection).must_be_same_as true
|
36
|
+
end
|
37
|
+
|
38
|
+
it "builds appropriately" do
|
39
|
+
photos.build({content: "cheese"})
|
40
|
+
photos.first.content.must_equal "cheese"
|
41
|
+
end
|
42
|
+
|
43
|
+
it "build returns self and not nil" do
|
44
|
+
res = photos.build({content: "cheese"})
|
45
|
+
res.wont_be_nil
|
46
|
+
res.class.name.must_equal photos.class.name
|
47
|
+
res.first.content.must_equal "cheese"
|
48
|
+
photos.first.content.must_equal "cheese"
|
49
|
+
end
|
50
|
+
|
51
|
+
it "loops appropriately" do
|
52
|
+
photos.each do |photo|
|
53
|
+
photo.class.name.must_equal "Photo"
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
it "defines klass to inner items class" do
|
58
|
+
photos.klass.name.must_equal "Photo"
|
59
|
+
end
|
60
|
+
|
61
|
+
it "respond_to? :first and :last" do
|
62
|
+
photos.respond_to?(:first).must_be_same_as true
|
63
|
+
photos.respond_to?(:last).must_be_same_as true
|
64
|
+
end
|
65
|
+
|
66
|
+
it "knows sneeze is a missing method" do
|
67
|
+
->{photos.sneeze}.must_raise NoMethodError
|
68
|
+
end
|
69
|
+
|
70
|
+
it "will not initialize on has_many" do
|
71
|
+
steve = users(:steve)
|
72
|
+
->{ PolyBelongsTo::FakedCollection.new(steve, Profile) }.must_raise RuntimeError
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|
data/test/pbt_test.rb
CHANGED
@@ -73,4 +73,37 @@ class PbtTest < ActiveSupport::TestCase
|
|
73
73
|
PolyBelongsTo::Pbt::CollectionProxy[nil, User].must_be_nil
|
74
74
|
PolyBelongsTo::Pbt::CollectionProxy[profile, nil].must_be_nil
|
75
75
|
end
|
76
|
+
|
77
|
+
it "AsCollectionProxy: has_one emulated collectionproxy" do
|
78
|
+
address = profiles(:bob_prof).addresses.first
|
79
|
+
address_to_geo = PolyBelongsTo::Pbt::AsCollectionProxy[address, GeoLocation]
|
80
|
+
address_to_geo.respond_to?(:klass).must_be_same_as true
|
81
|
+
address_to_geo.respond_to?(:build).must_be_same_as true
|
82
|
+
address_to_geo.respond_to?(:each ).must_be_same_as true
|
83
|
+
address_to_geo.respond_to?(:all ).must_be_same_as true
|
84
|
+
address_to_geo.respond_to?(:first).must_be_same_as true
|
85
|
+
address_to_geo.respond_to?(:last ).must_be_same_as true
|
86
|
+
address_to_geo.kind_of?(PolyBelongsTo::FakedCollection).must_be_same_as true
|
87
|
+
end
|
88
|
+
|
89
|
+
it "AsCollectionProxy: has one or zero items" do
|
90
|
+
address = profiles(:bob_prof).addresses.first
|
91
|
+
address_to_geo = PolyBelongsTo::Pbt::AsCollectionProxy[address, GeoLocation]
|
92
|
+
address_to_geo.count.between?(0,1).must_be_same_as true
|
93
|
+
address_to_geo.size.between?(0,1).must_be_same_as true
|
94
|
+
end
|
95
|
+
|
96
|
+
|
97
|
+
it "AsCollectionProxy: has_many uses AR CollectionProxy" do
|
98
|
+
bob = users(:bob)
|
99
|
+
bob_to_prof = PolyBelongsTo::Pbt::AsCollectionProxy[bob, Profile]
|
100
|
+
bob_to_prof.respond_to?(:klass).must_be_same_as true
|
101
|
+
bob_to_prof.respond_to?(:build).must_be_same_as true
|
102
|
+
bob_to_prof.respond_to?(:each ).must_be_same_as true
|
103
|
+
bob_to_prof.respond_to?(:all ).must_be_same_as true
|
104
|
+
bob_to_prof.respond_to?(:first).must_be_same_as true
|
105
|
+
bob_to_prof.respond_to?(:last ).must_be_same_as true
|
106
|
+
bob_to_prof.kind_of?(ActiveRecord::Associations::CollectionProxy).must_be_same_as true
|
107
|
+
end
|
108
|
+
|
76
109
|
end
|
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.1.
|
4
|
+
version: 0.1.7
|
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: 2015-02-
|
11
|
+
date: 2015-02-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -96,6 +96,7 @@ files:
|
|
96
96
|
- Rakefile
|
97
97
|
- lib/poly_belongs_to.rb
|
98
98
|
- lib/poly_belongs_to/dup.rb
|
99
|
+
- lib/poly_belongs_to/faked_collection.rb
|
99
100
|
- lib/poly_belongs_to/poly_belongs_to.rb
|
100
101
|
- lib/poly_belongs_to/version.rb
|
101
102
|
- lib/tasks/poly_belongs_to_tasks.rake
|
@@ -152,6 +153,7 @@ files:
|
|
152
153
|
- test/dummy/log/test.log
|
153
154
|
- test/dummy/public/favicon.ico
|
154
155
|
- test/dup_test.rb
|
156
|
+
- test/faked_collection_test.rb
|
155
157
|
- test/fixtures/addresses.yml
|
156
158
|
- test/fixtures/geo_locations.yml
|
157
159
|
- test/fixtures/phones.yml
|
@@ -201,6 +203,7 @@ test_files:
|
|
201
203
|
- test/fixtures/tags.yml
|
202
204
|
- test/fixtures/ssns.yml
|
203
205
|
- test/test_helper.rb
|
206
|
+
- test/faked_collection_test.rb
|
204
207
|
- test/dummy/db/test.sqlite3
|
205
208
|
- test/dummy/db/schema.rb
|
206
209
|
- test/dummy/db/migrate/20150220230146_create_squishies.rb
|