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.
Files changed (135) hide show
  1. data/.watchr +15 -10
  2. data/HISTORY +342 -0
  3. data/README.rdoc +8 -1
  4. data/Rakefile +2 -3
  5. data/VERSION +1 -1
  6. data/lib/mongoid/associations/{embedded_in.rb → belongs_to.rb} +4 -4
  7. data/lib/mongoid/associations/belongs_to_related.rb +9 -6
  8. data/lib/mongoid/associations/{embeds_many.rb → has_many.rb} +20 -33
  9. data/lib/mongoid/associations/has_many_related.rb +4 -28
  10. data/lib/mongoid/associations/{embeds_one.rb → has_one.rb} +6 -6
  11. data/lib/mongoid/associations/options.rb +6 -1
  12. data/lib/mongoid/associations.rb +32 -41
  13. data/lib/mongoid/attributes.rb +6 -13
  14. data/lib/mongoid/collection.rb +1 -2
  15. data/lib/mongoid/commands/delete.rb +1 -1
  16. data/lib/mongoid/commands/delete_all.rb +1 -4
  17. data/lib/mongoid/commands/destroy.rb +1 -1
  18. data/lib/mongoid/commands/destroy_all.rb +1 -3
  19. data/lib/mongoid/commands/save.rb +0 -1
  20. data/lib/mongoid/commands.rb +13 -2
  21. data/lib/mongoid/components.rb +1 -6
  22. data/lib/mongoid/config.rb +1 -5
  23. data/lib/mongoid/contexts/enumerable.rb +17 -54
  24. data/lib/mongoid/contexts/mongo.rb +38 -101
  25. data/lib/mongoid/contexts/paging.rb +2 -2
  26. data/lib/mongoid/contexts.rb +0 -21
  27. data/lib/mongoid/criteria.rb +73 -15
  28. data/lib/mongoid/criterion/inclusion.rb +0 -2
  29. data/lib/mongoid/criterion/optional.rb +2 -10
  30. data/lib/mongoid/document.rb +30 -41
  31. data/lib/mongoid/extensions.rb +0 -15
  32. data/lib/mongoid/field.rb +7 -20
  33. data/lib/mongoid/fields.rb +10 -15
  34. data/lib/mongoid/finders.rb +98 -10
  35. data/lib/mongoid/identity.rb +2 -8
  36. data/lib/mongoid/named_scope.rb +0 -2
  37. data/lib/mongoid/validations/associated.rb +8 -3
  38. data/lib/mongoid/validations/uniqueness.rb +7 -2
  39. data/lib/mongoid/validations.rb +2 -2
  40. data/lib/mongoid/versioning.rb +1 -1
  41. data/lib/mongoid.rb +5 -21
  42. data/mongoid.gemspec +19 -59
  43. data/spec/integration/mongoid/associations_spec.rb +3 -42
  44. data/spec/integration/mongoid/attributes_spec.rb +2 -2
  45. data/spec/integration/mongoid/commands_spec.rb +13 -27
  46. data/spec/integration/mongoid/contexts/enumerable_spec.rb +0 -13
  47. data/spec/integration/mongoid/criteria_spec.rb +3 -50
  48. data/spec/integration/mongoid/document_spec.rb +5 -72
  49. data/spec/integration/mongoid/finders_spec.rb +28 -85
  50. data/spec/models/address.rb +3 -3
  51. data/spec/models/animal.rb +2 -2
  52. data/spec/models/country_code.rb +2 -2
  53. data/spec/models/game.rb +1 -2
  54. data/spec/models/inheritance.rb +5 -5
  55. data/spec/models/location.rb +2 -2
  56. data/spec/models/name.rb +3 -3
  57. data/spec/models/namespacing.rb +2 -2
  58. data/spec/models/patient.rb +0 -2
  59. data/spec/models/person.rb +4 -6
  60. data/spec/models/pet.rb +3 -3
  61. data/spec/models/pet_owner.rb +3 -3
  62. data/spec/models/phone.rb +3 -3
  63. data/spec/models/post.rb +1 -1
  64. data/spec/models/translation.rb +2 -2
  65. data/spec/models/vet_visit.rb +2 -2
  66. data/spec/spec_helper.rb +2 -2
  67. data/spec/unit/mongoid/associations/belongs_to_related_spec.rb +0 -4
  68. data/spec/unit/mongoid/associations/{embedded_in_spec.rb → belongs_to_spec.rb} +11 -11
  69. data/spec/unit/mongoid/associations/has_many_related_spec.rb +14 -45
  70. data/spec/unit/mongoid/associations/{embeds_many_spec.rb → has_many_spec.rb} +34 -79
  71. data/spec/unit/mongoid/associations/{embeds_one_spec.rb → has_one_spec.rb} +18 -18
  72. data/spec/unit/mongoid/associations/options_spec.rb +19 -20
  73. data/spec/unit/mongoid/associations_spec.rb +12 -74
  74. data/spec/unit/mongoid/attributes_spec.rb +51 -83
  75. data/spec/unit/mongoid/collection_spec.rb +0 -46
  76. data/spec/unit/mongoid/commands/delete_all_spec.rb +8 -9
  77. data/spec/unit/mongoid/commands/delete_spec.rb +3 -6
  78. data/spec/unit/mongoid/commands/destroy_all_spec.rb +2 -0
  79. data/spec/unit/mongoid/commands/destroy_spec.rb +3 -10
  80. data/spec/unit/mongoid/commands_spec.rb +11 -20
  81. data/spec/unit/mongoid/config_spec.rb +0 -18
  82. data/spec/unit/mongoid/contexts/enumerable_spec.rb +11 -198
  83. data/spec/unit/mongoid/contexts/mongo_spec.rb +54 -357
  84. data/spec/unit/mongoid/criteria_spec.rb +78 -107
  85. data/spec/unit/mongoid/criterion/exclusion_spec.rb +13 -3
  86. data/spec/unit/mongoid/criterion/inclusion_spec.rb +19 -25
  87. data/spec/unit/mongoid/criterion/optional_spec.rb +18 -25
  88. data/spec/unit/mongoid/document_spec.rb +34 -71
  89. data/spec/unit/mongoid/extensions/array/conversions_spec.rb +2 -2
  90. data/spec/unit/mongoid/extensions/datetime/conversions_spec.rb +3 -0
  91. data/spec/unit/mongoid/extensions/object/conversions_spec.rb +2 -16
  92. data/spec/unit/mongoid/extensions/proc/scoping_spec.rb +1 -1
  93. data/spec/unit/mongoid/field_spec.rb +0 -62
  94. data/spec/unit/mongoid/fields_spec.rb +0 -33
  95. data/spec/unit/mongoid/finders_spec.rb +1 -37
  96. data/spec/unit/mongoid/identity_spec.rb +6 -47
  97. data/spec/unit/mongoid/named_scope_spec.rb +2 -15
  98. data/spec/unit/mongoid/scope_spec.rb +1 -1
  99. data/spec/unit/mongoid/validations/uniqueness_spec.rb +3 -3
  100. data/spec/unit/mongoid_spec.rb +2 -11
  101. metadata +14 -64
  102. data/lib/mongoid/associations/meta_data.rb +0 -28
  103. data/lib/mongoid/contexts/ids.rb +0 -25
  104. data/lib/mongoid/deprecation.rb +0 -22
  105. data/lib/mongoid/dirty.rb +0 -203
  106. data/lib/mongoid/extensions/big_decimal/conversions.rb +0 -19
  107. data/lib/mongoid/extensions/binary/conversions.rb +0 -17
  108. data/lib/mongoid/extensions/objectid/conversions.rb +0 -15
  109. data/lib/mongoid/extras.rb +0 -61
  110. data/lib/mongoid/javascript/functions.yml +0 -37
  111. data/lib/mongoid/javascript.rb +0 -21
  112. data/lib/mongoid/observable.rb +0 -30
  113. data/lib/mongoid/paths.rb +0 -54
  114. data/lib/mongoid/persistence/command.rb +0 -20
  115. data/lib/mongoid/persistence/insert.rb +0 -71
  116. data/lib/mongoid/persistence/update.rb +0 -78
  117. data/lib/mongoid/persistence.rb +0 -27
  118. data/lib/mongoid/state.rb +0 -32
  119. data/spec/integration/mongoid/dirty_spec.rb +0 -70
  120. data/spec/integration/mongoid/persistence/update_spec.rb +0 -46
  121. data/spec/models/callbacks.rb +0 -18
  122. data/spec/unit/mongoid/associations/meta_data_spec.rb +0 -88
  123. data/spec/unit/mongoid/contexts_spec.rb +0 -25
  124. data/spec/unit/mongoid/deprecation_spec.rb +0 -24
  125. data/spec/unit/mongoid/dirty_spec.rb +0 -286
  126. data/spec/unit/mongoid/extensions/big_decimal/conversions_spec.rb +0 -22
  127. data/spec/unit/mongoid/extensions/binary/conversions_spec.rb +0 -22
  128. data/spec/unit/mongoid/extras_spec.rb +0 -102
  129. data/spec/unit/mongoid/javascript_spec.rb +0 -48
  130. data/spec/unit/mongoid/observable_spec.rb +0 -46
  131. data/spec/unit/mongoid/paths_spec.rb +0 -124
  132. data/spec/unit/mongoid/persistence/insert_spec.rb +0 -175
  133. data/spec/unit/mongoid/persistence/update_spec.rb +0 -148
  134. data/spec/unit/mongoid/persistence_spec.rb +0 -40
  135. data/spec/unit/mongoid/state_spec.rb +0 -83
