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
@@ -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
|