mongoid 0.9.8 → 0.9.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (34) hide show
  1. data/README.textile +5 -4
  2. data/VERSION +1 -1
  3. data/lib/mongoid.rb +3 -28
  4. data/lib/mongoid/associations.rb +63 -44
  5. data/lib/mongoid/associations/{relates_to_one.rb → belongs_to_related.rb} +4 -4
  6. data/lib/mongoid/associations/has_many.rb +26 -12
  7. data/lib/mongoid/associations/has_many_related.rb +100 -0
  8. data/lib/mongoid/associations/has_one.rb +13 -2
  9. data/lib/mongoid/associations/{relates_to_many.rb → has_one_related.rb} +34 -9
  10. data/lib/mongoid/attributes.rb +108 -8
  11. data/lib/mongoid/commands.rb +3 -11
  12. data/lib/mongoid/commands/save.rb +2 -6
  13. data/lib/mongoid/document.rb +6 -70
  14. data/lib/mongoid/errors.rb +34 -0
  15. data/mongoid.gemspec +14 -11
  16. data/spec/integration/mongoid/associations_spec.rb +19 -14
  17. data/spec/spec_helper.rb +6 -3
  18. data/spec/unit/mongoid/associations/belongs_to_related_spec.rb +112 -0
  19. data/spec/unit/mongoid/associations/has_many_related_spec.rb +292 -0
  20. data/spec/unit/mongoid/associations/has_many_spec.rb +17 -0
  21. data/spec/unit/mongoid/associations/has_one_related_spec.rb +130 -0
  22. data/spec/unit/mongoid/associations/has_one_spec.rb +53 -0
  23. data/spec/unit/mongoid/associations_spec.rb +36 -8
  24. data/spec/unit/mongoid/attributes_spec.rb +218 -0
  25. data/spec/unit/mongoid/commands/save_spec.rb +4 -2
  26. data/spec/unit/mongoid/commands_spec.rb +4 -17
  27. data/spec/unit/mongoid/criteria_spec.rb +0 -5
  28. data/spec/unit/mongoid/document_spec.rb +26 -156
  29. data/spec/unit/mongoid/errors_spec.rb +87 -0
  30. metadata +14 -11
  31. data/lib/mongoid/commands/quick_save.rb +0 -19
  32. data/spec/unit/mongoid/associations/relates_to_many_spec.rb +0 -76
  33. data/spec/unit/mongoid/associations/relates_to_one_spec.rb +0 -112
  34. data/spec/unit/mongoid/commands/quick_save_spec.rb +0 -24
