mongoid-eager-loading 0.3.0 → 0.3.1

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.
data/.gitignore CHANGED
@@ -2,3 +2,4 @@ pkg/*
2
2
  *.gem
3
3
  .bundle
4
4
  .rvmrc
5
+ Gemfile.lock
@@ -47,7 +47,7 @@ module Mongoid
47
47
  end
48
48
  end
49
49
 
50
- def setup_associations_with_ids(documents, reflection, one=true)
50
+ def setup_associations_with_ids(documents, reflection, one)
51
51
  ids = association_ids(documents, reflection)
52
52
 
53
53
  ignore_includes
@@ -56,7 +56,7 @@ module Mongoid
56
56
  add_id_association(eager_association.send(reflection.foreign_key), eager_association)
57
57
  end
58
58
 
59
- assign_associations(documents, reflection)
59
+ assign_associations(documents, reflection, one)
60
60
  end
61
61
 
62
62
  def setup_associations_with_foreign_keys(documents, reflection, one)
@@ -68,7 +68,7 @@ module Mongoid
68
68
  add_id_association(eager_association.id, eager_association)
69
69
  end
70
70
 
71
- assign_associations(documents, reflection)
71
+ assign_associations(documents, reflection, one)
72
72
  end
73
73
 
74
74
  def association_ids(documents, reflection)
@@ -84,15 +84,15 @@ module Mongoid
84
84
  ids
85
85
  end
86
86
 
87
- def assign_associations(documents, reflection)
87
+ def assign_associations(documents, reflection, one)
88
88
  id_documents_map.each do |id, documents|
89
89
  documents.each do |document|
90
90
  key_value = document.send(reflection.key)
91
91
  associations = \
92
- if key_value.is_a?(Array)
93
- key_value.collect { |v| id_associations_map[v] }
94
- else
92
+ if one
95
93
  id_associations_map[key_value] ? id_associations_map[key_value].first : nil
94
+ else
95
+ to_array(key_value).collect { |v| id_associations_map[v] }.compact.flatten
96
96
  end
97
97
  document.instance_variable_set("@#{reflection.name}", associations)
98
98
  end
@@ -1,5 +1,5 @@
1
1
  module Mongoid
2
2
  module EagerLoading
3
- VERSION = "0.3.0"
3
+ VERSION = "0.3.1"
4
4
  end
5
5
  end
@@ -34,13 +34,13 @@ describe Mongoid::Criterion::EagerLoading do
34
34
 
35
35
  @post1 = @person1.posts.create(:title => "post1")
36
36
  @post2 = @person1.posts.create(:title => "post2")
37
- @post3 = @person2.posts.create(:title => "post3")
37
+ @post3 = @person1.posts.create(:title => "post3")
38
38
  @post4 = @person2.posts.create(:title => "post4")
39
39
  @post5 = Post.create(:title => "post5")
40
40
 
41
41
  @preference1 = @person1.preferences.create(:name => "preference1")
42
42
  @preference2 = @person1.preferences.create(:name => "preference2")
43
- @preference3 = @person2.preferences.create(:name => "preference3")
43
+ @preference3 = @person1.preferences.create(:name => "preference3")
44
44
  @preference4 = @person2.preferences.create(:name => "preference4")
45
45
  @preference5 = Preference.create(:name => "preference5")
46
46
  end
@@ -82,12 +82,12 @@ describe Mongoid::Criterion::EagerLoading do
82
82
  id_documents_map[@person3.id].should == [@person3]
83
83
 
84
84
  id_associations_map = criteria.send(:id_associations_map)
85
- id_associations_map[@person1.id].should == [@post1, @post2]
86
- id_associations_map[@person2.id].should == [@post3, @post4]
85
+ id_associations_map[@person1.id].should == [@post1, @post2, @post3]
86
+ id_associations_map[@person2.id].should == [@post4]
87
87
  id_associations_map[@person3.id].should == nil
88
88
 
89
- @person1.posts.should == [@post1, @post2]
90
- @person2.posts.should == [@post3, @post4]
89
+ @person1.posts.should == [@post1, @post2, @post3]
90
+ @person2.posts.should == [@post4]
91
91
  @person3.posts.should == []
92
92
  end
93
93
 
@@ -102,7 +102,7 @@ describe Mongoid::Criterion::EagerLoading do
102
102
  id_documents_map = criteria.send(:id_documents_map)
103
103
  id_documents_map[@preference1.id].should == [@person1]
104
104
  id_documents_map[@preference2.id].should == [@person1]
105
- id_documents_map[@preference3.id].should == [@person2]
105
+ id_documents_map[@preference3.id].should == [@person1]
106
106
  id_documents_map[@preference4.id].should == [@person2]
107
107
  id_documents_map[@preference5.id].should == nil
108
108
 
@@ -113,8 +113,8 @@ describe Mongoid::Criterion::EagerLoading do
113
113
  id_associations_map[@preference4.id].should == [@preference4]
114
114
  id_associations_map[@preference5.id].should == nil
115
115
 
116
- @person1.preferences.should == [@preference1, @preference2]
117
- @person2.preferences.should == [@preference3, @preference4]
116
+ @person1.preferences.should == [@preference1, @preference2, @preference3]
117
+ @person2.preferences.should == [@preference4]
118
118
  @person3.preferences.should == []
119
119
  end
120
120
 
@@ -151,8 +151,8 @@ describe Mongoid::Criterion::EagerLoading do
151
151
  criteria.preload(posts)
152
152
 
153
153
  id_documents_map = criteria.send(:id_documents_map)
154
- id_documents_map[@person1.id].should == [@post1, @post2]
155
- id_documents_map[@person2.id].should == [@post3, @post4]
154
+ id_documents_map[@person1.id].should == [@post1, @post2, @post3]
155
+ id_documents_map[@person2.id].should == [@post4]
156
156
  id_documents_map[@person3.id].should == nil
157
157
 
158
158
  id_associations_map = criteria.send(:id_associations_map)
@@ -162,10 +162,26 @@ describe Mongoid::Criterion::EagerLoading do
162
162
 
163
163
  @post1.person.should == @person1
164
164
  @post2.person.should == @person1
165
- @post3.person.should == @person2
165
+ @post3.person.should == @person1
166
166
  @post4.person.should == @person2
167
167
  @post5.person.should == nil
168
168
  end
169
169
  end
170
+
171
+ it "preload references_many association" do
172
+ people = Person.all.to_a
173
+ posts = Post.all.to_a
174
+
175
+ criteria = Mongoid::Criteria.new(Person)
176
+
177
+ criteria.each do |person|
178
+ person.posts.should be_an_instance_of Array
179
+ person.posts.each {|p| p.should be_an_instance_of Post}
180
+ end
181
+ criteria.includes(:posts).all.each do |person|
182
+ person.posts.should be_an_instance_of Array
183
+ person.posts.each {|p| p.should be_an_instance_of Post}
184
+ end
185
+ end
170
186
  end
171
187
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongoid-eager-loading
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
4
+ hash: 17
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 3
9
- - 0
10
- version: 0.3.0
9
+ - 1
10
+ version: 0.3.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Richard Huang
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-01-20 00:00:00 +08:00
18
+ date: 2011-01-24 00:00:00 +08:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -158,7 +158,6 @@ files:
158
158
  - .rvmrc.example
159
159
  - .watchr
160
160
  - Gemfile
161
- - Gemfile.lock
162
161
  - LICENSE
163
162
  - README.md
164
163
  - Rakefile
@@ -1,55 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- mongoid-eager-loading (0.3.0)
5
-
6
- GEM
7
- remote: http://rubygems.org/
8
- specs:
9
- activemodel (3.0.3)
10
- activesupport (= 3.0.3)
11
- builder (~> 2.1.2)
12
- i18n (~> 0.4)
13
- activesupport (3.0.3)
14
- bson (1.2.0)
15
- bson_ext (1.2.0)
16
- builder (2.1.2)
17
- diff-lcs (1.1.2)
18
- i18n (0.5.0)
19
- mocha (0.9.9)
20
- rake
21
- mongo (1.2.0)
22
- bson (>= 1.2.0)
23
- mongoid (2.0.0.rc.6)
24
- activemodel (~> 3.0)
25
- mongo (~> 1.2)
26
- tzinfo (~> 0.3.22)
27
- will_paginate (~> 3.0.pre)
28
- rake (0.8.7)
29
- rspec (2.0.1)
30
- rspec-core (~> 2.0.1)
31
- rspec-expectations (~> 2.0.1)
32
- rspec-mocks (~> 2.0.1)
33
- rspec-core (2.0.1)
34
- rspec-expectations (2.0.1)
35
- diff-lcs (>= 1.1.2)
36
- rspec-mocks (2.0.1)
37
- rspec-core (~> 2.0.1)
38
- rspec-expectations (~> 2.0.1)
39
- tzinfo (0.3.24)
40
- watchr (0.7)
41
- will_paginate (3.0.pre2)
42
-
43
- PLATFORMS
44
- ruby
45
-
46
- DEPENDENCIES
47
- bson (= 1.2.0)
48
- bson_ext (= 1.2.0)
49
- bundler (>= 1.0.0)
50
- mocha
51
- mongo (= 1.2.0)
52
- mongoid (= 2.0.0.rc.6)
53
- mongoid-eager-loading!
54
- rspec (~> 2.0.0)
55
- watchr