@@ -1,175 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Mongoid::Persistence::Insert do
4
-
5
- let(:document) do
6
- Patient.new(:title => "Mr")
7
- end
8
-
9
- let(:address) do
10
- Address.new(:street => "Oxford St")
11
- end
12
-
13
- let(:collection) do
14
- stub.quacks_like(Mongoid::Collection.allocate)
15
- end
16
-
17
- before do
18
- document.stubs(:collection).returns(collection)
19
- end
20
-
21
- describe "#initialize" do
22
-
23
- let(:insert) do
24
- Mongoid::Persistence::Insert.new(document)
25
- end
26
-
27
- it "sets the document" do
28
- insert.document.should == document
29
- end
30
-
31
- it "sets the collection" do
32
- insert.collection.should == document.collection
33
- end
34
-
35
- it "defaults validation to true" do
36
- insert.validate.should == true
37
- end
38
-
39
- it "sets the options" do
40
- insert.options.should ==
41
- { :safe => Mongoid.persist_in_safe_mode }
42
- end
43
- end
44
-
45
- describe "#persist" do
46
-
47
- def root_set_expectation
48
- lambda {
49
- collection.expects(:insert).with(
50
- document.raw_attributes,
51
- :safe => true
52
- ).returns("Object")
53
- }
54
- end
55
-
56
- def root_push_expectation
57
- lambda {
58
- collection.expects(:update).with(
59
- { "_id" => document.id },
60
- { "addresses" => { "$push" => address.raw_attributes } },
61
- :safe => true
62
- ).returns("Object")
63
- }
64
- end
65
-
66
- let(:insert) do
67
- Mongoid::Persistence::Insert.new(document)
68
- end
69
-
70
- context "when the document is valid" do
71
-
72
- it "inserts the new document" do
73
- root_set_expectation.call
74
- insert.persist
75
- end
76
-
77
- it "returns the document" do
78
- root_set_expectation.call
79
- insert.persist.should == document
80
- end
81
-
82
- it "sets new_record to false" do
83
- root_set_expectation.call
84
- insert.persist
85
- document.new_record?.should == false
86
- end
87
- end
88
-
89
- context "when the document is not valid" do
90
-
91
- before do
92
- document.stubs(:valid?).returns(false)
93
- end
94
-
95
- it "returns the document" do
96
- insert.persist.should == document
97
- end
98
-
99
- it "leaves the document as a new record" do
100
- insert.persist
101
- document.new_record?.should == true
102
- end
103
- end
104
-
105
- context "when not validating" do
106
-
107
- before do
108
- insert.instance_variable_set(:@validate, false)
109
- document.stubs(:valid?).returns(false)
110
- end
111
-
112
- after do
113
- insert.instance_variable_set(:@validate, true)
114
- end
115
-
116
- it "inserts the document in the database" do
117
- root_set_expectation.call
118
- insert.persist
119
- document.new_record?.should == false
120
- end
121
- end
122
-
123
- context "when the document is embedded" do
124
-
125
- context "when the embedded document is an embeds_one" do
126
-
127
- context "when the parent is new" do
128
-
129
- it "notifies its changes to parent and inserts the parent"
130
-
131
- end
132
-
133
- context "when the parent is not new" do
134
-
135
- it "performs an in place $set on the embedded document"
136
- end
137
- end
138
-
139
- context "when the embedded document is an embeds_many" do
140
-
141
- before do
142
- document.addresses << address
143
- end
144
-
145
- context "when the parent is new" do
146
-
147
- let(:insert) do
148
- Mongoid::Persistence::Insert.new(address)
149
- end
150
-
151
- it "notifies its changes to the parent and inserts the parent" do
152
- root_set_expectation.call
153
- insert.persist.should == address
154
- end
155
- end
156
-
157
- context "when the parent is not new" do
158
-
159
- let(:insert) do
160
- Mongoid::Persistence::Insert.new(address)
161
- end
162
-
163
- before do
164
- document.instance_variable_set(:@new_record, false)
165
- end
166
-
167
- it "performs a $push on the embedded array" do
168
- root_push_expectation.call
169
- insert.persist.should == address
170
- end
171
- end
172
- end
173
- end
174
- end
175
- end
@@ -1,148 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Mongoid::Persistence::Update do
4
-
5
- let(:document) do
6
- Patient.new(:_id => Mongo::ObjectID.new.to_s)
7
- end
8
-
9
- let(:address) do
10
- Address.new(:_id => Mongo::ObjectID.new.to_s, :street => "Oxford St")
11
- end
12
-
13
- let(:collection) do
14
- stub.quacks_like(Mongoid::Collection.allocate)
15
- end
16
-
17
- before do
18
- document.stubs(:collection).returns(collection)
19
- end
20
-
21
- describe "#initialize" do
22
-
23
- let(:update) do
24
- Mongoid::Persistence::Update.new(document)
25
- end
26
-
27
- it "sets the document" do
28
- update.document.should == document
29
- end
30
-
31
- it "sets the collection" do
32
- update.collection.should == document.collection
33
- end
34
-
35
- it "defaults validation to true" do
36
- update.validate.should == true
37
- end
38
-
39
- it "sets the options" do
40
- update.options.should ==
41
- { :multi => false, :safe => Mongoid.persist_in_safe_mode }
42
- end
43
- end
44
-
45
- describe "#persist" do
46
-
47
- def root_set_expectation
48
- lambda {
49
- collection.expects(:update).with(
50
- { "_id" => document.id },
51
- { "$set" => document.setters },
52
- :multi => false,
53
- :safe => true
54
- ).returns("Object")
55
- }
56
- end
57
-
58
- def embedded_set_expectation
59
- lambda {
60
- collection.expects(:update).with(
61
- { "_id" => document.id, "addresses._id" => address.id },
62
- { "$set" => address.setters },
63
- :multi => false,
64
- :safe => true
65
- ).returns("Object")
66
- }
67
- end
68
-
69
- let(:update) do
70
- Mongoid::Persistence::Update.new(document)
71
- end
72
-
73
- context "when the document is changed" do
74
-
75
- before do
76
- document.title = "Sir"
77
- end
78
-
79
- context "when the document is valid" do
80
-
81
- it "performs a $set for changed fields" do
82
- root_set_expectation.call
83
- update.persist.should == true
84
- end
85
-
86
- it "moves the changed fields to previously changed" do
87
- root_set_expectation.call
88
- update.persist
89
- document.changed?.should == false
90
- end
91
-
92
- end
93
-
94
- context "when the document is not valid" do
95
-
96
- before do
97
- document.stubs(:valid?).returns(false)
98
- end
99
-
100
- it "returns false" do
101
- update.persist.should == false
102
- end
103
- end
104
-
105
- context "when not validating" do
106
-
107
- before do
108
- update.instance_variable_set(:@validate, false)
109
- document.stubs(:valid?).returns(false)
110
- end
111
-
112
- after do
113
- update.instance_variable_set(:@validate, true)
114
- end
115
-
116
- it "updates the document in the database" do
117
- root_set_expectation.call
118
- update.persist.should == true
119
- end
120
- end
121
-
122
- context "when the document is embedded" do
123
-
124
- let(:embedded) do
125
- Mongoid::Persistence::Update.new(address)
126
- end
127
-
128
- before do
129
- # TODO: What to do about composite keys?
130
- document.addresses << address
131
- address.city = "London"
132
- end
133
-
134
- it "performs a $set for the embedded changed fields" do
135
- embedded_set_expectation.call
136
- embedded.persist
137
- end
138
- end
139
- end
140
-
141
- context "when the document is not changed" do
142
-
143
- it "returns true" do
144
- update.persist.should == true
145
- end
146
- end
147
- end
148
- end
@@ -1,40 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Mongoid::Persistence do
4
-
5
- let(:person) do
6
- Person.new
7
- end
8
-
9
- describe "#insert" do
10
-
11
- let(:insert) do
12
- stub.quacks_like(Mongoid::Persistence::Insert.allocate)
13
- end
14
-
15
- before do
16
- Mongoid::Persistence::Insert.expects(:new).with(person).returns(insert)
17
- end
18
-
19
- it "delegates to the insert persistence command" do
20
- insert.expects(:persist).returns(person)
21
- person.insert.should == person
22
- end
23
- end
24
-
25
- describe "#update" do
26
-
27
- let(:update) do
28
- stub.quacks_like(Mongoid::Persistence::Update.allocate)
29
- end
30
-
31
- before do
32
- Mongoid::Persistence::Update.expects(:new).with(person).returns(update)
33
- end
34
-
35
- it "delegates to the update persistence command" do
36
- update.expects(:persist).returns(true)
37
- person.update.should == true
38
- end
39
- end
40
- end
@@ -1,83 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Mongoid::State do
4
-
5
- describe "#new_record?" do
6
-
7
- context "when the object has been saved" do
8
-
9
- before do
10
- @person = Person.new(:_id => "1")
11
- end
12
-
13
- it "returns false" do
14
- @person.new_record?.should be_false
15
- end
16
-
17
- end
18
-
19
- context "when the object has not been saved" do
20
-
21
- before do
22
- @person = Person.new
23
- end
24
-
25
- it "returns true" do
26
- @person.new_record?.should be_true
27
- end
28
-
29
- end
30
-
31
- end
32
-
33
- describe "#persisted?" do
34
-
35
- before do
36
- @person = Person.new
37
- end
38
-
39
- it "delegates to new_record?" do
40
- @person.persisted?.should be_false
41
- end
42
- end
43
-
44
- describe "destroyed?" do
45
-
46
- before do
47
- @person = Person.new
48
- end
49
-
50
- context "when destroyed is true" do
51
-
52
- before do
53
- @person.destroyed = true
54
- end
55
-
56
- it "returns true" do
57
- @person.destroyed?.should be_true
58
- end
59
- end
60
-
61
- context "when destroyed is false" do
62
-
63
- before do
64
- @person.destroyed = false
65
- end
66
-
67
- it "returns true" do
68
- @person.destroyed?.should be_false
69
- end
70
- end
71
-
72
- context "when destroyed is nil" do
73
-
74
- before do
75
- @person.destroyed = nil
76
- end
77
-
78
- it "returns false" do
79
- @person.destroyed?.should be_false
80
- end
81
- end
82
- end
83
- end