@@ -1,19 +0,0 @@
1
- # encoding: utf-8
2
- module Mongoid #:nodoc:
3
- module Commands
4
- class QuickSave
5
- # Performs a save of the supplied +Document+ without any validations or
6
- # callbacks. This is a dangerous command only intended for internal use
7
- # with saving relational associations.
8
- #
9
- # Options:
10
- #
11
- # doc: A +Document+ that is going to be persisted.
12
- #
13
- # Returns: true
14
- def self.execute(doc)
15
- doc.collection.save(doc.attributes)
16
- end
17
- end
18
- end
19
- end
@@ -1,76 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Mongoid::Associations::RelatesToMany do
4
-
5
- describe ".initialize" do
6
-
7
- context "when related id has been set" do
8
-
9
- before do
10
- @document = Person.new
11
- @options = Mongoid::Associations::Options.new(:name => :posts)
12
- @criteria = stub
13
- @first = stub(:person_id => @document.id)
14
- @second = stub(:person_id => @document.id)
15
- @related = [@first, @second]
16
- end
17
-
18
- it "finds the object by id" do
19
- Post.expects(:all).with(:conditions => { "person_id" => @document.id }).returns(@related)
20
- association = Mongoid::Associations::RelatesToMany.new(@document, @options)
21
- association.should == @related
22
- end
23
-
24
- end
25
-
26
- end
27
-
28
- describe ".instantiate" do
29
-
30
- context "when related id has been set" do
31
-
32
- before do
33
- @document = Person.new
34
- @options = Mongoid::Associations::Options.new(:name => :posts)
35
- end
36
-
37
- it "delegates to new" do
38
- Mongoid::Associations::RelatesToMany.expects(:new).with(@document, @options)
39
- association = Mongoid::Associations::RelatesToMany.instantiate(@document, @options)
40
- end
41
-
42
- end
43
-
44
- end
45
-
46
- describe ".macro" do
47
-
48
- it "returns :relates_to_many" do
49
- Mongoid::Associations::RelatesToMany.macro.should == :relates_to_many
50
- end
51
-
52
- end
53
-
54
- describe ".update" do
55
-
56
- before do
57
- @first = Post.new
58
- @second = Post.new
59
- @related = [@first, @second]
60
- @parent = Person.new
61
- @options = Mongoid::Associations::Options.new(:name => :posts)
62
- end
63
-
64
- it "sets the related object id on the parent" do
65
- Mongoid::Associations::RelatesToMany.update(@related, @parent, @options)
66
- @first.person_id.should == @parent.id
67
- @second.person_id.should == @parent.id
68
- end
69
-
70
- it "returns the related objects" do
71
- Mongoid::Associations::RelatesToMany.update(@related, @parent, @options).should == @related
72
- end
73
-
74
- end
75
-
76
- end
@@ -1,112 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Mongoid::Associations::RelatesToOne do
4
-
5
- describe ".initialize" do
6
-
7
- context "when related id has been set" do
8
-
9
- before do
10
- @document = stub(:game_id => "5")
11
- @options = Mongoid::Associations::Options.new(:name => :game)
12
- @related = stub
13
- end
14
-
15
- it "finds the object by id" do
16
- Game.expects(:find).with(@document.game_id).returns(@related)
17
- association = Mongoid::Associations::RelatesToOne.new(@document, "5", @options)
18
- association.should == @related
19
- end
20
-
21
- end
22
-
23
- end
24
-
25
- describe ".instantiate" do
26
-
27
- context "when foreign key is not nil" do
28
-
29
- before do
30
- @document = stub(:game_id => "5")
31
- @options = Mongoid::Associations::Options.new(:name => :game)
32
- end
33
-
34
- it "delegates to new" do
35
- Mongoid::Associations::RelatesToOne.expects(:new).with(@document, "5", @options)
36
- Mongoid::Associations::RelatesToOne.instantiate(@document, @options)
37
- end
38
-
39
- end
40
-
41
- context "when foreign key is nil" do
42
-
43
- before do
44
- @document = stub(:game_id => nil)
45
- @options = Mongoid::Associations::Options.new(:name => :game)
46
- end
47
-
48
- it "returns nil" do
49
- Mongoid::Associations::RelatesToOne.instantiate(@document, @options).should be_nil
50
- end
51
-
52
- end
53
-
54
- end
55
-
56
- describe "#method_missing" do
57
-
58
- before do
59
- @game = Game.new(:score => 5000)
60
- @document = stub(:game_id => "5")
61
- @options = Mongoid::Associations::Options.new(:name => :game)
62
- Game.expects(:find).with(@document.game_id).returns(@game)
63
- @association = Mongoid::Associations::RelatesToOne.new(@document, "5", @options)
64
- end
65
-
66
- context "when getting values" do
67
-
68
- it "delegates to the document" do
69
- @association.score.should == 5000
70
- end
71
-
72
- end
73
-
74
- context "when setting values" do
75
-
76
- it "delegates to the document" do
77
- @association.score = 400
78
- @association.score.should == 400
79
- end
80
-
81
- end
82
-
83
- end
84
-
85
- describe ".macro" do
86
-
87
- it "returns :relates_to_one" do
88
- Mongoid::Associations::RelatesToOne.macro.should == :relates_to_one
89
- end
90
-
91
- end
92
-
93
- describe ".update" do
94
-
95
- before do
96
- @related = stub(:id => "5")
97
- @parent = Person.new
98
- @options = Mongoid::Associations::Options.new(:name => :game)
99
- end
100
-
101
- it "sets the related object id on the parent" do
102
- Mongoid::Associations::RelatesToOne.update(@related, @parent, @options)
103
- @parent.game_id.should == "5"
104
- end
105
-
106
- it "returns the related object" do
107
- Mongoid::Associations::RelatesToOne.update(@related, @parent, @options).should == @related
108
- end
109
-
110
- end
111
-
112
- end
@@ -1,24 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Mongoid::Commands::QuickSave do
4
-
5
- describe "#execute" do
6
-
7
- before do
8
- @collection = mock
9
- @document = stub(:collection => @collection, :attributes => {})
10
- end
11
-
12
- it "saves the document" do
13
- @collection.expects(:save).with(@document.attributes)
14
- Mongoid::Commands::QuickSave.execute(@document)
15
- end
16
-
17
- it "returns true" do
18
- @collection.expects(:save).with(@document.attributes)
19
- Mongoid::Commands::QuickSave.execute(@document)
20
- end
21
-
22
- end
23
-
24
- end