mongoid-pre 2.0.0.beta1 → 2.0.0.pre
Sign up to get free protection for your applications and to get access to all the features.
- data/.watchr +15 -10
- data/HISTORY +342 -0
- data/README.rdoc +8 -1
- data/Rakefile +2 -3
- data/VERSION +1 -1
- data/lib/mongoid/associations/{embedded_in.rb → belongs_to.rb} +4 -4
- data/lib/mongoid/associations/belongs_to_related.rb +9 -6
- data/lib/mongoid/associations/{embeds_many.rb → has_many.rb} +20 -33
- data/lib/mongoid/associations/has_many_related.rb +4 -28
- data/lib/mongoid/associations/{embeds_one.rb → has_one.rb} +6 -6
- data/lib/mongoid/associations/options.rb +6 -1
- data/lib/mongoid/associations.rb +32 -41
- data/lib/mongoid/attributes.rb +6 -13
- data/lib/mongoid/collection.rb +1 -2
- data/lib/mongoid/commands/delete.rb +1 -1
- data/lib/mongoid/commands/delete_all.rb +1 -4
- data/lib/mongoid/commands/destroy.rb +1 -1
- data/lib/mongoid/commands/destroy_all.rb +1 -3
- data/lib/mongoid/commands/save.rb +0 -1
- data/lib/mongoid/commands.rb +13 -2
- data/lib/mongoid/components.rb +1 -6
- data/lib/mongoid/config.rb +1 -5
- data/lib/mongoid/contexts/enumerable.rb +17 -54
- data/lib/mongoid/contexts/mongo.rb +38 -101
- data/lib/mongoid/contexts/paging.rb +2 -2
- data/lib/mongoid/contexts.rb +0 -21
- data/lib/mongoid/criteria.rb +73 -15
- data/lib/mongoid/criterion/inclusion.rb +0 -2
- data/lib/mongoid/criterion/optional.rb +2 -10
- data/lib/mongoid/document.rb +30 -41
- data/lib/mongoid/extensions.rb +0 -15
- data/lib/mongoid/field.rb +7 -20
- data/lib/mongoid/fields.rb +10 -15
- data/lib/mongoid/finders.rb +98 -10
- data/lib/mongoid/identity.rb +2 -8
- data/lib/mongoid/named_scope.rb +0 -2
- data/lib/mongoid/validations/associated.rb +8 -3
- data/lib/mongoid/validations/uniqueness.rb +7 -2
- data/lib/mongoid/validations.rb +2 -2
- data/lib/mongoid/versioning.rb +1 -1
- data/lib/mongoid.rb +5 -21
- data/mongoid.gemspec +19 -59
- data/spec/integration/mongoid/associations_spec.rb +3 -42
- data/spec/integration/mongoid/attributes_spec.rb +2 -2
- data/spec/integration/mongoid/commands_spec.rb +13 -27
- data/spec/integration/mongoid/contexts/enumerable_spec.rb +0 -13
- data/spec/integration/mongoid/criteria_spec.rb +3 -50
- data/spec/integration/mongoid/document_spec.rb +5 -72
- data/spec/integration/mongoid/finders_spec.rb +28 -85
- data/spec/models/address.rb +3 -3
- data/spec/models/animal.rb +2 -2
- data/spec/models/country_code.rb +2 -2
- data/spec/models/game.rb +1 -2
- data/spec/models/inheritance.rb +5 -5
- data/spec/models/location.rb +2 -2
- data/spec/models/name.rb +3 -3
- data/spec/models/namespacing.rb +2 -2
- data/spec/models/patient.rb +0 -2
- data/spec/models/person.rb +4 -6
- data/spec/models/pet.rb +3 -3
- data/spec/models/pet_owner.rb +3 -3
- data/spec/models/phone.rb +3 -3
- data/spec/models/post.rb +1 -1
- data/spec/models/translation.rb +2 -2
- data/spec/models/vet_visit.rb +2 -2
- data/spec/spec_helper.rb +2 -2
- data/spec/unit/mongoid/associations/belongs_to_related_spec.rb +0 -4
- data/spec/unit/mongoid/associations/{embedded_in_spec.rb → belongs_to_spec.rb} +11 -11
- data/spec/unit/mongoid/associations/has_many_related_spec.rb +14 -45
- data/spec/unit/mongoid/associations/{embeds_many_spec.rb → has_many_spec.rb} +34 -79
- data/spec/unit/mongoid/associations/{embeds_one_spec.rb → has_one_spec.rb} +18 -18
- data/spec/unit/mongoid/associations/options_spec.rb +19 -20
- data/spec/unit/mongoid/associations_spec.rb +12 -74
- data/spec/unit/mongoid/attributes_spec.rb +51 -83
- data/spec/unit/mongoid/collection_spec.rb +0 -46
- data/spec/unit/mongoid/commands/delete_all_spec.rb +8 -9
- data/spec/unit/mongoid/commands/delete_spec.rb +3 -6
- data/spec/unit/mongoid/commands/destroy_all_spec.rb +2 -0
- data/spec/unit/mongoid/commands/destroy_spec.rb +3 -10
- data/spec/unit/mongoid/commands_spec.rb +11 -20
- data/spec/unit/mongoid/config_spec.rb +0 -18
- data/spec/unit/mongoid/contexts/enumerable_spec.rb +11 -198
- data/spec/unit/mongoid/contexts/mongo_spec.rb +54 -357
- data/spec/unit/mongoid/criteria_spec.rb +78 -107
- data/spec/unit/mongoid/criterion/exclusion_spec.rb +13 -3
- data/spec/unit/mongoid/criterion/inclusion_spec.rb +19 -25
- data/spec/unit/mongoid/criterion/optional_spec.rb +18 -25
- data/spec/unit/mongoid/document_spec.rb +34 -71
- data/spec/unit/mongoid/extensions/array/conversions_spec.rb +2 -2
- data/spec/unit/mongoid/extensions/datetime/conversions_spec.rb +3 -0
- data/spec/unit/mongoid/extensions/object/conversions_spec.rb +2 -16
- data/spec/unit/mongoid/extensions/proc/scoping_spec.rb +1 -1
- data/spec/unit/mongoid/field_spec.rb +0 -62
- data/spec/unit/mongoid/fields_spec.rb +0 -33
- data/spec/unit/mongoid/finders_spec.rb +1 -37
- data/spec/unit/mongoid/identity_spec.rb +6 -47
- data/spec/unit/mongoid/named_scope_spec.rb +2 -15
- data/spec/unit/mongoid/scope_spec.rb +1 -1
- data/spec/unit/mongoid/validations/uniqueness_spec.rb +3 -3
- data/spec/unit/mongoid_spec.rb +2 -11
- metadata +14 -64
- data/lib/mongoid/associations/meta_data.rb +0 -28
- data/lib/mongoid/contexts/ids.rb +0 -25
- data/lib/mongoid/deprecation.rb +0 -22
- data/lib/mongoid/dirty.rb +0 -203
- data/lib/mongoid/extensions/big_decimal/conversions.rb +0 -19
- data/lib/mongoid/extensions/binary/conversions.rb +0 -17
- data/lib/mongoid/extensions/objectid/conversions.rb +0 -15
- data/lib/mongoid/extras.rb +0 -61
- data/lib/mongoid/javascript/functions.yml +0 -37
- data/lib/mongoid/javascript.rb +0 -21
- data/lib/mongoid/observable.rb +0 -30
- data/lib/mongoid/paths.rb +0 -54
- data/lib/mongoid/persistence/command.rb +0 -20
- data/lib/mongoid/persistence/insert.rb +0 -71
- data/lib/mongoid/persistence/update.rb +0 -78
- data/lib/mongoid/persistence.rb +0 -27
- data/lib/mongoid/state.rb +0 -32
- data/spec/integration/mongoid/dirty_spec.rb +0 -70
- data/spec/integration/mongoid/persistence/update_spec.rb +0 -46
- data/spec/models/callbacks.rb +0 -18
- data/spec/unit/mongoid/associations/meta_data_spec.rb +0 -88
- data/spec/unit/mongoid/contexts_spec.rb +0 -25
- data/spec/unit/mongoid/deprecation_spec.rb +0 -24
- data/spec/unit/mongoid/dirty_spec.rb +0 -286
- data/spec/unit/mongoid/extensions/big_decimal/conversions_spec.rb +0 -22
- data/spec/unit/mongoid/extensions/binary/conversions_spec.rb +0 -22
- data/spec/unit/mongoid/extras_spec.rb +0 -102
- data/spec/unit/mongoid/javascript_spec.rb +0 -48
- data/spec/unit/mongoid/observable_spec.rb +0 -46
- data/spec/unit/mongoid/paths_spec.rb +0 -124
- data/spec/unit/mongoid/persistence/insert_spec.rb +0 -175
- data/spec/unit/mongoid/persistence/update_spec.rb +0 -148
- data/spec/unit/mongoid/persistence_spec.rb +0 -40
- data/spec/unit/mongoid/state_spec.rb +0 -83
@@ -11,11 +11,7 @@ describe Mongoid::Associations::HasManyRelated do
|
|
11
11
|
end
|
12
12
|
|
13
13
|
let(:options) do
|
14
|
-
Mongoid::Associations::Options.new(
|
15
|
-
:name => :posts,
|
16
|
-
:foreign_key => "person_id",
|
17
|
-
:extend => block
|
18
|
-
)
|
14
|
+
Mongoid::Associations::Options.new(:name => :posts, :extend => block)
|
19
15
|
end
|
20
16
|
|
21
17
|
describe "#<<" do
|
@@ -45,36 +41,16 @@ describe Mongoid::Associations::HasManyRelated do
|
|
45
41
|
|
46
42
|
context "when parent document has not been saved" do
|
47
43
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
Post.expects(:all).returns([])
|
53
|
-
@association = Mongoid::Associations::HasManyRelated.new(@parent, options)
|
54
|
-
end
|
55
|
-
|
56
|
-
it "appends the child document" do
|
57
|
-
@child.expects(:person_id=).with(@parent.id)
|
58
|
-
@association << @child
|
59
|
-
@association.size.should == 1
|
60
|
-
end
|
44
|
+
before do
|
45
|
+
@parent = stub(:id => "1", :new_record? => true, :class => Person)
|
46
|
+
Post.expects(:all).returns([])
|
47
|
+
@association = Mongoid::Associations::HasManyRelated.new(@parent, options)
|
61
48
|
end
|
62
49
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
@parent = stub(:id => "1", :new_record? => true, :class => Person)
|
68
|
-
Post.expects(:all).returns(@criteria)
|
69
|
-
@association = Mongoid::Associations::HasManyRelated.new(@parent, options)
|
70
|
-
end
|
71
|
-
|
72
|
-
it "appends the child document" do
|
73
|
-
@criteria.expects(:entries).returns([])
|
74
|
-
@child.expects(:person_id=).with(@parent.id)
|
75
|
-
@association << @child
|
76
|
-
@association.size.should == 1
|
77
|
-
end
|
50
|
+
it "appends the child document" do
|
51
|
+
@child.expects(:person_id=).with(@parent.id)
|
52
|
+
@association << @child
|
53
|
+
@association.size.should == 1
|
78
54
|
end
|
79
55
|
|
80
56
|
end
|
@@ -101,10 +77,8 @@ describe Mongoid::Associations::HasManyRelated do
|
|
101
77
|
describe "#build" do
|
102
78
|
|
103
79
|
before do
|
104
|
-
@
|
105
|
-
|
106
|
-
@parent = stub(:id => "5", :class => Person, :new_record? => true)
|
107
|
-
Post.expects(:all).returns(@criteria)
|
80
|
+
@parent = stub(:id => "5", :class => Person)
|
81
|
+
Post.expects(:all).returns([])
|
108
82
|
@association = Mongoid::Associations::HasManyRelated.new(@parent, options)
|
109
83
|
end
|
110
84
|
|
@@ -191,23 +165,18 @@ describe Mongoid::Associations::HasManyRelated do
|
|
191
165
|
describe "#create" do
|
192
166
|
|
193
167
|
before do
|
194
|
-
@
|
195
|
-
@parent = stub(:id => "5", :class => Person, :new_record? => true)
|
168
|
+
@parent = stub(:id => "5", :class => Person)
|
196
169
|
Post.expects(:all).returns([])
|
170
|
+
Mongoid::Commands::Save.expects(:execute)
|
197
171
|
@association = Mongoid::Associations::HasManyRelated.new(@parent, options)
|
198
|
-
Post.expects(:instantiate).returns(@post)
|
199
172
|
end
|
200
173
|
|
201
174
|
it "builds and saves the new object" do
|
202
|
-
@post.expects(:run_callbacks).with(:create).yields
|
203
|
-
@post.expects(:save).returns(true)
|
204
175
|
@association.create(:title => "Sassy")
|
205
176
|
end
|
206
177
|
|
207
178
|
it "returns the new object" do
|
208
|
-
@
|
209
|
-
@post.expects(:save).returns(true)
|
210
|
-
@association.create(:title => "Sassy").should == @post
|
179
|
+
@association.create(:title => "Sassy").should be_a_kind_of(Post)
|
211
180
|
end
|
212
181
|
|
213
182
|
end
|
@@ -1,18 +1,18 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
|
-
describe Mongoid::Associations::
|
3
|
+
describe Mongoid::Associations::HasMany do
|
4
4
|
|
5
5
|
before do
|
6
6
|
@attributes = { "addresses" => [
|
7
7
|
{ "_id" => "street-1", "street" => "Street 1", "state" => "CA" },
|
8
8
|
{ "_id" => "street-2", "street" => "Street 2" } ] }
|
9
|
-
@document = stub(:raw_attributes => @attributes, :add_observer => true, :
|
9
|
+
@document = stub(:raw_attributes => @attributes, :add_observer => true, :update => true)
|
10
10
|
end
|
11
11
|
|
12
12
|
describe "#[]" do
|
13
13
|
|
14
14
|
before do
|
15
|
-
@association = Mongoid::Associations::
|
15
|
+
@association = Mongoid::Associations::HasMany.new(
|
16
16
|
@document,
|
17
17
|
Mongoid::Associations::Options.new(:name => :addresses)
|
18
18
|
)
|
@@ -40,7 +40,7 @@ describe Mongoid::Associations::EmbedsMany do
|
|
40
40
|
describe "#<<" do
|
41
41
|
|
42
42
|
before do
|
43
|
-
@association = Mongoid::Associations::
|
43
|
+
@association = Mongoid::Associations::HasMany.new(
|
44
44
|
@document,
|
45
45
|
Mongoid::Associations::Options.new(:name => :addresses)
|
46
46
|
)
|
@@ -80,7 +80,7 @@ describe Mongoid::Associations::EmbedsMany do
|
|
80
80
|
context "when a type is not provided" do
|
81
81
|
|
82
82
|
before do
|
83
|
-
@association = Mongoid::Associations::
|
83
|
+
@association = Mongoid::Associations::HasMany.new(
|
84
84
|
@document,
|
85
85
|
Mongoid::Associations::Options.new(:name => :addresses)
|
86
86
|
)
|
@@ -104,7 +104,7 @@ describe Mongoid::Associations::EmbedsMany do
|
|
104
104
|
context "when a type is provided" do
|
105
105
|
|
106
106
|
before do
|
107
|
-
@association = Mongoid::Associations::
|
107
|
+
@association = Mongoid::Associations::HasMany.new(
|
108
108
|
@document,
|
109
109
|
Mongoid::Associations::Options.new(:name => :shapes)
|
110
110
|
)
|
@@ -125,19 +125,18 @@ describe Mongoid::Associations::EmbedsMany do
|
|
125
125
|
context "when a type is not provided" do
|
126
126
|
|
127
127
|
before do
|
128
|
-
@association = Mongoid::Associations::
|
128
|
+
@association = Mongoid::Associations::HasMany.new(
|
129
129
|
@document,
|
130
130
|
Mongoid::Associations::Options.new(:name => :addresses)
|
131
131
|
)
|
132
|
-
@address =
|
133
|
-
Address.expects(:instantiate).returns(@address)
|
134
|
-
@address.expects(:run_callbacks).with(:create).yields
|
132
|
+
@address = Address.new(:street => "Yet Another")
|
135
133
|
end
|
136
134
|
|
137
135
|
it "builds and saves a new object" do
|
138
|
-
|
136
|
+
Mongoid::Commands::Save.expects(:execute).returns(true)
|
139
137
|
address = @association.create({ :street => "Yet Another" })
|
140
|
-
address.should
|
138
|
+
address.should be_a_kind_of(Address)
|
139
|
+
address.street.should == "Yet Another"
|
141
140
|
end
|
142
141
|
|
143
142
|
end
|
@@ -145,71 +144,27 @@ describe Mongoid::Associations::EmbedsMany do
|
|
145
144
|
context "when a type is provided" do
|
146
145
|
|
147
146
|
before do
|
148
|
-
@association = Mongoid::Associations::
|
147
|
+
@association = Mongoid::Associations::HasMany.new(
|
149
148
|
@document,
|
150
149
|
Mongoid::Associations::Options.new(:name => :shapes)
|
151
150
|
)
|
152
|
-
@circle = mock(:parentize => true, :write_attributes => true)
|
153
|
-
Circle.expects(:instantiate).returns(@circle)
|
154
|
-
@circle.expects(:run_callbacks).with(:create).yields
|
155
151
|
end
|
156
152
|
|
157
153
|
it "instantiates a class of that type" do
|
158
|
-
|
154
|
+
Mongoid::Commands::Save.expects(:execute).returns(true)
|
159
155
|
circle = @association.create({ :radius => 100 }, Circle)
|
160
|
-
circle.should
|
161
|
-
|
162
|
-
|
163
|
-
end
|
164
|
-
|
165
|
-
end
|
166
|
-
|
167
|
-
describe "#create!" do
|
168
|
-
|
169
|
-
context "when validations pass" do
|
170
|
-
|
171
|
-
before do
|
172
|
-
@association = Mongoid::Associations::EmbedsMany.new(
|
173
|
-
@document,
|
174
|
-
Mongoid::Associations::Options.new(:name => :addresses)
|
175
|
-
)
|
176
|
-
@address = mock(:parentize => true, :write_attributes => true, :errors => [])
|
177
|
-
Address.expects(:instantiate).returns(@address)
|
178
|
-
@address.expects(:run_callbacks).with(:create).yields
|
156
|
+
circle.should be_a_kind_of(Circle)
|
157
|
+
circle.radius.should == 100
|
179
158
|
end
|
180
159
|
|
181
|
-
it "builds and saves a new object" do
|
182
|
-
@address.expects(:save).returns(true)
|
183
|
-
address = @association.create!({ :street => "Yet Another" })
|
184
|
-
address.should == @address
|
185
|
-
end
|
186
160
|
end
|
187
161
|
|
188
|
-
context "when validations fail" do
|
189
|
-
|
190
|
-
before do
|
191
|
-
@association = Mongoid::Associations::EmbedsMany.new(
|
192
|
-
@document,
|
193
|
-
Mongoid::Associations::Options.new(:name => :addresses)
|
194
|
-
)
|
195
|
-
@address = mock(:parentize => true, :write_attributes => true, :errors => [ "test" ])
|
196
|
-
Address.expects(:instantiate).returns(@address)
|
197
|
-
@address.expects(:run_callbacks).with(:create).yields
|
198
|
-
end
|
199
|
-
|
200
|
-
it "builds and saves a new object" do
|
201
|
-
@address.expects(:save).returns(false)
|
202
|
-
lambda {
|
203
|
-
@association.create!({ :street => "Yet Another" })
|
204
|
-
}.should raise_error(Mongoid::Errors::Validations)
|
205
|
-
end
|
206
|
-
end
|
207
162
|
end
|
208
163
|
|
209
164
|
describe "#concat" do
|
210
165
|
|
211
166
|
before do
|
212
|
-
@association = Mongoid::Associations::
|
167
|
+
@association = Mongoid::Associations::HasMany.new(
|
213
168
|
@document,
|
214
169
|
Mongoid::Associations::Options.new(:name => :addresses)
|
215
170
|
)
|
@@ -227,7 +182,7 @@ describe Mongoid::Associations::EmbedsMany do
|
|
227
182
|
describe "#clear" do
|
228
183
|
|
229
184
|
before do
|
230
|
-
@association = Mongoid::Associations::
|
185
|
+
@association = Mongoid::Associations::HasMany.new(
|
231
186
|
@document,
|
232
187
|
Mongoid::Associations::Options.new(:name => :addresses)
|
233
188
|
)
|
@@ -245,7 +200,7 @@ describe Mongoid::Associations::EmbedsMany do
|
|
245
200
|
describe "#find" do
|
246
201
|
|
247
202
|
before do
|
248
|
-
@association = Mongoid::Associations::
|
203
|
+
@association = Mongoid::Associations::HasMany.new(
|
249
204
|
@document,
|
250
205
|
Mongoid::Associations::Options.new(:name => :addresses)
|
251
206
|
)
|
@@ -275,7 +230,7 @@ describe Mongoid::Associations::EmbedsMany do
|
|
275
230
|
context "when there are elements in the array" do
|
276
231
|
|
277
232
|
before do
|
278
|
-
@association = Mongoid::Associations::
|
233
|
+
@association = Mongoid::Associations::HasMany.new(
|
279
234
|
@document,
|
280
235
|
Mongoid::Associations::Options.new(:name => :addresses)
|
281
236
|
)
|
@@ -291,7 +246,7 @@ describe Mongoid::Associations::EmbedsMany do
|
|
291
246
|
context "when the array is empty" do
|
292
247
|
|
293
248
|
before do
|
294
|
-
@association = Mongoid::Associations::
|
249
|
+
@association = Mongoid::Associations::HasMany.new(
|
295
250
|
Person.new,
|
296
251
|
Mongoid::Associations::Options.new(:name => :addresses)
|
297
252
|
)
|
@@ -310,8 +265,8 @@ describe Mongoid::Associations::EmbedsMany do
|
|
310
265
|
context "when no extension exists" do
|
311
266
|
|
312
267
|
before do
|
313
|
-
@canvas = stub(:raw_attributes => { "shapes" => [{ "_type" => "Circle", "radius" => 5 }] }, :
|
314
|
-
@association = Mongoid::Associations::
|
268
|
+
@canvas = stub(:raw_attributes => { "shapes" => [{ "_type" => "Circle", "radius" => 5 }] }, :update => true)
|
269
|
+
@association = Mongoid::Associations::HasMany.new(
|
315
270
|
@canvas,
|
316
271
|
Mongoid::Associations::Options.new(:name => :shapes)
|
317
272
|
)
|
@@ -334,7 +289,7 @@ describe Mongoid::Associations::EmbedsMany do
|
|
334
289
|
"Testing"
|
335
290
|
end
|
336
291
|
end
|
337
|
-
@association = Mongoid::Associations::
|
292
|
+
@association = Mongoid::Associations::HasMany.new(
|
338
293
|
@person,
|
339
294
|
Mongoid::Associations::Options.new(:name => :addresses, :extend => @block)
|
340
295
|
)
|
@@ -351,8 +306,8 @@ describe Mongoid::Associations::EmbedsMany do
|
|
351
306
|
describe ".instantiate" do
|
352
307
|
|
353
308
|
it "delegates to new" do
|
354
|
-
Mongoid::Associations::
|
355
|
-
Mongoid::Associations::
|
309
|
+
Mongoid::Associations::HasMany.expects(:new).with(@document, @options)
|
310
|
+
Mongoid::Associations::HasMany.instantiate(@document, @options)
|
356
311
|
end
|
357
312
|
|
358
313
|
end
|
@@ -362,7 +317,7 @@ describe Mongoid::Associations::EmbedsMany do
|
|
362
317
|
context "#length" do
|
363
318
|
|
364
319
|
it "returns the length of the delegated array" do
|
365
|
-
@association = Mongoid::Associations::
|
320
|
+
@association = Mongoid::Associations::HasMany.new(
|
366
321
|
@document,
|
367
322
|
Mongoid::Associations::Options.new(:name => :addresses)
|
368
323
|
)
|
@@ -375,8 +330,8 @@ describe Mongoid::Associations::EmbedsMany do
|
|
375
330
|
|
376
331
|
describe ".macro" do
|
377
332
|
|
378
|
-
it "returns :
|
379
|
-
Mongoid::Associations::
|
333
|
+
it "returns :has_many" do
|
334
|
+
Mongoid::Associations::HasMany.macro.should == :has_many
|
380
335
|
end
|
381
336
|
|
382
337
|
end
|
@@ -384,7 +339,7 @@ describe Mongoid::Associations::EmbedsMany do
|
|
384
339
|
describe "#nested_build" do
|
385
340
|
|
386
341
|
before do
|
387
|
-
@association = Mongoid::Associations::
|
342
|
+
@association = Mongoid::Associations::HasMany.new(
|
388
343
|
@document,
|
389
344
|
Mongoid::Associations::Options.new(:name => :addresses)
|
390
345
|
)
|
@@ -403,7 +358,7 @@ describe Mongoid::Associations::EmbedsMany do
|
|
403
358
|
context "when the association class has a criteria class method" do
|
404
359
|
|
405
360
|
before do
|
406
|
-
@association = Mongoid::Associations::
|
361
|
+
@association = Mongoid::Associations::HasMany.new(
|
407
362
|
@document,
|
408
363
|
Mongoid::Associations::Options.new(:name => :addresses)
|
409
364
|
)
|
@@ -430,7 +385,7 @@ describe Mongoid::Associations::EmbedsMany do
|
|
430
385
|
context "when no class method exists" do
|
431
386
|
|
432
387
|
before do
|
433
|
-
@association = Mongoid::Associations::
|
388
|
+
@association = Mongoid::Associations::HasMany.new(
|
434
389
|
@document,
|
435
390
|
Mongoid::Associations::Options.new(:name => :addresses)
|
436
391
|
)
|
@@ -447,7 +402,7 @@ describe Mongoid::Associations::EmbedsMany do
|
|
447
402
|
describe "#paginate" do
|
448
403
|
|
449
404
|
before do
|
450
|
-
@association = Mongoid::Associations::
|
405
|
+
@association = Mongoid::Associations::HasMany.new(
|
451
406
|
@document,
|
452
407
|
Mongoid::Associations::Options.new(:name => :addresses)
|
453
408
|
)
|
@@ -466,7 +421,7 @@ describe Mongoid::Associations::EmbedsMany do
|
|
466
421
|
describe "#push" do
|
467
422
|
|
468
423
|
before do
|
469
|
-
@association = Mongoid::Associations::
|
424
|
+
@association = Mongoid::Associations::HasMany.new(
|
470
425
|
@document,
|
471
426
|
Mongoid::Associations::Options.new(:name => :addresses)
|
472
427
|
)
|
@@ -491,7 +446,7 @@ describe Mongoid::Associations::EmbedsMany do
|
|
491
446
|
before do
|
492
447
|
@address = Address.new(:street => "Madison Ave")
|
493
448
|
@person = Person.new(:title => "Sir")
|
494
|
-
@association = Mongoid::Associations::
|
449
|
+
@association = Mongoid::Associations::HasMany.update(
|
495
450
|
[@address],
|
496
451
|
@person,
|
497
452
|
Mongoid::Associations::Options.new(:name => :addresses)
|
@@ -1,13 +1,13 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
|
-
describe Mongoid::Associations::
|
3
|
+
describe Mongoid::Associations::HasOne do
|
4
4
|
|
5
5
|
before do
|
6
6
|
@attributes = { "mixed_drink" => {
|
7
7
|
"name" => "Jack and Coke", "_type" => "MixedDrink" },
|
8
8
|
"writer" => { "speed" => 50, "_type" => "HtmlWriter" }
|
9
9
|
}
|
10
|
-
@document = stub(:raw_attributes => @attributes, :
|
10
|
+
@document = stub(:raw_attributes => @attributes, :update => true)
|
11
11
|
end
|
12
12
|
|
13
13
|
describe "#build_*" do
|
@@ -15,7 +15,7 @@ describe Mongoid::Associations::EmbedsOne do
|
|
15
15
|
context "when attributes provided" do
|
16
16
|
|
17
17
|
before do
|
18
|
-
@association = Mongoid::Associations::
|
18
|
+
@association = Mongoid::Associations::HasOne.new(
|
19
19
|
@document,
|
20
20
|
@attributes["mixed_drink"],
|
21
21
|
Mongoid::Associations::Options.new(:name => :mixed_drink)
|
@@ -32,7 +32,7 @@ describe Mongoid::Associations::EmbedsOne do
|
|
32
32
|
context "when a type is supplied" do
|
33
33
|
|
34
34
|
before do
|
35
|
-
@association = Mongoid::Associations::
|
35
|
+
@association = Mongoid::Associations::HasOne.new(
|
36
36
|
@document,
|
37
37
|
@attributes["writer"],
|
38
38
|
Mongoid::Associations::Options.new(:name => :writer)
|
@@ -75,7 +75,7 @@ describe Mongoid::Associations::EmbedsOne do
|
|
75
75
|
end
|
76
76
|
}
|
77
77
|
@options = Mongoid::Associations::Options.new(:name => :name, :extend => @block)
|
78
|
-
@association = Mongoid::Associations::
|
78
|
+
@association = Mongoid::Associations::HasOne.new(@parent, {}, @options)
|
79
79
|
end
|
80
80
|
|
81
81
|
context "when the options have an extension" do
|
@@ -94,7 +94,7 @@ describe Mongoid::Associations::EmbedsOne do
|
|
94
94
|
|
95
95
|
before do
|
96
96
|
@document = Person.new
|
97
|
-
@association = Mongoid::Associations::
|
97
|
+
@association = Mongoid::Associations::HasOne.instantiate(
|
98
98
|
@document,
|
99
99
|
Mongoid::Associations::Options.new(:name => :name)
|
100
100
|
)
|
@@ -110,7 +110,7 @@ describe Mongoid::Associations::EmbedsOne do
|
|
110
110
|
|
111
111
|
before do
|
112
112
|
@document = stub(:raw_attributes => { "name" => {} })
|
113
|
-
@association = Mongoid::Associations::
|
113
|
+
@association = Mongoid::Associations::HasOne.instantiate(
|
114
114
|
@document,
|
115
115
|
Mongoid::Associations::Options.new(:name => :name)
|
116
116
|
)
|
@@ -130,8 +130,8 @@ describe Mongoid::Associations::EmbedsOne do
|
|
130
130
|
end
|
131
131
|
|
132
132
|
it "delegates to new" do
|
133
|
-
Mongoid::Associations::
|
134
|
-
Mongoid::Associations::
|
133
|
+
Mongoid::Associations::HasOne.expects(:new).with(@document, { "first_name" => "Test" }, @options)
|
134
|
+
Mongoid::Associations::HasOne.instantiate(@document, @options)
|
135
135
|
end
|
136
136
|
|
137
137
|
end
|
@@ -141,7 +141,7 @@ describe Mongoid::Associations::EmbedsOne do
|
|
141
141
|
describe "#method_missing" do
|
142
142
|
|
143
143
|
before do
|
144
|
-
@association = Mongoid::Associations::
|
144
|
+
@association = Mongoid::Associations::HasOne.new(
|
145
145
|
@document,
|
146
146
|
@attributes["mixed_drink"],
|
147
147
|
Mongoid::Associations::Options.new(:name => :mixed_drink)
|
@@ -172,7 +172,7 @@ describe Mongoid::Associations::EmbedsOne do
|
|
172
172
|
context "when attributes provided" do
|
173
173
|
|
174
174
|
before do
|
175
|
-
@association = Mongoid::Associations::
|
175
|
+
@association = Mongoid::Associations::HasOne.new(
|
176
176
|
@document,
|
177
177
|
@attributes["mixed_drink"],
|
178
178
|
Mongoid::Associations::Options.new(:name => :mixed_drink)
|
@@ -190,8 +190,8 @@ describe Mongoid::Associations::EmbedsOne do
|
|
190
190
|
|
191
191
|
describe ".macro" do
|
192
192
|
|
193
|
-
it "returns :
|
194
|
-
Mongoid::Associations::
|
193
|
+
it "returns :has_one" do
|
194
|
+
Mongoid::Associations::HasOne.macro.should == :has_one
|
195
195
|
end
|
196
196
|
|
197
197
|
end
|
@@ -203,7 +203,7 @@ describe Mongoid::Associations::EmbedsOne do
|
|
203
203
|
before do
|
204
204
|
@name = Name.new(:first_name => "Donald")
|
205
205
|
@person = Person.new(:title => "Sir")
|
206
|
-
@association = Mongoid::Associations::
|
206
|
+
@association = Mongoid::Associations::HasOne.update(
|
207
207
|
@name,
|
208
208
|
@person,
|
209
209
|
Mongoid::Associations::Options.new(:name => :name)
|
@@ -230,7 +230,7 @@ describe Mongoid::Associations::EmbedsOne do
|
|
230
230
|
before do
|
231
231
|
@name = Name.new(:first_name => "Donald")
|
232
232
|
@person = Person.new(:title => "Sir")
|
233
|
-
Mongoid::Associations::
|
233
|
+
Mongoid::Associations::HasOne.update(
|
234
234
|
nil,
|
235
235
|
@person,
|
236
236
|
Mongoid::Associations::Options.new(:name => :name)
|
@@ -248,7 +248,7 @@ describe Mongoid::Associations::EmbedsOne do
|
|
248
248
|
describe "#to_a" do
|
249
249
|
|
250
250
|
before do
|
251
|
-
@association = Mongoid::Associations::
|
251
|
+
@association = Mongoid::Associations::HasOne.new(
|
252
252
|
@document,
|
253
253
|
@attributes["mixed_drink"],
|
254
254
|
Mongoid::Associations::Options.new(:name => :mixed_drink)
|
@@ -266,9 +266,9 @@ describe Mongoid::Associations::EmbedsOne do
|
|
266
266
|
context "when the document is not nil" do
|
267
267
|
|
268
268
|
before do
|
269
|
-
@document = stub(:raw_attributes => { "name" => { "first_name" => "Test" } }, :
|
269
|
+
@document = stub(:raw_attributes => { "name" => { "first_name" => "Test" } }, :update => true)
|
270
270
|
@options = Mongoid::Associations::Options.new(:name => :name)
|
271
|
-
@association = Mongoid::Associations::
|
271
|
+
@association = Mongoid::Associations::HasOne.instantiate(@document, @options)
|
272
272
|
end
|
273
273
|
|
274
274
|
it "validates the document" do
|
@@ -75,29 +75,15 @@ describe Mongoid::Associations::Options do
|
|
75
75
|
|
76
76
|
describe "#foreign_key" do
|
77
77
|
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
@attributes = { :name => :posts }
|
82
|
-
@options = Mongoid::Associations::Options.new(@attributes)
|
83
|
-
end
|
84
|
-
|
85
|
-
it "returns the association foreign_key" do
|
86
|
-
@options.foreign_key.should == "post_id"
|
87
|
-
end
|
78
|
+
before do
|
79
|
+
@attributes = { :name => :game }
|
80
|
+
@options = Mongoid::Associations::Options.new(@attributes)
|
88
81
|
end
|
89
82
|
|
90
|
-
|
91
|
-
|
92
|
-
before do
|
93
|
-
@attributes = { :name => :posts, :foreign_key => "blog_post_id" }
|
94
|
-
@options = Mongoid::Associations::Options.new(@attributes)
|
95
|
-
end
|
96
|
-
|
97
|
-
it "returns the custom foreign_key" do
|
98
|
-
@options.foreign_key.should == "blog_post_id"
|
99
|
-
end
|
83
|
+
it "returns the association foreign_key" do
|
84
|
+
@options.foreign_key.should == "game_id"
|
100
85
|
end
|
86
|
+
|
101
87
|
end
|
102
88
|
|
103
89
|
describe "#inverse_of" do
|
@@ -160,6 +146,19 @@ describe Mongoid::Associations::Options do
|
|
160
146
|
|
161
147
|
end
|
162
148
|
|
149
|
+
describe "#parent_key" do
|
150
|
+
|
151
|
+
before do
|
152
|
+
@attributes = { :parent_key => :person_id }
|
153
|
+
@options = Mongoid::Associations::Options.new(@attributes)
|
154
|
+
end
|
155
|
+
|
156
|
+
it "returns the parent's foreign key value" do
|
157
|
+
@options.parent_key.should == :person_id
|
158
|
+
end
|
159
|
+
|
160
|
+
end
|
161
|
+
|
163
162
|
describe "#polymorphic" do
|
164
163
|
|
165
164
|
context "when attribute provided" do
|