mongoid 1.2.14 → 1.9.0

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 (200) hide show
  1. data/lib/mongoid.rb +10 -3
  2. data/lib/mongoid/associations.rb +133 -97
  3. data/lib/mongoid/associations/belongs_to_related.rb +2 -3
  4. data/lib/mongoid/associations/{belongs_to.rb → embedded_in.rb} +14 -6
  5. data/lib/mongoid/associations/{has_many.rb → embeds_many.rb} +89 -31
  6. data/lib/mongoid/associations/{has_one.rb → embeds_one.rb} +8 -7
  7. data/lib/mongoid/associations/has_many_related.rb +52 -7
  8. data/lib/mongoid/associations/has_one_related.rb +8 -4
  9. data/lib/mongoid/associations/meta_data.rb +2 -1
  10. data/lib/mongoid/associations/options.rb +6 -1
  11. data/lib/mongoid/associations/proxy.rb +14 -21
  12. data/lib/mongoid/attributes.rb +27 -12
  13. data/lib/mongoid/collection.rb +4 -3
  14. data/lib/mongoid/collections.rb +41 -0
  15. data/lib/mongoid/collections/master.rb +3 -2
  16. data/lib/mongoid/collections/slaves.rb +3 -2
  17. data/lib/mongoid/components.rb +21 -19
  18. data/lib/mongoid/concern.rb +31 -0
  19. data/lib/mongoid/config.rb +117 -12
  20. data/lib/mongoid/contexts.rb +1 -1
  21. data/lib/mongoid/contexts/enumerable.rb +1 -1
  22. data/lib/mongoid/contexts/mongo.rb +1 -1
  23. data/lib/mongoid/contexts/paging.rb +10 -2
  24. data/lib/mongoid/criterion/inclusion.rb +17 -0
  25. data/lib/mongoid/criterion/optional.rb +1 -1
  26. data/lib/mongoid/dirty.rb +253 -0
  27. data/lib/mongoid/document.rb +81 -52
  28. data/lib/mongoid/errors.rb +32 -1
  29. data/lib/mongoid/extensions.rb +11 -9
  30. data/lib/mongoid/extensions/big_decimal/conversions.rb +2 -2
  31. data/lib/mongoid/extensions/boolean/conversions.rb +8 -2
  32. data/lib/mongoid/extensions/date/conversions.rb +13 -4
  33. data/lib/mongoid/extensions/datetime/conversions.rb +1 -6
  34. data/lib/mongoid/extensions/float/conversions.rb +5 -1
  35. data/lib/mongoid/extensions/hash/assimilation.rb +12 -3
  36. data/lib/mongoid/extensions/hash/conversions.rb +34 -4
  37. data/lib/mongoid/extensions/integer/conversions.rb +5 -1
  38. data/lib/mongoid/extensions/nil/assimilation.rb +4 -0
  39. data/lib/mongoid/extensions/object/conversions.rb +1 -1
  40. data/lib/mongoid/extensions/string/conversions.rb +1 -1
  41. data/lib/mongoid/extensions/symbol/inflections.rb +1 -1
  42. data/lib/mongoid/extensions/time_conversions.rb +35 -0
  43. data/lib/mongoid/extras.rb +6 -9
  44. data/lib/mongoid/factory.rb +2 -1
  45. data/lib/mongoid/field.rb +9 -2
  46. data/lib/mongoid/fields.rb +1 -0
  47. data/lib/mongoid/identity.rb +3 -3
  48. data/lib/mongoid/indexes.rb +3 -3
  49. data/lib/mongoid/memoization.rb +8 -2
  50. data/lib/mongoid/named_scope.rb +0 -3
  51. data/lib/mongoid/observable.rb +30 -0
  52. data/lib/mongoid/paths.rb +62 -0
  53. data/lib/mongoid/persistence.rb +222 -0
  54. data/lib/mongoid/persistence/command.rb +39 -0
  55. data/lib/mongoid/persistence/insert.rb +50 -0
  56. data/lib/mongoid/persistence/insert_embedded.rb +38 -0
  57. data/lib/mongoid/persistence/remove.rb +39 -0
  58. data/lib/mongoid/persistence/remove_all.rb +37 -0
  59. data/lib/mongoid/persistence/remove_embedded.rb +50 -0
  60. data/lib/mongoid/persistence/update.rb +63 -0
  61. data/lib/mongoid/state.rb +28 -21
  62. data/lib/mongoid/timestamps.rb +5 -8
  63. data/lib/mongoid/version.rb +4 -0
  64. data/lib/mongoid/versioning.rb +6 -7
  65. metadata +81 -300
  66. data/.gitignore +0 -6
  67. data/.watchr +0 -29
  68. data/Rakefile +0 -53
  69. data/VERSION +0 -1
  70. data/caliper.yml +0 -4
  71. data/lib/mongoid/collections/mimic.rb +0 -46
  72. data/lib/mongoid/commands.rb +0 -174
  73. data/lib/mongoid/commands/create.rb +0 -21
  74. data/lib/mongoid/commands/delete.rb +0 -16
  75. data/lib/mongoid/commands/delete_all.rb +0 -23
  76. data/lib/mongoid/commands/deletion.rb +0 -18
  77. data/lib/mongoid/commands/destroy.rb +0 -19
  78. data/lib/mongoid/commands/destroy_all.rb +0 -23
  79. data/lib/mongoid/commands/save.rb +0 -27
  80. data/lib/mongoid/extensions/time/conversions.rb +0 -18
  81. data/mongoid.gemspec +0 -395
  82. data/perf/benchmark.rb +0 -77
  83. data/spec/integration/mongoid/associations_spec.rb +0 -340
  84. data/spec/integration/mongoid/attributes_spec.rb +0 -22
  85. data/spec/integration/mongoid/commands_spec.rb +0 -218
  86. data/spec/integration/mongoid/contexts/enumerable_spec.rb +0 -33
  87. data/spec/integration/mongoid/criteria_spec.rb +0 -272
  88. data/spec/integration/mongoid/document_spec.rb +0 -593
  89. data/spec/integration/mongoid/extensions_spec.rb +0 -26
  90. data/spec/integration/mongoid/finders_spec.rb +0 -119
  91. data/spec/integration/mongoid/inheritance_spec.rb +0 -137
  92. data/spec/integration/mongoid/named_scope_spec.rb +0 -46
  93. data/spec/models/address.rb +0 -39
  94. data/spec/models/animal.rb +0 -6
  95. data/spec/models/callbacks.rb +0 -18
  96. data/spec/models/comment.rb +0 -8
  97. data/spec/models/country_code.rb +0 -6
  98. data/spec/models/employer.rb +0 -5
  99. data/spec/models/game.rb +0 -7
  100. data/spec/models/inheritance.rb +0 -56
  101. data/spec/models/location.rb +0 -5
  102. data/spec/models/mixed_drink.rb +0 -4
  103. data/spec/models/name.rb +0 -13
  104. data/spec/models/namespacing.rb +0 -11
  105. data/spec/models/patient.rb +0 -4
  106. data/spec/models/person.rb +0 -99
  107. data/spec/models/pet.rb +0 -7
  108. data/spec/models/pet_owner.rb +0 -6
  109. data/spec/models/phone.rb +0 -7
  110. data/spec/models/post.rb +0 -15
  111. data/spec/models/translation.rb +0 -5
  112. data/spec/models/vet_visit.rb +0 -5
  113. data/spec/spec.opts +0 -3
  114. data/spec/spec_helper.rb +0 -31
  115. data/spec/unit/mongoid/associations/belongs_to_related_spec.rb +0 -145
  116. data/spec/unit/mongoid/associations/belongs_to_spec.rb +0 -193
  117. data/spec/unit/mongoid/associations/has_many_related_spec.rb +0 -420
  118. data/spec/unit/mongoid/associations/has_many_spec.rb +0 -519
  119. data/spec/unit/mongoid/associations/has_one_related_spec.rb +0 -179
  120. data/spec/unit/mongoid/associations/has_one_spec.rb +0 -282
  121. data/spec/unit/mongoid/associations/meta_data_spec.rb +0 -88
  122. data/spec/unit/mongoid/associations/options_spec.rb +0 -192
  123. data/spec/unit/mongoid/associations_spec.rb +0 -595
  124. data/spec/unit/mongoid/attributes_spec.rb +0 -507
  125. data/spec/unit/mongoid/callbacks_spec.rb +0 -55
  126. data/spec/unit/mongoid/collection_spec.rb +0 -187
  127. data/spec/unit/mongoid/collections/cyclic_iterator_spec.rb +0 -75
  128. data/spec/unit/mongoid/collections/master_spec.rb +0 -41
  129. data/spec/unit/mongoid/collections/mimic_spec.rb +0 -43
  130. data/spec/unit/mongoid/collections/slaves_spec.rb +0 -81
  131. data/spec/unit/mongoid/commands/create_spec.rb +0 -30
  132. data/spec/unit/mongoid/commands/delete_all_spec.rb +0 -58
  133. data/spec/unit/mongoid/commands/delete_spec.rb +0 -38
  134. data/spec/unit/mongoid/commands/destroy_all_spec.rb +0 -23
  135. data/spec/unit/mongoid/commands/destroy_spec.rb +0 -50
  136. data/spec/unit/mongoid/commands/save_spec.rb +0 -105
  137. data/spec/unit/mongoid/commands_spec.rb +0 -275
  138. data/spec/unit/mongoid/config_spec.rb +0 -172
  139. data/spec/unit/mongoid/contexts/enumerable_spec.rb +0 -421
  140. data/spec/unit/mongoid/contexts/mongo_spec.rb +0 -682
  141. data/spec/unit/mongoid/contexts_spec.rb +0 -25
  142. data/spec/unit/mongoid/criteria_spec.rb +0 -824
  143. data/spec/unit/mongoid/criterion/complex_spec.rb +0 -19
  144. data/spec/unit/mongoid/criterion/exclusion_spec.rb +0 -91
  145. data/spec/unit/mongoid/criterion/inclusion_spec.rb +0 -219
  146. data/spec/unit/mongoid/criterion/optional_spec.rb +0 -319
  147. data/spec/unit/mongoid/cursor_spec.rb +0 -74
  148. data/spec/unit/mongoid/deprecation_spec.rb +0 -24
  149. data/spec/unit/mongoid/document_spec.rb +0 -952
  150. data/spec/unit/mongoid/errors_spec.rb +0 -103
  151. data/spec/unit/mongoid/extensions/array/accessors_spec.rb +0 -50
  152. data/spec/unit/mongoid/extensions/array/assimilation_spec.rb +0 -24
  153. data/spec/unit/mongoid/extensions/array/conversions_spec.rb +0 -35
  154. data/spec/unit/mongoid/extensions/array/parentization_spec.rb +0 -20
  155. data/spec/unit/mongoid/extensions/big_decimal/conversions_spec.rb +0 -22
  156. data/spec/unit/mongoid/extensions/binary/conversions_spec.rb +0 -22
  157. data/spec/unit/mongoid/extensions/boolean/conversions_spec.rb +0 -49
  158. data/spec/unit/mongoid/extensions/date/conversions_spec.rb +0 -102
  159. data/spec/unit/mongoid/extensions/datetime/conversions_spec.rb +0 -70
  160. data/spec/unit/mongoid/extensions/float/conversions_spec.rb +0 -61
  161. data/spec/unit/mongoid/extensions/hash/accessors_spec.rb +0 -184
  162. data/spec/unit/mongoid/extensions/hash/assimilation_spec.rb +0 -46
  163. data/spec/unit/mongoid/extensions/hash/conversions_spec.rb +0 -21
  164. data/spec/unit/mongoid/extensions/hash/criteria_helpers_spec.rb +0 -17
  165. data/spec/unit/mongoid/extensions/hash/scoping_spec.rb +0 -14
  166. data/spec/unit/mongoid/extensions/integer/conversions_spec.rb +0 -61
  167. data/spec/unit/mongoid/extensions/nil/assimilation_spec.rb +0 -24
  168. data/spec/unit/mongoid/extensions/object/conversions_spec.rb +0 -57
  169. data/spec/unit/mongoid/extensions/proc/scoping_spec.rb +0 -34
  170. data/spec/unit/mongoid/extensions/string/conversions_spec.rb +0 -17
  171. data/spec/unit/mongoid/extensions/string/inflections_spec.rb +0 -208
  172. data/spec/unit/mongoid/extensions/symbol/inflections_spec.rb +0 -91
  173. data/spec/unit/mongoid/extensions/time/conversions_spec.rb +0 -70
  174. data/spec/unit/mongoid/extras_spec.rb +0 -102
  175. data/spec/unit/mongoid/factory_spec.rb +0 -31
  176. data/spec/unit/mongoid/field_spec.rb +0 -143
  177. data/spec/unit/mongoid/fields_spec.rb +0 -181
  178. data/spec/unit/mongoid/finders_spec.rb +0 -404
  179. data/spec/unit/mongoid/identity_spec.rb +0 -109
  180. data/spec/unit/mongoid/indexes_spec.rb +0 -93
  181. data/spec/unit/mongoid/javascript_spec.rb +0 -48
  182. data/spec/unit/mongoid/matchers/all_spec.rb +0 -27
  183. data/spec/unit/mongoid/matchers/default_spec.rb +0 -27
  184. data/spec/unit/mongoid/matchers/exists_spec.rb +0 -56
  185. data/spec/unit/mongoid/matchers/gt_spec.rb +0 -39
  186. data/spec/unit/mongoid/matchers/gte_spec.rb +0 -49
  187. data/spec/unit/mongoid/matchers/in_spec.rb +0 -27
  188. data/spec/unit/mongoid/matchers/lt_spec.rb +0 -39
  189. data/spec/unit/mongoid/matchers/lte_spec.rb +0 -49
  190. data/spec/unit/mongoid/matchers/ne_spec.rb +0 -27
  191. data/spec/unit/mongoid/matchers/nin_spec.rb +0 -27
  192. data/spec/unit/mongoid/matchers/size_spec.rb +0 -27
  193. data/spec/unit/mongoid/matchers_spec.rb +0 -329
  194. data/spec/unit/mongoid/memoization_spec.rb +0 -75
  195. data/spec/unit/mongoid/named_scope_spec.rb +0 -123
  196. data/spec/unit/mongoid/scope_spec.rb +0 -240
  197. data/spec/unit/mongoid/state_spec.rb +0 -83
  198. data/spec/unit/mongoid/timestamps_spec.rb +0 -25
  199. data/spec/unit/mongoid/versioning_spec.rb +0 -41
  200. data/spec/unit/mongoid_spec.rb +0 -46
