mongoid 2.0.0.alpha → 2.0.0.beta.5
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/lib/mongoid.rb +11 -5
- data/lib/mongoid/associations.rb +112 -107
- data/lib/mongoid/associations/belongs_to_related.rb +2 -3
- data/lib/mongoid/associations/embedded_in.rb +12 -4
- data/lib/mongoid/associations/{embed_many.rb → embeds_many.rb} +101 -32
- data/lib/mongoid/associations/{embed_one.rb → embeds_one.rb} +10 -10
- data/lib/mongoid/associations/has_many_related.rb +51 -5
- data/lib/mongoid/associations/has_one_related.rb +9 -5
- data/lib/mongoid/associations/meta_data.rb +2 -1
- data/lib/mongoid/associations/options.rb +15 -6
- data/lib/mongoid/associations/proxy.rb +14 -21
- data/lib/mongoid/attributes.rb +34 -13
- data/lib/mongoid/callbacks.rb +1 -2
- data/lib/mongoid/collection.rb +4 -3
- data/lib/mongoid/collections.rb +41 -0
- data/lib/mongoid/collections/master.rb +3 -2
- data/lib/mongoid/collections/slaves.rb +3 -2
- data/lib/mongoid/components.rb +4 -1
- data/lib/mongoid/config.rb +163 -13
- data/lib/mongoid/contexts.rb +1 -2
- data/lib/mongoid/contexts/enumerable.rb +1 -1
- data/lib/mongoid/contexts/mongo.rb +1 -1
- data/lib/mongoid/contexts/paging.rb +10 -2
- data/lib/mongoid/criteria.rb +13 -22
- data/lib/mongoid/criterion/exclusion.rb +3 -3
- data/lib/mongoid/criterion/inclusion.rb +17 -0
- data/lib/mongoid/criterion/optional.rb +1 -1
- data/lib/mongoid/dirty.rb +253 -0
- data/lib/mongoid/document.rb +40 -85
- data/lib/mongoid/errors.rb +48 -1
- data/lib/mongoid/extensions.rb +11 -9
- data/lib/mongoid/extensions/big_decimal/conversions.rb +2 -2
- data/lib/mongoid/extensions/boolean/conversions.rb +8 -2
- data/lib/mongoid/extensions/date/conversions.rb +13 -4
- data/lib/mongoid/extensions/datetime/conversions.rb +1 -6
- data/lib/mongoid/extensions/float/conversions.rb +5 -1
- data/lib/mongoid/extensions/hash/assimilation.rb +12 -3
- data/lib/mongoid/extensions/hash/conversions.rb +34 -4
- data/lib/mongoid/extensions/integer/conversions.rb +5 -1
- data/lib/mongoid/extensions/nil/assimilation.rb +4 -0
- data/lib/mongoid/extensions/object/conversions.rb +3 -3
- data/lib/mongoid/extensions/string/conversions.rb +1 -1
- data/lib/mongoid/extensions/symbol/inflections.rb +5 -2
- data/lib/mongoid/extensions/time_conversions.rb +35 -0
- data/lib/mongoid/factory.rb +2 -1
- data/lib/mongoid/field.rb +15 -2
- data/lib/mongoid/fields.rb +1 -1
- data/lib/mongoid/identity.rb +3 -3
- data/lib/mongoid/indexes.rb +3 -3
- data/lib/mongoid/matchers.rb +1 -2
- data/lib/mongoid/memoization.rb +8 -2
- data/lib/mongoid/named_scope.rb +0 -5
- data/lib/mongoid/observable.rb +1 -1
- data/lib/mongoid/paths.rb +30 -22
- data/lib/mongoid/persistence.rb +218 -0
- data/lib/mongoid/persistence/command.rb +39 -0
- data/lib/mongoid/persistence/insert.rb +47 -0
- data/lib/mongoid/persistence/insert_embedded.rb +38 -0
- data/lib/mongoid/persistence/remove.rb +39 -0
- data/lib/mongoid/persistence/remove_all.rb +37 -0
- data/lib/mongoid/persistence/remove_embedded.rb +50 -0
- data/lib/mongoid/persistence/update.rb +63 -0
- data/lib/mongoid/railtie.rb +53 -0
- data/lib/mongoid/railties/database.rake +37 -0
- data/lib/mongoid/timestamps.rb +2 -2
- data/lib/mongoid/validations.rb +2 -2
- data/lib/mongoid/validations/associated.rb +2 -2
- data/lib/mongoid/validations/uniqueness.rb +13 -2
- data/lib/mongoid/version.rb +4 -0
- data/lib/mongoid/versioning.rb +3 -2
- data/lib/rails/generators/mongoid/config/config_generator.rb +41 -0
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +24 -0
- data/lib/rails/generators/mongoid/model/model_generator.rb +24 -0
- data/lib/rails/generators/mongoid/model/templates/model.rb +15 -0
- data/lib/rails/generators/mongoid_generator.rb +61 -0
- metadata +76 -301
- data/.gitignore +0 -6
- data/.watchr +0 -29
- data/Rakefile +0 -52
- data/VERSION +0 -1
- data/caliper.yml +0 -4
- data/lib/mongoid/collections/mimic.rb +0 -46
- data/lib/mongoid/commands.rb +0 -161
- data/lib/mongoid/commands/create.rb +0 -19
- data/lib/mongoid/commands/delete.rb +0 -16
- data/lib/mongoid/commands/delete_all.rb +0 -23
- data/lib/mongoid/commands/deletion.rb +0 -18
- data/lib/mongoid/commands/destroy.rb +0 -17
- data/lib/mongoid/commands/destroy_all.rb +0 -23
- data/lib/mongoid/commands/save.rb +0 -29
- data/lib/mongoid/extensions/time/conversions.rb +0 -18
- data/mongoid.gemspec +0 -408
- data/perf/benchmark.rb +0 -77
- data/spec/integration/mongoid/associations_spec.rb +0 -340
- data/spec/integration/mongoid/attributes_spec.rb +0 -22
- data/spec/integration/mongoid/commands_spec.rb +0 -227
- data/spec/integration/mongoid/contexts/enumerable_spec.rb +0 -33
- data/spec/integration/mongoid/criteria_spec.rb +0 -272
- data/spec/integration/mongoid/document_spec.rb +0 -650
- data/spec/integration/mongoid/extensions_spec.rb +0 -22
- data/spec/integration/mongoid/finders_spec.rb +0 -119
- data/spec/integration/mongoid/inheritance_spec.rb +0 -137
- data/spec/integration/mongoid/named_scope_spec.rb +0 -46
- data/spec/models/address.rb +0 -39
- data/spec/models/animal.rb +0 -6
- data/spec/models/callbacks.rb +0 -18
- data/spec/models/comment.rb +0 -8
- data/spec/models/country_code.rb +0 -6
- data/spec/models/employer.rb +0 -5
- data/spec/models/game.rb +0 -7
- data/spec/models/inheritance.rb +0 -56
- data/spec/models/location.rb +0 -5
- data/spec/models/mixed_drink.rb +0 -4
- data/spec/models/name.rb +0 -13
- data/spec/models/namespacing.rb +0 -11
- data/spec/models/patient.rb +0 -4
- data/spec/models/person.rb +0 -99
- data/spec/models/pet.rb +0 -7
- data/spec/models/pet_owner.rb +0 -6
- data/spec/models/phone.rb +0 -7
- data/spec/models/post.rb +0 -15
- data/spec/models/translation.rb +0 -5
- data/spec/models/vet_visit.rb +0 -5
- data/spec/spec.opts +0 -3
- data/spec/spec_helper.rb +0 -31
- data/spec/unit/mongoid/associations/belongs_to_related_spec.rb +0 -145
- data/spec/unit/mongoid/associations/embed_many_spec.rb +0 -516
- data/spec/unit/mongoid/associations/embed_one_spec.rb +0 -282
- data/spec/unit/mongoid/associations/embedded_in_spec.rb +0 -193
- data/spec/unit/mongoid/associations/has_many_related_spec.rb +0 -418
- data/spec/unit/mongoid/associations/has_one_related_spec.rb +0 -179
- data/spec/unit/mongoid/associations/meta_data_spec.rb +0 -88
- data/spec/unit/mongoid/associations/options_spec.rb +0 -192
- data/spec/unit/mongoid/associations_spec.rb +0 -595
- data/spec/unit/mongoid/attributes_spec.rb +0 -507
- data/spec/unit/mongoid/callbacks_spec.rb +0 -55
- data/spec/unit/mongoid/collection_spec.rb +0 -187
- data/spec/unit/mongoid/collections/cyclic_iterator_spec.rb +0 -75
- data/spec/unit/mongoid/collections/master_spec.rb +0 -41
- data/spec/unit/mongoid/collections/mimic_spec.rb +0 -43
- data/spec/unit/mongoid/collections/slaves_spec.rb +0 -81
- data/spec/unit/mongoid/commands/create_spec.rb +0 -31
- data/spec/unit/mongoid/commands/delete_all_spec.rb +0 -58
- data/spec/unit/mongoid/commands/delete_spec.rb +0 -38
- data/spec/unit/mongoid/commands/destroy_all_spec.rb +0 -21
- data/spec/unit/mongoid/commands/destroy_spec.rb +0 -51
- data/spec/unit/mongoid/commands/save_spec.rb +0 -107
- data/spec/unit/mongoid/commands_spec.rb +0 -270
- data/spec/unit/mongoid/config_spec.rb +0 -172
- data/spec/unit/mongoid/contexts/enumerable_spec.rb +0 -421
- data/spec/unit/mongoid/contexts/mongo_spec.rb +0 -682
- data/spec/unit/mongoid/contexts_spec.rb +0 -25
- data/spec/unit/mongoid/criteria_spec.rb +0 -824
- data/spec/unit/mongoid/criterion/complex_spec.rb +0 -19
- data/spec/unit/mongoid/criterion/exclusion_spec.rb +0 -91
- data/spec/unit/mongoid/criterion/inclusion_spec.rb +0 -219
- data/spec/unit/mongoid/criterion/optional_spec.rb +0 -319
- data/spec/unit/mongoid/cursor_spec.rb +0 -74
- data/spec/unit/mongoid/deprecation_spec.rb +0 -24
- data/spec/unit/mongoid/document_spec.rb +0 -818
- data/spec/unit/mongoid/errors_spec.rb +0 -103
- data/spec/unit/mongoid/extensions/array/accessors_spec.rb +0 -50
- data/spec/unit/mongoid/extensions/array/assimilation_spec.rb +0 -24
- data/spec/unit/mongoid/extensions/array/conversions_spec.rb +0 -35
- data/spec/unit/mongoid/extensions/array/parentization_spec.rb +0 -20
- 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/extensions/boolean/conversions_spec.rb +0 -49
- data/spec/unit/mongoid/extensions/date/conversions_spec.rb +0 -102
- data/spec/unit/mongoid/extensions/datetime/conversions_spec.rb +0 -67
- data/spec/unit/mongoid/extensions/float/conversions_spec.rb +0 -61
- data/spec/unit/mongoid/extensions/hash/accessors_spec.rb +0 -184
- data/spec/unit/mongoid/extensions/hash/assimilation_spec.rb +0 -46
- data/spec/unit/mongoid/extensions/hash/conversions_spec.rb +0 -21
- data/spec/unit/mongoid/extensions/hash/criteria_helpers_spec.rb +0 -17
- data/spec/unit/mongoid/extensions/hash/scoping_spec.rb +0 -14
- data/spec/unit/mongoid/extensions/integer/conversions_spec.rb +0 -61
- data/spec/unit/mongoid/extensions/nil/assimilation_spec.rb +0 -24
- data/spec/unit/mongoid/extensions/object/conversions_spec.rb +0 -57
- data/spec/unit/mongoid/extensions/proc/scoping_spec.rb +0 -34
- data/spec/unit/mongoid/extensions/string/conversions_spec.rb +0 -17
- data/spec/unit/mongoid/extensions/string/inflections_spec.rb +0 -208
- data/spec/unit/mongoid/extensions/symbol/inflections_spec.rb +0 -91
- data/spec/unit/mongoid/extensions/time/conversions_spec.rb +0 -70
- data/spec/unit/mongoid/extras_spec.rb +0 -102
- data/spec/unit/mongoid/factory_spec.rb +0 -31
- data/spec/unit/mongoid/field_spec.rb +0 -143
- data/spec/unit/mongoid/fields_spec.rb +0 -181
- data/spec/unit/mongoid/finders_spec.rb +0 -404
- data/spec/unit/mongoid/identity_spec.rb +0 -109
- data/spec/unit/mongoid/indexes_spec.rb +0 -93
- data/spec/unit/mongoid/javascript_spec.rb +0 -48
- data/spec/unit/mongoid/matchers/all_spec.rb +0 -27
- data/spec/unit/mongoid/matchers/default_spec.rb +0 -27
- data/spec/unit/mongoid/matchers/exists_spec.rb +0 -56
- data/spec/unit/mongoid/matchers/gt_spec.rb +0 -39
- data/spec/unit/mongoid/matchers/gte_spec.rb +0 -49
- data/spec/unit/mongoid/matchers/in_spec.rb +0 -27
- data/spec/unit/mongoid/matchers/lt_spec.rb +0 -39
- data/spec/unit/mongoid/matchers/lte_spec.rb +0 -49
- data/spec/unit/mongoid/matchers/ne_spec.rb +0 -27
- data/spec/unit/mongoid/matchers/nin_spec.rb +0 -27
- data/spec/unit/mongoid/matchers/size_spec.rb +0 -27
- data/spec/unit/mongoid/matchers_spec.rb +0 -329
- data/spec/unit/mongoid/memoization_spec.rb +0 -75
- data/spec/unit/mongoid/named_scope_spec.rb +0 -123
- data/spec/unit/mongoid/observable_spec.rb +0 -46
- data/spec/unit/mongoid/paths_spec.rb +0 -124
- data/spec/unit/mongoid/scope_spec.rb +0 -240
- data/spec/unit/mongoid/state_spec.rb +0 -83
- data/spec/unit/mongoid/timestamps_spec.rb +0 -25
- data/spec/unit/mongoid/validations/associated_spec.rb +0 -103
- data/spec/unit/mongoid/validations/uniqueness_spec.rb +0 -47
- data/spec/unit/mongoid/validations_spec.rb +0 -190
- data/spec/unit/mongoid/versioning_spec.rb +0 -41
- data/spec/unit/mongoid_spec.rb +0 -46
@@ -1,31 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Mongoid::Commands::Create do
|
4
|
-
|
5
|
-
describe "#execute" do
|
6
|
-
|
7
|
-
before do
|
8
|
-
@document = stub(:run_callbacks)
|
9
|
-
end
|
10
|
-
|
11
|
-
it "executes a save command" do
|
12
|
-
@document.expects(:run_callbacks).yields
|
13
|
-
Mongoid::Commands::Save.expects(:execute).with(@document, true).returns(@document)
|
14
|
-
Mongoid::Commands::Create.execute(@document)
|
15
|
-
end
|
16
|
-
|
17
|
-
it "runs the before and after create callbacks" do
|
18
|
-
@document.expects(:run_callbacks).with(:create).yields
|
19
|
-
Mongoid::Commands::Save.expects(:execute).with(@document, true).returns(@document)
|
20
|
-
Mongoid::Commands::Create.execute(@document)
|
21
|
-
end
|
22
|
-
|
23
|
-
it "returns the document" do
|
24
|
-
@document.expects(:run_callbacks).yields
|
25
|
-
Mongoid::Commands::Save.expects(:execute).with(@document, true).returns(@document)
|
26
|
-
Mongoid::Commands::Create.execute(@document).should == @document
|
27
|
-
end
|
28
|
-
|
29
|
-
end
|
30
|
-
|
31
|
-
end
|
@@ -1,58 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Mongoid::Commands::DeleteAll do
|
4
|
-
|
5
|
-
describe "#execute" do
|
6
|
-
|
7
|
-
before do
|
8
|
-
@doc = mock
|
9
|
-
@docs = [@doc]
|
10
|
-
@klass = stub(:name => "Person")
|
11
|
-
end
|
12
|
-
|
13
|
-
context "when conditions supplied" do
|
14
|
-
|
15
|
-
before do
|
16
|
-
@collection = mock
|
17
|
-
@conditions = { :conditions => { :title => "Sir" } }
|
18
|
-
end
|
19
|
-
|
20
|
-
it "deletes each document that the criteria finds" do
|
21
|
-
@klass.expects(:collection).returns(@collection)
|
22
|
-
@collection.expects(:remove).with(@conditions[:conditions].merge(:_type => "Person"), :safe => true)
|
23
|
-
Mongoid::Commands::DeleteAll.execute(@klass, @conditions)
|
24
|
-
end
|
25
|
-
|
26
|
-
end
|
27
|
-
|
28
|
-
context "when no conditions supplied" do
|
29
|
-
|
30
|
-
before do
|
31
|
-
@collection = mock
|
32
|
-
end
|
33
|
-
|
34
|
-
it "drops the collection" do
|
35
|
-
@klass.expects(:collection).returns(@collection)
|
36
|
-
@collection.expects(:remove).with({ :_type => "Person" }, { :safe => true })
|
37
|
-
Mongoid::Commands::DeleteAll.execute(@klass)
|
38
|
-
end
|
39
|
-
|
40
|
-
end
|
41
|
-
|
42
|
-
context "when empty conditions supplied" do
|
43
|
-
|
44
|
-
before do
|
45
|
-
@collection = mock
|
46
|
-
end
|
47
|
-
|
48
|
-
it "drops the collection" do
|
49
|
-
@klass.expects(:collection).returns(@collection)
|
50
|
-
@collection.expects(:remove).with({ :_type => "Person" }, { :safe => true })
|
51
|
-
Mongoid::Commands::DeleteAll.execute(@klass, {})
|
52
|
-
end
|
53
|
-
|
54
|
-
end
|
55
|
-
|
56
|
-
end
|
57
|
-
|
58
|
-
end
|
@@ -1,38 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Mongoid::Commands::Delete do
|
4
|
-
|
5
|
-
describe "#execute" do
|
6
|
-
|
7
|
-
before do
|
8
|
-
@collection = mock
|
9
|
-
@document = stub(:collection => @collection, :id => "1", :_parent => false)
|
10
|
-
end
|
11
|
-
|
12
|
-
it "removes the document from its collection" do
|
13
|
-
@collection.expects(:remove).with({ :_id => @document.id })
|
14
|
-
Mongoid::Commands::Delete.execute(@document)
|
15
|
-
end
|
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
|
-
context "when the document is embedded" do
|
24
|
-
|
25
|
-
before do
|
26
|
-
@parent = Person.new
|
27
|
-
@address = Address.new(:street => "Genoa Pl")
|
28
|
-
@parent.addresses << @address
|
29
|
-
end
|
30
|
-
|
31
|
-
it "removes the document from the parent attributes" do
|
32
|
-
@parent.addresses.should == [@address]
|
33
|
-
Mongoid::Commands::Delete.execute(@address)
|
34
|
-
@parent.addresses.should be_empty
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Mongoid::Commands::DestroyAll do
|
4
|
-
|
5
|
-
describe "#execute" do
|
6
|
-
|
7
|
-
before do
|
8
|
-
@doc = mock
|
9
|
-
@docs = [@doc]
|
10
|
-
@klass = stub(:name => "Person")
|
11
|
-
@conditions = { :conditions => { :title => "Sir" } }
|
12
|
-
@expected = { :conditions => { :title => "Sir", :_type => "Person" } }
|
13
|
-
end
|
14
|
-
|
15
|
-
it "destroys each document that the criteria finds" do
|
16
|
-
@klass.expects(:find).with(:all, @expected).returns(@docs)
|
17
|
-
Mongoid::Commands::Destroy.expects(:execute).with(@doc)
|
18
|
-
Mongoid::Commands::DestroyAll.execute(@klass, @conditions)
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
@@ -1,51 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Mongoid::Commands::Destroy do
|
4
|
-
|
5
|
-
describe "#execute" do
|
6
|
-
|
7
|
-
before do
|
8
|
-
@collection = stub_everything
|
9
|
-
@document = stub(:run_callbacks => true,
|
10
|
-
:collection => @collection,
|
11
|
-
:id => "1",
|
12
|
-
:_parent => false)
|
13
|
-
end
|
14
|
-
|
15
|
-
it "runs the before and after destroy callbacks" do
|
16
|
-
@document.expects(:run_callbacks).with(:destroy)
|
17
|
-
Mongoid::Commands::Destroy.execute(@document)
|
18
|
-
end
|
19
|
-
|
20
|
-
it "removes the document from its collection" do
|
21
|
-
@document.expects(:run_callbacks).yields
|
22
|
-
@collection.expects(:remove).with({ :_id => @document.id })
|
23
|
-
Mongoid::Commands::Destroy.execute(@document)
|
24
|
-
end
|
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
|
-
context "when the document is embedded" do
|
34
|
-
|
35
|
-
before do
|
36
|
-
@parent = Person.new
|
37
|
-
@address = Address.new(:street => "Genoa Pl")
|
38
|
-
@parent.addresses << @address
|
39
|
-
@collection = mock
|
40
|
-
Person.expects(:collection).returns(@collection)
|
41
|
-
end
|
42
|
-
|
43
|
-
it "removes the document from the parent attributes" do
|
44
|
-
@parent.addresses.should == [@address]
|
45
|
-
@collection.expects(:save).returns(true)
|
46
|
-
Mongoid::Commands::Destroy.execute(@address)
|
47
|
-
@parent.addresses.should be_empty
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
@@ -1,107 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Mongoid::Commands::Save do
|
4
|
-
|
5
|
-
describe "#execute" do
|
6
|
-
|
7
|
-
before do
|
8
|
-
@parent_collection = stub(:save => true)
|
9
|
-
@doc_collection = stub(:save => true)
|
10
|
-
@parent = stub(:collection => @parent_collection,
|
11
|
-
:valid? => true,
|
12
|
-
:run_callbacks => true,
|
13
|
-
:_parent => nil,
|
14
|
-
:raw_attributes => {},
|
15
|
-
:new_record= => false)
|
16
|
-
@document = stub(:collection => @doc_collection,
|
17
|
-
:run_callbacks => true,
|
18
|
-
:_parent => @parent,
|
19
|
-
:raw_attributes => {},
|
20
|
-
:new_record= => false)
|
21
|
-
end
|
22
|
-
|
23
|
-
context "when document is valid" do
|
24
|
-
|
25
|
-
before do
|
26
|
-
@document.expects(:valid?).returns(true)
|
27
|
-
end
|
28
|
-
|
29
|
-
it "runs the before and after callbacks" do
|
30
|
-
@document.expects(:run_callbacks).with(:save)
|
31
|
-
Mongoid::Commands::Save.execute(@document)
|
32
|
-
end
|
33
|
-
|
34
|
-
it "returns true" do
|
35
|
-
Mongoid::Commands::Save.execute(@document).should be_true
|
36
|
-
end
|
37
|
-
|
38
|
-
context "when the document has a parent" do
|
39
|
-
|
40
|
-
it "executes a save on the parent" do
|
41
|
-
@document.expects(:run_callbacks).yields
|
42
|
-
@parent.expects(:run_callbacks).yields
|
43
|
-
@parent_collection.expects(:save).with(@parent.raw_attributes, :safe => true)
|
44
|
-
Mongoid::Commands::Save.execute(@document)
|
45
|
-
end
|
46
|
-
|
47
|
-
end
|
48
|
-
|
49
|
-
context "when the document has no parent" do
|
50
|
-
|
51
|
-
before do
|
52
|
-
@document.expects(:_parent).returns(nil)
|
53
|
-
end
|
54
|
-
|
55
|
-
it "calls save on the document collection" do
|
56
|
-
@document.expects(:run_callbacks).yields
|
57
|
-
@doc_collection.expects(:save).with(@document.raw_attributes, :safe => true)
|
58
|
-
Mongoid::Commands::Save.execute(@document)
|
59
|
-
end
|
60
|
-
|
61
|
-
end
|
62
|
-
|
63
|
-
end
|
64
|
-
|
65
|
-
context "when document is invalid" do
|
66
|
-
|
67
|
-
before do
|
68
|
-
@document.expects(:valid?).returns(false)
|
69
|
-
end
|
70
|
-
|
71
|
-
it "returns false" do
|
72
|
-
Mongoid::Commands::Save.execute(@document).should be_false
|
73
|
-
end
|
74
|
-
|
75
|
-
end
|
76
|
-
|
77
|
-
context "when saving without validation" do
|
78
|
-
|
79
|
-
before do
|
80
|
-
@document.stubs(:valid?).returns(false)
|
81
|
-
end
|
82
|
-
|
83
|
-
it "ignores validation and returns true" do
|
84
|
-
Mongoid::Commands::Save.execute(@document, false).should be_true
|
85
|
-
end
|
86
|
-
|
87
|
-
end
|
88
|
-
|
89
|
-
end
|
90
|
-
|
91
|
-
context "when the document is embedded" do
|
92
|
-
|
93
|
-
before do
|
94
|
-
@child_name = Name.new(:first_name => "Testy")
|
95
|
-
end
|
96
|
-
|
97
|
-
context "when parent reference does not exist" do
|
98
|
-
|
99
|
-
it "raises an error" do
|
100
|
-
lambda { @child_name.save }.should raise_error
|
101
|
-
end
|
102
|
-
|
103
|
-
end
|
104
|
-
|
105
|
-
end
|
106
|
-
|
107
|
-
end
|
@@ -1,270 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Mongoid::Commands do
|
4
|
-
|
5
|
-
before do
|
6
|
-
@person = Person.new(:_id => Mongo::ObjectID.new.to_s)
|
7
|
-
end
|
8
|
-
|
9
|
-
describe "#delete" do
|
10
|
-
|
11
|
-
it "delegates to the Delete command" do
|
12
|
-
Mongoid::Commands::Delete.expects(:execute).with(@person)
|
13
|
-
@person.delete
|
14
|
-
end
|
15
|
-
|
16
|
-
end
|
17
|
-
|
18
|
-
describe "#destroy" do
|
19
|
-
|
20
|
-
it "delegates to the Destroy command" do
|
21
|
-
Mongoid::Commands::Destroy.expects(:execute).with(@person)
|
22
|
-
@person.destroy
|
23
|
-
end
|
24
|
-
|
25
|
-
end
|
26
|
-
|
27
|
-
describe "#save" do
|
28
|
-
|
29
|
-
it "delegates to the Save command" do
|
30
|
-
Mongoid::Commands::Save.expects(:execute).with(@person, true).returns(true)
|
31
|
-
@person.save
|
32
|
-
end
|
33
|
-
|
34
|
-
context "when document is new" do
|
35
|
-
|
36
|
-
before do
|
37
|
-
@person = Person.new
|
38
|
-
end
|
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
|
-
it "delegates to the save command" do
|
57
|
-
Mongoid::Commands::Save.expects(:execute).with(@person, true).returns(true)
|
58
|
-
@person.save
|
59
|
-
end
|
60
|
-
|
61
|
-
it "runs the before and after create callbacks" do
|
62
|
-
@person.expects(:run_callbacks).with(:create).yields
|
63
|
-
Mongoid::Commands::Save.expects(:execute).with(@person, true).returns(true)
|
64
|
-
@person.save
|
65
|
-
end
|
66
|
-
|
67
|
-
end
|
68
|
-
|
69
|
-
context "when not validating" do
|
70
|
-
|
71
|
-
before do
|
72
|
-
@person = Person.new
|
73
|
-
end
|
74
|
-
|
75
|
-
it "passes the validate param to the command" do
|
76
|
-
Mongoid::Commands::Save.expects(:execute).with(@person, false).returns(true)
|
77
|
-
@person.save(false)
|
78
|
-
end
|
79
|
-
|
80
|
-
end
|
81
|
-
|
82
|
-
context "when the database raises an error" do
|
83
|
-
|
84
|
-
before do
|
85
|
-
@person = Person.new
|
86
|
-
end
|
87
|
-
|
88
|
-
it "lets the error bubble up" do
|
89
|
-
Mongoid::Commands::Save.expects(:execute).raises(Mongo::OperationFailure.new("Operation Failed"))
|
90
|
-
lambda { @person.save }.should raise_error
|
91
|
-
end
|
92
|
-
|
93
|
-
end
|
94
|
-
|
95
|
-
end
|
96
|
-
|
97
|
-
describe "#save!" do
|
98
|
-
|
99
|
-
context "when validation passes" do
|
100
|
-
|
101
|
-
it "it returns the person" do
|
102
|
-
Mongoid::Commands::Save.expects(:execute).with(@person, true).returns(true)
|
103
|
-
@person.save!
|
104
|
-
end
|
105
|
-
|
106
|
-
end
|
107
|
-
|
108
|
-
context "when validation fails" do
|
109
|
-
|
110
|
-
it "it raises an error" do
|
111
|
-
Mongoid::Commands::Save.expects(:execute).with(@person, true).returns(false)
|
112
|
-
lambda { @person.save! }.should raise_error
|
113
|
-
end
|
114
|
-
|
115
|
-
end
|
116
|
-
|
117
|
-
context "when document is new" do
|
118
|
-
|
119
|
-
before do
|
120
|
-
@person = Person.new
|
121
|
-
end
|
122
|
-
|
123
|
-
it "delegates to the save command" do
|
124
|
-
Mongoid::Commands::Save.expects(:execute).with(@person, true).returns(true)
|
125
|
-
@person.save!
|
126
|
-
end
|
127
|
-
|
128
|
-
context "when validation fails" do
|
129
|
-
|
130
|
-
it "it raises an error " do
|
131
|
-
Mongoid::Commands::Save.expects(:execute).with(@person, true).returns(false)
|
132
|
-
lambda { @person.save! }.should raise_error
|
133
|
-
end
|
134
|
-
|
135
|
-
end
|
136
|
-
|
137
|
-
it "runs the before and after create callbacks" do
|
138
|
-
@person.expects(:run_callbacks).with(:create).yields.returns(true)
|
139
|
-
Mongoid::Commands::Save.expects(:execute).with(@person, true).returns(true)
|
140
|
-
@person.save!
|
141
|
-
end
|
142
|
-
|
143
|
-
end
|
144
|
-
|
145
|
-
end
|
146
|
-
|
147
|
-
describe "#update_attributes" do
|
148
|
-
|
149
|
-
it "delegates to the Save command" do
|
150
|
-
Mongoid::Commands::Save.expects(:execute).with(@person, true).returns(true)
|
151
|
-
@person.update_attributes({})
|
152
|
-
end
|
153
|
-
|
154
|
-
it "executes the before and after update callbacks" do
|
155
|
-
@person.expects(:run_callbacks).with(:update).yields.returns(true)
|
156
|
-
Mongoid::Commands::Save.expects(:execute).with(@person, true).returns(true)
|
157
|
-
@person.update_attributes({})
|
158
|
-
end
|
159
|
-
|
160
|
-
end
|
161
|
-
|
162
|
-
describe "#update_attributes!" do
|
163
|
-
|
164
|
-
context "when validation passes" do
|
165
|
-
|
166
|
-
it "it returns the person" do
|
167
|
-
Mongoid::Commands::Save.expects(:execute).with(@person, true).returns(true)
|
168
|
-
@person.update_attributes({}).should be_true
|
169
|
-
end
|
170
|
-
|
171
|
-
end
|
172
|
-
|
173
|
-
context "when validation fails" do
|
174
|
-
|
175
|
-
it "it raises an error" do
|
176
|
-
Mongoid::Commands::Save.expects(:execute).with(@person, true).returns(false)
|
177
|
-
lambda { @person.update_attributes!({}) }.should raise_error
|
178
|
-
end
|
179
|
-
|
180
|
-
end
|
181
|
-
|
182
|
-
end
|
183
|
-
|
184
|
-
describe ".create" do
|
185
|
-
|
186
|
-
it "delegates to the Create command" do
|
187
|
-
Mongoid::Commands::Create.expects(:execute)
|
188
|
-
Person.create
|
189
|
-
end
|
190
|
-
|
191
|
-
it "returns the document" do
|
192
|
-
Mongoid::Commands::Create.expects(:execute).returns(Person.new)
|
193
|
-
Person.create.should_not be_nil
|
194
|
-
end
|
195
|
-
|
196
|
-
context "when the database raises an error" do
|
197
|
-
|
198
|
-
before do
|
199
|
-
@person = Person.new
|
200
|
-
Mongoid::Commands::Save.expects(:execute).raises(Mongo::OperationFailure.new("Operation Failed"))
|
201
|
-
end
|
202
|
-
|
203
|
-
it "lets the error bubble up" do
|
204
|
-
lambda { Person.create }.should raise_error
|
205
|
-
end
|
206
|
-
|
207
|
-
end
|
208
|
-
|
209
|
-
end
|
210
|
-
|
211
|
-
describe ".create!" do
|
212
|
-
|
213
|
-
it "delegates to the Create command" do
|
214
|
-
Mongoid::Commands::Create.expects(:execute).returns(Person.new)
|
215
|
-
Person.create!
|
216
|
-
end
|
217
|
-
|
218
|
-
it "returns the document" do
|
219
|
-
Mongoid::Commands::Create.expects(:execute).returns(Person.new)
|
220
|
-
Person.create!.should_not be_nil
|
221
|
-
end
|
222
|
-
|
223
|
-
context "when validation fails" do
|
224
|
-
|
225
|
-
it "raises an error" do
|
226
|
-
person = stub(:errors => stub(:empty? => false))
|
227
|
-
Mongoid::Commands::Create.expects(:execute).returns(person)
|
228
|
-
lambda { Person.create! }.should raise_error(Mongoid::Errors::Validations)
|
229
|
-
end
|
230
|
-
|
231
|
-
end
|
232
|
-
|
233
|
-
end
|
234
|
-
|
235
|
-
describe ".delete_all" do
|
236
|
-
|
237
|
-
it "delegates to the DeleteAll command" do
|
238
|
-
Mongoid::Commands::DeleteAll.expects(:execute).with(Person, {})
|
239
|
-
Person.delete_all
|
240
|
-
end
|
241
|
-
|
242
|
-
end
|
243
|
-
|
244
|
-
describe ".destroy_all" do
|
245
|
-
|
246
|
-
it "delegates to the DestroyAll command" do
|
247
|
-
Mongoid::Commands::DestroyAll.expects(:execute).with(Person, {})
|
248
|
-
Person.destroy_all
|
249
|
-
end
|
250
|
-
|
251
|
-
end
|
252
|
-
|
253
|
-
describe "#valid?" do
|
254
|
-
|
255
|
-
before do
|
256
|
-
@comment = Comment.new
|
257
|
-
end
|
258
|
-
|
259
|
-
it "validates the document" do
|
260
|
-
@comment.valid?.should be_false
|
261
|
-
end
|
262
|
-
|
263
|
-
it "runs the validation callbacks" do
|
264
|
-
@comment.expects(:_run_validate_callbacks)
|
265
|
-
@comment.valid?
|
266
|
-
end
|
267
|
-
|
268
|
-
end
|
269
|
-
|
270
|
-
end
|