mongoid-pre 2.0.0.beta1 → 2.0.0.pre
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/.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
|
@@ -94,18 +94,7 @@ describe Mongoid::Associations do
|
|
|
94
94
|
|
|
95
95
|
end
|
|
96
96
|
|
|
97
|
-
describe "
|
|
98
|
-
|
|
99
|
-
before do
|
|
100
|
-
@person = Person.new
|
|
101
|
-
end
|
|
102
|
-
|
|
103
|
-
it "is a hash with name keys and meta data values" do
|
|
104
|
-
@person.associations["addresses"].should be_a_kind_of(Mongoid::Associations::MetaData)
|
|
105
|
-
end
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
describe ".embedded_in" do
|
|
97
|
+
describe ".belongs_to" do
|
|
109
98
|
|
|
110
99
|
it "creates a reader for the association" do
|
|
111
100
|
address = Address.new
|
|
@@ -141,7 +130,7 @@ describe Mongoid::Associations do
|
|
|
141
130
|
context "when inverse_of not supplied" do
|
|
142
131
|
|
|
143
132
|
it "raises an error" do
|
|
144
|
-
lambda { Person.class_eval {
|
|
133
|
+
lambda { Person.class_eval { belongs_to :nothing } }.should raise_error
|
|
145
134
|
end
|
|
146
135
|
|
|
147
136
|
end
|
|
@@ -210,18 +199,6 @@ describe Mongoid::Associations do
|
|
|
210
199
|
|
|
211
200
|
end
|
|
212
201
|
|
|
213
|
-
context "when attributes are nil" do
|
|
214
|
-
|
|
215
|
-
before do
|
|
216
|
-
@writer = @canvas.build_writer(nil)
|
|
217
|
-
end
|
|
218
|
-
|
|
219
|
-
it "defaults them to empty" do
|
|
220
|
-
@writer.should be_a_kind_of(Writer)
|
|
221
|
-
end
|
|
222
|
-
|
|
223
|
-
end
|
|
224
|
-
|
|
225
202
|
end
|
|
226
203
|
|
|
227
204
|
describe "#create_*" do
|
|
@@ -274,7 +251,7 @@ describe Mongoid::Associations do
|
|
|
274
251
|
|
|
275
252
|
end
|
|
276
253
|
|
|
277
|
-
describe ".
|
|
254
|
+
describe ".has_many" do
|
|
278
255
|
|
|
279
256
|
it "adds a new Association to the collection" do
|
|
280
257
|
person = Person.new
|
|
@@ -350,7 +327,7 @@ describe Mongoid::Associations do
|
|
|
350
327
|
|
|
351
328
|
end
|
|
352
329
|
|
|
353
|
-
describe ".
|
|
330
|
+
describe ".has_one" do
|
|
354
331
|
|
|
355
332
|
before do
|
|
356
333
|
@person = Person.new
|
|
@@ -421,7 +398,7 @@ describe Mongoid::Associations do
|
|
|
421
398
|
describe ".reflect_on_association" do
|
|
422
399
|
|
|
423
400
|
it "returns the association class for the name" do
|
|
424
|
-
Person.reflect_on_association(:addresses).should == :
|
|
401
|
+
Person.reflect_on_association(:addresses).should == :has_many
|
|
425
402
|
end
|
|
426
403
|
|
|
427
404
|
end
|
|
@@ -440,10 +417,6 @@ describe Mongoid::Associations do
|
|
|
440
417
|
@game.should respond_to(:person)
|
|
441
418
|
end
|
|
442
419
|
|
|
443
|
-
it "defaults the foreign_key option to the name_id" do
|
|
444
|
-
@game.associations["person"].foreign_key.should == "person_id"
|
|
445
|
-
end
|
|
446
|
-
|
|
447
420
|
context "when document is root level" do
|
|
448
421
|
|
|
449
422
|
it "puts an index on the foreign key" do
|
|
@@ -453,22 +426,6 @@ describe Mongoid::Associations do
|
|
|
453
426
|
|
|
454
427
|
end
|
|
455
428
|
|
|
456
|
-
context "when using object ids" do
|
|
457
|
-
|
|
458
|
-
before do
|
|
459
|
-
Mongoid.use_object_ids = true
|
|
460
|
-
end
|
|
461
|
-
|
|
462
|
-
after do
|
|
463
|
-
Mongoid.use_object_ids = false
|
|
464
|
-
end
|
|
465
|
-
|
|
466
|
-
it "sets the foreign key as an object id" do
|
|
467
|
-
Game.expects(:field).with("person_id", :type => Mongo::ObjectID)
|
|
468
|
-
Game.belongs_to_related :person
|
|
469
|
-
end
|
|
470
|
-
end
|
|
471
|
-
|
|
472
429
|
end
|
|
473
430
|
|
|
474
431
|
describe ".has_one_related" do
|
|
@@ -525,34 +482,15 @@ describe Mongoid::Associations do
|
|
|
525
482
|
|
|
526
483
|
context "when associations exist" do
|
|
527
484
|
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
@person = Person.new
|
|
533
|
-
@person.posts = [@related]
|
|
534
|
-
end
|
|
535
|
-
|
|
536
|
-
it "saves each association" do
|
|
537
|
-
@related.expects(:save).returns(@related)
|
|
538
|
-
@person.update_associations(:posts)
|
|
539
|
-
end
|
|
540
|
-
|
|
485
|
+
before do
|
|
486
|
+
@related = stub(:id => "100", :person= => true)
|
|
487
|
+
@person = Person.new
|
|
488
|
+
@person.posts = [@related]
|
|
541
489
|
end
|
|
542
490
|
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
@related = stub(:id => "100", :person= => true)
|
|
547
|
-
@person = Person.new
|
|
548
|
-
@person.instance_variable_set(:@new_record, false)
|
|
549
|
-
@person.posts = [@related]
|
|
550
|
-
end
|
|
551
|
-
|
|
552
|
-
it "does not save each association" do
|
|
553
|
-
@person.update_associations(:posts)
|
|
554
|
-
end
|
|
555
|
-
|
|
491
|
+
it "saves each association" do
|
|
492
|
+
@related.expects(:save).returns(@related)
|
|
493
|
+
@person.update_associations(:posts)
|
|
556
494
|
end
|
|
557
495
|
|
|
558
496
|
end
|
|
@@ -142,17 +142,6 @@ describe Mongoid::Attributes do
|
|
|
142
142
|
|
|
143
143
|
describe "#process" do
|
|
144
144
|
|
|
145
|
-
context "when passing non accessible fields" do
|
|
146
|
-
|
|
147
|
-
before do
|
|
148
|
-
@person = Person.new(:owner_id => 6)
|
|
149
|
-
end
|
|
150
|
-
|
|
151
|
-
it "does not set the value" do
|
|
152
|
-
@person.owner_id.should be_nil
|
|
153
|
-
end
|
|
154
|
-
end
|
|
155
|
-
|
|
156
145
|
context "when attributes dont have fields defined" do
|
|
157
146
|
|
|
158
147
|
before do
|
|
@@ -342,23 +331,10 @@ describe Mongoid::Attributes do
|
|
|
342
331
|
|
|
343
332
|
it "returns the default value" do
|
|
344
333
|
@person.age.should == 100
|
|
345
|
-
@person.pets.should == false
|
|
346
334
|
end
|
|
347
335
|
|
|
348
336
|
end
|
|
349
337
|
|
|
350
|
-
context "when attribute is not accessible" do
|
|
351
|
-
|
|
352
|
-
before do
|
|
353
|
-
@person = Person.new
|
|
354
|
-
@person.owner_id = 5
|
|
355
|
-
end
|
|
356
|
-
|
|
357
|
-
it "returns the value" do
|
|
358
|
-
@person.read_attribute(:owner_id).should == 5
|
|
359
|
-
end
|
|
360
|
-
end
|
|
361
|
-
|
|
362
338
|
end
|
|
363
339
|
|
|
364
340
|
describe "#remove_attribute" do
|
|
@@ -415,91 +391,83 @@ describe Mongoid::Attributes do
|
|
|
415
391
|
|
|
416
392
|
end
|
|
417
393
|
|
|
418
|
-
describe "#
|
|
419
|
-
it 'should be a alias of write_attributes' do
|
|
420
|
-
|
|
421
|
-
end
|
|
422
|
-
end
|
|
423
|
-
|
|
424
|
-
[:attributes=, :write_attributes].each do |method|
|
|
425
|
-
describe "##{method}" do
|
|
394
|
+
describe "#write_attributes" do
|
|
426
395
|
|
|
427
|
-
|
|
396
|
+
context "typecasting" do
|
|
428
397
|
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
it "properly casts values" do
|
|
435
|
-
@person.send(method, @attributes)
|
|
436
|
-
@person.age.should == 50
|
|
437
|
-
end
|
|
398
|
+
before do
|
|
399
|
+
@person = Person.new
|
|
400
|
+
@attributes = { :age => "50" }
|
|
401
|
+
end
|
|
438
402
|
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
403
|
+
it "properly casts values" do
|
|
404
|
+
@person.write_attributes(@attributes)
|
|
405
|
+
@person.age.should == 50
|
|
406
|
+
end
|
|
443
407
|
|
|
408
|
+
it "allows passing of nil" do
|
|
409
|
+
@person.write_attributes(nil)
|
|
410
|
+
@person.age.should == 100
|
|
444
411
|
end
|
|
445
412
|
|
|
446
|
-
|
|
413
|
+
end
|
|
447
414
|
|
|
448
|
-
|
|
415
|
+
context "on a parent document" do
|
|
449
416
|
|
|
450
|
-
|
|
451
|
-
@owner = PetOwner.new(:title => "Mr")
|
|
452
|
-
@pet = Pet.new(:name => "Fido")
|
|
453
|
-
@owner.pet = @pet
|
|
454
|
-
@vet_visit = VetVisit.new(:date => Date.today)
|
|
455
|
-
@pet.vet_visits = [@vet_visit]
|
|
456
|
-
end
|
|
417
|
+
context "when the parent has a has many through a has one" do
|
|
457
418
|
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
419
|
+
before do
|
|
420
|
+
@owner = PetOwner.new(:title => "Mr")
|
|
421
|
+
@pet = Pet.new(:name => "Fido")
|
|
422
|
+
@owner.pet = @pet
|
|
423
|
+
@vet_visit = VetVisit.new(:date => Date.today)
|
|
424
|
+
@pet.vet_visits = [@vet_visit]
|
|
425
|
+
end
|
|
463
426
|
|
|
427
|
+
it "does not overwrite child attributes if not in the hash" do
|
|
428
|
+
@owner.write_attributes({ :pet => { :name => "Bingo" } })
|
|
429
|
+
@owner.pet.name.should == "Bingo"
|
|
430
|
+
@owner.pet.vet_visits.size.should == 1
|
|
464
431
|
end
|
|
465
432
|
|
|
466
433
|
end
|
|
467
434
|
|
|
468
|
-
|
|
435
|
+
end
|
|
469
436
|
|
|
470
|
-
|
|
437
|
+
context "on a child document" do
|
|
471
438
|
|
|
472
|
-
|
|
473
|
-
@person = Person.new(:title => "Sir", :age => 30)
|
|
474
|
-
@name = Name.new(:first_name => "Test", :last_name => "User")
|
|
475
|
-
@person.name = @name
|
|
476
|
-
end
|
|
439
|
+
context "when child is part of a has one" do
|
|
477
440
|
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
441
|
+
before do
|
|
442
|
+
@person = Person.new(:title => "Sir", :age => 30)
|
|
443
|
+
@name = Name.new(:first_name => "Test", :last_name => "User")
|
|
444
|
+
@person.name = @name
|
|
445
|
+
end
|
|
483
446
|
|
|
447
|
+
it "sets the child attributes on the parent" do
|
|
448
|
+
@name.write_attributes(:first_name => "Test2", :last_name => "User2")
|
|
449
|
+
@person.attributes[:name].should ==
|
|
450
|
+
{ "_id" => "test-user", "first_name" => "Test2", "last_name" => "User2", "_type" => "Name" }
|
|
484
451
|
end
|
|
485
452
|
|
|
486
|
-
|
|
453
|
+
end
|
|
487
454
|
|
|
488
|
-
|
|
489
|
-
@person = Person.new(:title => "Sir")
|
|
490
|
-
@address = Address.new(:street => "Test")
|
|
491
|
-
@person.addresses << @address
|
|
492
|
-
end
|
|
455
|
+
context "when child is part of a has many" do
|
|
493
456
|
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
457
|
+
before do
|
|
458
|
+
@person = Person.new(:title => "Sir")
|
|
459
|
+
@address = Address.new(:street => "Test")
|
|
460
|
+
@person.addresses << @address
|
|
461
|
+
end
|
|
499
462
|
|
|
463
|
+
it "updates the child attributes on the parent" do
|
|
464
|
+
@address.write_attributes("street" => "Test2")
|
|
465
|
+
@person.attributes[:addresses].should ==
|
|
466
|
+
[ { "_id" => "test", "street" => "Test2", "_type" => "Address" } ]
|
|
500
467
|
end
|
|
501
468
|
|
|
502
469
|
end
|
|
470
|
+
|
|
503
471
|
end
|
|
504
472
|
|
|
505
473
|
end
|
|
@@ -40,52 +40,6 @@ describe Mongoid::Collection do
|
|
|
40
40
|
end
|
|
41
41
|
end
|
|
42
42
|
|
|
43
|
-
describe "#directed" do
|
|
44
|
-
|
|
45
|
-
context "when an enslave option is not passed" do
|
|
46
|
-
|
|
47
|
-
before do
|
|
48
|
-
slaves.expects(:empty?).returns(false)
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
before do
|
|
52
|
-
Person.enslave
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
after do
|
|
56
|
-
Person.enslaved = false
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
it "uses the default" do
|
|
60
|
-
collection.directed.should == slaves
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
context "when an enslave option is passed" do
|
|
65
|
-
|
|
66
|
-
before do
|
|
67
|
-
slaves.expects(:empty?).returns(false)
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
it "overwrites the default" do
|
|
71
|
-
collection.directed(:enslave => true).should == slaves
|
|
72
|
-
end
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
context "when cached option is passed" do
|
|
76
|
-
|
|
77
|
-
let(:options) do
|
|
78
|
-
{ :cache => true }
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
it "removed the cache option" do
|
|
82
|
-
collection.directed(options).should == master
|
|
83
|
-
options[:cache].should be_nil
|
|
84
|
-
end
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
end
|
|
88
|
-
|
|
89
43
|
describe "#find" do
|
|
90
44
|
|
|
91
45
|
before do
|
|
@@ -15,45 +15,44 @@ describe Mongoid::Commands::DeleteAll do
|
|
|
15
15
|
before do
|
|
16
16
|
@collection = mock
|
|
17
17
|
@conditions = { :conditions => { :title => "Sir" } }
|
|
18
|
-
@cursor = stub(:count => 30)
|
|
19
18
|
end
|
|
20
19
|
|
|
21
20
|
it "deletes each document that the criteria finds" do
|
|
22
21
|
@klass.expects(:collection).returns(@collection)
|
|
23
|
-
@collection.expects(:
|
|
24
|
-
@collection.expects(:remove).with(@conditions[:conditions].merge(:_type => "Person"), :safe => true)
|
|
22
|
+
@collection.expects(:remove).with(@conditions[:conditions].merge(:_type => "Person"))
|
|
25
23
|
Mongoid::Commands::DeleteAll.execute(@klass, @conditions)
|
|
26
24
|
end
|
|
25
|
+
|
|
27
26
|
end
|
|
28
27
|
|
|
29
28
|
context "when no conditions supplied" do
|
|
30
29
|
|
|
31
30
|
before do
|
|
32
31
|
@collection = mock
|
|
33
|
-
@cursor = stub(:count => 30)
|
|
34
32
|
end
|
|
35
33
|
|
|
36
34
|
it "drops the collection" do
|
|
37
35
|
@klass.expects(:collection).returns(@collection)
|
|
38
|
-
@collection.expects(:
|
|
39
|
-
@collection.expects(:remove).with({ :_type => "Person" }, { :safe => true })
|
|
36
|
+
@collection.expects(:remove).with(:_type => "Person")
|
|
40
37
|
Mongoid::Commands::DeleteAll.execute(@klass)
|
|
41
38
|
end
|
|
39
|
+
|
|
42
40
|
end
|
|
43
41
|
|
|
44
42
|
context "when empty conditions supplied" do
|
|
45
43
|
|
|
46
44
|
before do
|
|
47
45
|
@collection = mock
|
|
48
|
-
@cursor = stub(:count => 30)
|
|
49
46
|
end
|
|
50
47
|
|
|
51
48
|
it "drops the collection" do
|
|
52
49
|
@klass.expects(:collection).returns(@collection)
|
|
53
|
-
@collection.expects(:
|
|
54
|
-
@collection.expects(:remove).with({ :_type => "Person" }, { :safe => true })
|
|
50
|
+
@collection.expects(:remove).with(:_type => "Person")
|
|
55
51
|
Mongoid::Commands::DeleteAll.execute(@klass, {})
|
|
56
52
|
end
|
|
53
|
+
|
|
57
54
|
end
|
|
55
|
+
|
|
58
56
|
end
|
|
57
|
+
|
|
59
58
|
end
|
|
@@ -14,12 +14,6 @@ describe Mongoid::Commands::Delete do
|
|
|
14
14
|
Mongoid::Commands::Delete.execute(@document)
|
|
15
15
|
end
|
|
16
16
|
|
|
17
|
-
it "sets the destroyed flag to true" do
|
|
18
|
-
@collection.expects(:remove).with({ :_id => @document.id }).returns(true)
|
|
19
|
-
@document.expects(:destroyed=).with(true)
|
|
20
|
-
Mongoid::Commands::Delete.execute(@document)
|
|
21
|
-
end
|
|
22
|
-
|
|
23
17
|
context "when the document is embedded" do
|
|
24
18
|
|
|
25
19
|
before do
|
|
@@ -33,6 +27,9 @@ describe Mongoid::Commands::Delete do
|
|
|
33
27
|
Mongoid::Commands::Delete.execute(@address)
|
|
34
28
|
@parent.addresses.should be_empty
|
|
35
29
|
end
|
|
30
|
+
|
|
36
31
|
end
|
|
32
|
+
|
|
37
33
|
end
|
|
34
|
+
|
|
38
35
|
end
|
|
@@ -23,29 +23,22 @@ describe Mongoid::Commands::Destroy do
|
|
|
23
23
|
Mongoid::Commands::Destroy.execute(@document)
|
|
24
24
|
end
|
|
25
25
|
|
|
26
|
-
it "sets the destroy flag on the document" do
|
|
27
|
-
@document.expects(:run_callbacks).with(:destroy).yields
|
|
28
|
-
@collection.expects(:remove).with({ :_id => @document.id }).returns(true)
|
|
29
|
-
@document.expects(:destroyed=).with(true)
|
|
30
|
-
Mongoid::Commands::Destroy.execute(@document)
|
|
31
|
-
end
|
|
32
|
-
|
|
33
26
|
context "when the document is embedded" do
|
|
34
27
|
|
|
35
28
|
before do
|
|
36
29
|
@parent = Person.new
|
|
37
30
|
@address = Address.new(:street => "Genoa Pl")
|
|
38
31
|
@parent.addresses << @address
|
|
39
|
-
@collection = mock
|
|
40
|
-
Person.expects(:collection).returns(@collection)
|
|
41
32
|
end
|
|
42
33
|
|
|
43
34
|
it "removes the document from the parent attributes" do
|
|
44
35
|
@parent.addresses.should == [@address]
|
|
45
|
-
@collection.expects(:save).returns(true)
|
|
46
36
|
Mongoid::Commands::Destroy.execute(@address)
|
|
47
37
|
@parent.addresses.should be_empty
|
|
48
38
|
end
|
|
39
|
+
|
|
49
40
|
end
|
|
41
|
+
|
|
50
42
|
end
|
|
43
|
+
|
|
51
44
|
end
|
|
@@ -37,22 +37,6 @@ describe Mongoid::Commands do
|
|
|
37
37
|
@person = Person.new
|
|
38
38
|
end
|
|
39
39
|
|
|
40
|
-
context "when validation fails" do
|
|
41
|
-
|
|
42
|
-
it "it raises an error" do
|
|
43
|
-
Mongoid::Commands::Save.expects(:execute).with(@person, true).returns(false)
|
|
44
|
-
@person.save.should be_false
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
it "should run callback before_create and no after_create" do
|
|
48
|
-
@person.expects(:run_callbacks).with(:create).yields.returns(false)
|
|
49
|
-
Mongoid::Commands::Save.expects(:execute).with(@person, true).returns(false)
|
|
50
|
-
@person.expects(:run_callbacks).with(:after_create).never
|
|
51
|
-
@person.save.should be_false
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
end
|
|
55
|
-
|
|
56
40
|
it "delegates to the save command" do
|
|
57
41
|
Mongoid::Commands::Save.expects(:execute).with(@person, true).returns(true)
|
|
58
42
|
@person.save
|
|
@@ -85,9 +69,10 @@ describe Mongoid::Commands do
|
|
|
85
69
|
@person = Person.new
|
|
86
70
|
end
|
|
87
71
|
|
|
88
|
-
it "
|
|
72
|
+
it "returns false" do
|
|
89
73
|
Mongoid::Commands::Save.expects(:execute).raises(Mongo::OperationFailure.new("Operation Failed"))
|
|
90
|
-
|
|
74
|
+
@person.save
|
|
75
|
+
@person.errors[:mongoid].should == [ "Operation Failed" ]
|
|
91
76
|
end
|
|
92
77
|
|
|
93
78
|
end
|
|
@@ -200,8 +185,14 @@ describe Mongoid::Commands do
|
|
|
200
185
|
Mongoid::Commands::Save.expects(:execute).raises(Mongo::OperationFailure.new("Operation Failed"))
|
|
201
186
|
end
|
|
202
187
|
|
|
203
|
-
it "
|
|
204
|
-
|
|
188
|
+
it "returns the document with errors" do
|
|
189
|
+
person = Person.create
|
|
190
|
+
person.errors[:mongoid].should == [ "Operation Failed" ]
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
it "keeps the document's new record flag" do
|
|
194
|
+
person = Person.create
|
|
195
|
+
person.should be_a_new_record
|
|
205
196
|
end
|
|
206
197
|
|
|
207
198
|
end
|
|
@@ -39,13 +39,6 @@ describe Mongoid::Config do
|
|
|
39
39
|
end
|
|
40
40
|
end
|
|
41
41
|
|
|
42
|
-
describe "#persist_types" do
|
|
43
|
-
|
|
44
|
-
it "defaults to true" do
|
|
45
|
-
config.persist_types.should == true
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
|
|
49
42
|
describe "#persist_in_safe_mode=" do
|
|
50
43
|
|
|
51
44
|
context "when setting to true" do
|
|
@@ -66,10 +59,6 @@ describe Mongoid::Config do
|
|
|
66
59
|
config.persist_in_safe_mode = false
|
|
67
60
|
end
|
|
68
61
|
|
|
69
|
-
after do
|
|
70
|
-
config.persist_in_safe_mode = true
|
|
71
|
-
end
|
|
72
|
-
|
|
73
62
|
it "sets the value" do
|
|
74
63
|
config.persist_in_safe_mode.should == false
|
|
75
64
|
end
|
|
@@ -166,11 +155,4 @@ describe Mongoid::Config do
|
|
|
166
155
|
|
|
167
156
|
end
|
|
168
157
|
|
|
169
|
-
describe "#use_object_ids" do
|
|
170
|
-
|
|
171
|
-
it "defaults to false" do
|
|
172
|
-
config.use_object_ids.should == false
|
|
173
|
-
end
|
|
174
|
-
end
|
|
175
|
-
|
|
176
158
|
end
|