@@ -1,61 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Mongoid::Extensions::Float::Conversions do
4
-
5
- describe "#set" do
6
-
7
- context "when the value is a number" do
8
-
9
- it "converts the number to a float" do
10
- Float.set(3.45).should == 3.45
11
- end
12
-
13
- end
14
-
15
- context "when the value is not a number" do
16
-
17
- context "when the value is non numerical" do
18
-
19
- it "returns the string" do
20
- Float.set("foo").should == "foo"
21
- end
22
-
23
- end
24
-
25
- context "when the string is numerical" do
26
-
27
- it "returns the float value for the string" do
28
- Float.set("3.45").should == 3.45
29
- end
30
-
31
- end
32
-
33
- context "when the string is empty" do
34
-
35
- it "returns 0.0" do
36
- Float.set("").should be_nil
37
- end
38
-
39
- end
40
-
41
- context "when the string is nil" do
42
-
43
- it "returns 0.0" do
44
- Float.set(nil).should be_nil
45
- end
46
-
47
- end
48
-
49
- end
50
-
51
- end
52
-
53
- describe "#get" do
54
-
55
- it "returns the float" do
56
- Float.get(3.45).should == 3.45
57
- end
58
-
59
- end
60
-
61
- end
@@ -1,184 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Mongoid::Extensions::Hash::Accessors do
4
-
5
- before do
6
- @hash = {
7
- :_id => 1,
8
- :title => "value",
9
- :name => {
10
- :_id => 2, :first_name => "Test", :last_name => "User"
11
- },
12
- :pet => {
13
- :_id => 6,
14
- :name => "Fido",
15
- :vet_visits => [ { :date => Date.new(2007, 1, 1) } ]
16
- },
17
- :addresses => [
18
- { :_id => 3, :street => "First Street" },
19
- { :_id => 4, :street => "Second Street" }
20
- ]
21
- }
22
- end
23
-
24
- describe "#klass" do
25
-
26
- context "when _type exists" do
27
-
28
- it "returns the class" do
29
- { "_type" => "Person" }.klass.should == Person
30
- end
31
-
32
- end
33
-
34
- context "when _type does not exist" do
35
-
36
- it "returns nil" do
37
- {}.klass.should be_nil
38
- end
39
-
40
- end
41
-
42
- end
43
-
44
- describe "#remove" do
45
-
46
- context "when removing from an array" do
47
-
48
- context "when the elements exist" do
49
-
50
- it "removes the element from the array" do
51
- @hash.remove(:addresses, { :_id => 3, :street => "First Street" })
52
- @hash[:addresses].size.should == 1
53
- end
54
-
55
- end
56
-
57
- context "when the elements do not exist" do
58
-
59
- it "does not raise an error" do
60
- @hash.remove(:aliases, { :_id => 3, :street => "First Street" })
61
- end
62
-
63
- end
64
-
65
- end
66
-
67
- context "when removing a single object" do
68
-
69
- context "when the element exists" do
70
-
71
- it "removes the element from the array" do
72
- @hash.remove(:name, { :_id => 2, :first_name => "Test", :last_name => "User" })
73
- @hash[:name].should be_nil
74
- end
75
-
76
- end
77
-
78
- context "when the element does not exist" do
79
-
80
- it "does not raise an error" do
81
- @hash.remove(:alias, { :_id => 3, :street => "First Street" })
82
- end
83
-
84
- end
85
-
86
- end
87
-
88
- end
89
-
90
- describe "#insert" do
91
-
92
- context "when writing to a hash with a child array" do
93
-
94
- context "when child attributes not present" do
95
-
96
- it "does nothing to the children" do
97
- @hash.insert(:pet, { :name => "Bingo" })
98
- @hash[:pet].should == {
99
- :_id => 6,
100
- :name => "Bingo",
101
- :vet_visits => [ { :date => Date.new(2007, 1, 1) } ]
102
- }
103
- end
104
-
105
- end
106
-
107
- context "when child attributes present" do
108
-
109
- it "overwrites the child attributes" do
110
- @hash.insert(:pet, { :vet_visits => [ { :date => Date.new(2009, 11, 11) } ] })
111
- @hash[:pet][:vet_visits].should == [ { :date => Date.new(2009, 11, 11) } ]
112
- end
113
-
114
- end
115
-
116
- end
117
-
118
- context "when writing a single attribute" do
119
-
120
- context "when attribute exists" do
121
-
122
- before do
123
- @new = { :_id => 2, :first_name => "Test2", :last_name => "User2" }
124
- end
125
-
126
- it "updates the existing attribute" do
127
- @hash.insert(:name, @new)
128
- @hash[:name].should == @new
129
- end
130
-
131
- end
132
-
133
- context "when attribute does not exist" do
134
-
135
- before do
136
- @hash.delete(:name)
137
- @new = { :_id => 2, :first_name => "Test2", :last_name => "User2" }
138
- end
139
-
140
- it "adds the new attribute" do
141
- @hash.insert(:name, @new)
142
- @hash[:name].should == @new
143
- end
144
-
145
- end
146
-
147
- end
148
-
149
- context "when writing to an array of attributes" do
150
-
151
- context "when matching attribute exists" do
152
-
153
- before do
154
- @new = { :_id => 3, :street => "New Street" }
155
- end
156
-
157
- it "updates the matching attributes" do
158
- @hash.insert(:addresses, @new)
159
- @hash[:addresses].should include({:street => "New Street", :_id => 3})
160
- end
161
-
162
- end
163
-
164
- context "when matching attribute does not exist" do
165
-
166
- before do
167
- @new = { :_id => 10, :street => "New Street" }
168
- end
169
-
170
- it "updates the matching attributes" do
171
- @hash.insert(:addresses, @new)
172
- @hash[:addresses].should == [
173
- { :_id => 3, :street => "First Street" },
174
- { :_id => 4, :street => "Second Street" },
175
- { :_id => 10, :street => "New Street" }
176
- ]
177
- end
178
- end
179
-
180
- end
181
-
182
- end
183
-
184
- end
@@ -1,46 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Mongoid::Extensions::Hash::Assimilation do
4
-
5
- describe "#assimilate" do
6
-
7
- context "when a type is not provided" do
8
-
9
- before do
10
- @child = { :first_name => "Hank", :last_name => "Moody" }
11
- @parent = Person.new(:title => "Mr.")
12
- @options = Mongoid::Associations::Options.new(:name => :name)
13
- end
14
-
15
- it "incorporates the hash into the object graph" do
16
- @child.assimilate(@parent, @options)
17
- @parent.name.first_name.should == "Hank"
18
- @parent.name.last_name.should == "Moody"
19
- end
20
-
21
- end
22
-
23
- context "when a type is provided" do
24
-
25
- before do
26
- @child = { :speed => 300 }
27
- @parent = Canvas.new(:name => "web page")
28
- @options = Mongoid::Associations::Options.new(:name => :writer)
29
- end
30
-
31
- it "incorporates the hash into the object graph with the supplied type" do
32
- @child.assimilate(@parent, @options, HtmlWriter)
33
- @parent.writer.should be_a_kind_of(HtmlWriter)
34
- @parent.writer.speed.should == 300
35
- end
36
-
37
- it "adds the _type field to the hash" do
38
- @child.assimilate(@parent, @options, HtmlWriter)
39
- @parent.writer._type.should == "HtmlWriter"
40
- end
41
-
42
- end
43
-
44
- end
45
-
46
- end
@@ -1,21 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Mongoid::Extensions::Hash::Conversions do
4
-
5
- describe "#get" do
6
-
7
- it "returns the hash" do
8
- Hash.get({ :field => "test" }).should == { :field => "test" }
9
- end
10
-
11
- end
12
-
13
- describe "#set" do
14
-
15
- it "returns the hash" do
16
- Hash.set({ :field => "test" }).should == { :field => "test" }
17
- end
18
-
19
- end
20
-
21
- end
@@ -1,17 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Mongoid::Extensions::Hash::CriteriaHelpers do
4
-
5
- describe "#expand_complex_criteria" do
6
-
7
- before do
8
- @hash = {:age.gt => 40, :title => "Title"}
9
- end
10
-
11
- it "expands complex criteria to form a valid `where` hash" do
12
- @hash.expand_complex_criteria.should == {:age => {"$gt" => 40}, :title => "Title"}
13
- end
14
-
15
- end
16
-
17
- end
@@ -1,14 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Mongoid::Extensions::Hash::Scoping do
4
-
5
- describe "#scoped" do
6
-
7
- it "returns self" do
8
- { :where => { :active => true } }.scoped.should ==
9
- { :where => { :active => true } }
10
- end
11
-
12
- end
13
-
14
- end
@@ -1,61 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Mongoid::Extensions::Integer::Conversions do
4
-
5
- describe "#set" do
6
-
7
- context "when the value is a number" do
8
-
9
- it "converts the number to an integer" do
10
- Integer.set(3).should == 3
11
- end
12
-
13
- end
14
-
15
- context "when the string is not a number" do
16
-
17
- context "when the string is non numerical" do
18
-
19
- it "returns the string" do
20
- Integer.set("foo").should == "foo"
21
- end
22
-
23
- end
24
-
25
- context "when the string is numerical" do
26
-
27
- it "returns the integer value for the string" do
28
- Integer.set("3").should == 3
29
- end
30
-
31
- end
32
-
33
- context "when the string is empty" do
34
-
35
- it "returns an empty string" do
36
- Integer.set("").should be_nil
37
- end
38
-
39
- end
40
-
41
- context "when the string is nil" do
42
-
43
- it "returns nil" do
44
- Integer.set(nil).should be_nil
45
- end
46
-
47
- end
48
-
49
- end
50
-
51
- end
52
-
53
- describe "#get" do
54
-
55
- it "returns the integer" do
56
- Integer.get(3).should == 3
57
- end
58
-
59
- end
60
-
61
- end
@@ -1,24 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Mongoid::Extensions::Nil::Assimilation do
4
-
5
- describe "#assimilate" do
6
-
7
- before do
8
- @name = Name.new(:first_name => "Durran")
9
- @parent = Person.new(:title => "Mr.", :name => @name)
10
- @options = Mongoid::Associations::Options.new(:name => :name)
11
- end
12
-
13
- it "removes the child attribute from the parent" do
14
- nil.assimilate(@parent, @options)
15
- @parent.attributes[:name].should be_nil
16
- end
17
-
18
- it "returns nil" do
19
- nil.assimilate(@parent, @options).should be_nil
20
- end
21
-
22
- end
23
-
24
- end
@@ -1,57 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Mongoid::Extensions::Object::Conversions do
4
-
5
- describe "#mongoidize" do
6
-
7
- it "returns its attributes" do
8
- Person.new(:_id => 1, :title => "Sir").mongoidize.should ==
9
- {
10
- "_id" => 1,
11
- "title" => "Sir",
12
- "age" => 100,
13
- "_type" => "Person",
14
- "blood_alcohol_content" => 0.0,
15
- "pets" => false
16
- }
17
- end
18
-
19
- end
20
-
21
- describe "#get" do
22
-
23
- before do
24
- @attributes = { :_id => "test", :title => "Sir", :age => 100 }
25
- end
26
-
27
- it "instantiates a new class from the attributes" do
28
- Person.get(@attributes).should == Person.new(@attributes)
29
- end
30
-
31
- end
32
-
33
- describe "#set" do
34
-
35
- context "when object has attributes" do
36
-
37
- before do
38
- @attributes = {
39
- "_id" => "test",
40
- "title" => "Sir",
41
- "age" => 100,
42
- "_type" => "Person",
43
- "blood_alcohol_content" => 0.0,
44
- "pets" => false
45
- }
46
- @person = Person.new(@attributes)
47
- end
48
-
49
- it "converts the object to a hash" do
50
- Person.set(@person).should == @attributes
51
- end
52
-
53
- end
54
-
55
- end
56
-
57
- end