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.
Files changed (216) hide show
  1. data/lib/mongoid.rb +11 -5
  2. data/lib/mongoid/associations.rb +112 -107
  3. data/lib/mongoid/associations/belongs_to_related.rb +2 -3
  4. data/lib/mongoid/associations/embedded_in.rb +12 -4
  5. data/lib/mongoid/associations/{embed_many.rb → embeds_many.rb} +101 -32
  6. data/lib/mongoid/associations/{embed_one.rb → embeds_one.rb} +10 -10
  7. data/lib/mongoid/associations/has_many_related.rb +51 -5
  8. data/lib/mongoid/associations/has_one_related.rb +9 -5
  9. data/lib/mongoid/associations/meta_data.rb +2 -1
  10. data/lib/mongoid/associations/options.rb +15 -6
  11. data/lib/mongoid/associations/proxy.rb +14 -21
  12. data/lib/mongoid/attributes.rb +34 -13
  13. data/lib/mongoid/callbacks.rb +1 -2
  14. data/lib/mongoid/collection.rb +4 -3
  15. data/lib/mongoid/collections.rb +41 -0
  16. data/lib/mongoid/collections/master.rb +3 -2
  17. data/lib/mongoid/collections/slaves.rb +3 -2
  18. data/lib/mongoid/components.rb +4 -1
  19. data/lib/mongoid/config.rb +163 -13
  20. data/lib/mongoid/contexts.rb +1 -2
  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/criteria.rb +13 -22
  25. data/lib/mongoid/criterion/exclusion.rb +3 -3
  26. data/lib/mongoid/criterion/inclusion.rb +17 -0
  27. data/lib/mongoid/criterion/optional.rb +1 -1
  28. data/lib/mongoid/dirty.rb +253 -0
  29. data/lib/mongoid/document.rb +40 -85
  30. data/lib/mongoid/errors.rb +48 -1
  31. data/lib/mongoid/extensions.rb +11 -9
  32. data/lib/mongoid/extensions/big_decimal/conversions.rb +2 -2
  33. data/lib/mongoid/extensions/boolean/conversions.rb +8 -2
  34. data/lib/mongoid/extensions/date/conversions.rb +13 -4
  35. data/lib/mongoid/extensions/datetime/conversions.rb +1 -6
  36. data/lib/mongoid/extensions/float/conversions.rb +5 -1
  37. data/lib/mongoid/extensions/hash/assimilation.rb +12 -3
  38. data/lib/mongoid/extensions/hash/conversions.rb +34 -4
  39. data/lib/mongoid/extensions/integer/conversions.rb +5 -1
  40. data/lib/mongoid/extensions/nil/assimilation.rb +4 -0
  41. data/lib/mongoid/extensions/object/conversions.rb +3 -3
  42. data/lib/mongoid/extensions/string/conversions.rb +1 -1
  43. data/lib/mongoid/extensions/symbol/inflections.rb +5 -2
  44. data/lib/mongoid/extensions/time_conversions.rb +35 -0
  45. data/lib/mongoid/factory.rb +2 -1
  46. data/lib/mongoid/field.rb +15 -2
  47. data/lib/mongoid/fields.rb +1 -1
  48. data/lib/mongoid/identity.rb +3 -3
  49. data/lib/mongoid/indexes.rb +3 -3
  50. data/lib/mongoid/matchers.rb +1 -2
  51. data/lib/mongoid/memoization.rb +8 -2
  52. data/lib/mongoid/named_scope.rb +0 -5
  53. data/lib/mongoid/observable.rb +1 -1
  54. data/lib/mongoid/paths.rb +30 -22
  55. data/lib/mongoid/persistence.rb +218 -0
  56. data/lib/mongoid/persistence/command.rb +39 -0
  57. data/lib/mongoid/persistence/insert.rb +47 -0
  58. data/lib/mongoid/persistence/insert_embedded.rb +38 -0
  59. data/lib/mongoid/persistence/remove.rb +39 -0
  60. data/lib/mongoid/persistence/remove_all.rb +37 -0
  61. data/lib/mongoid/persistence/remove_embedded.rb +50 -0
  62. data/lib/mongoid/persistence/update.rb +63 -0
  63. data/lib/mongoid/railtie.rb +53 -0
  64. data/lib/mongoid/railties/database.rake +37 -0
  65. data/lib/mongoid/timestamps.rb +2 -2
  66. data/lib/mongoid/validations.rb +2 -2
  67. data/lib/mongoid/validations/associated.rb +2 -2
  68. data/lib/mongoid/validations/uniqueness.rb +13 -2
  69. data/lib/mongoid/version.rb +4 -0
  70. data/lib/mongoid/versioning.rb +3 -2
  71. data/lib/rails/generators/mongoid/config/config_generator.rb +41 -0
  72. data/lib/rails/generators/mongoid/config/templates/mongoid.yml +24 -0
  73. data/lib/rails/generators/mongoid/model/model_generator.rb +24 -0
  74. data/lib/rails/generators/mongoid/model/templates/model.rb +15 -0
  75. data/lib/rails/generators/mongoid_generator.rb +61 -0
  76. metadata +76 -301
  77. data/.gitignore +0 -6
  78. data/.watchr +0 -29
  79. data/Rakefile +0 -52
  80. data/VERSION +0 -1
  81. data/caliper.yml +0 -4
  82. data/lib/mongoid/collections/mimic.rb +0 -46
  83. data/lib/mongoid/commands.rb +0 -161
  84. data/lib/mongoid/commands/create.rb +0 -19
  85. data/lib/mongoid/commands/delete.rb +0 -16
  86. data/lib/mongoid/commands/delete_all.rb +0 -23
  87. data/lib/mongoid/commands/deletion.rb +0 -18
  88. data/lib/mongoid/commands/destroy.rb +0 -17
  89. data/lib/mongoid/commands/destroy_all.rb +0 -23
  90. data/lib/mongoid/commands/save.rb +0 -29
  91. data/lib/mongoid/extensions/time/conversions.rb +0 -18
  92. data/mongoid.gemspec +0 -408
  93. data/perf/benchmark.rb +0 -77
  94. data/spec/integration/mongoid/associations_spec.rb +0 -340
  95. data/spec/integration/mongoid/attributes_spec.rb +0 -22
  96. data/spec/integration/mongoid/commands_spec.rb +0 -227
  97. data/spec/integration/mongoid/contexts/enumerable_spec.rb +0 -33
  98. data/spec/integration/mongoid/criteria_spec.rb +0 -272
  99. data/spec/integration/mongoid/document_spec.rb +0 -650
  100. data/spec/integration/mongoid/extensions_spec.rb +0 -22
  101. data/spec/integration/mongoid/finders_spec.rb +0 -119
  102. data/spec/integration/mongoid/inheritance_spec.rb +0 -137
  103. data/spec/integration/mongoid/named_scope_spec.rb +0 -46
  104. data/spec/models/address.rb +0 -39
  105. data/spec/models/animal.rb +0 -6
  106. data/spec/models/callbacks.rb +0 -18
  107. data/spec/models/comment.rb +0 -8
  108. data/spec/models/country_code.rb +0 -6
  109. data/spec/models/employer.rb +0 -5
  110. data/spec/models/game.rb +0 -7
  111. data/spec/models/inheritance.rb +0 -56
  112. data/spec/models/location.rb +0 -5
  113. data/spec/models/mixed_drink.rb +0 -4
  114. data/spec/models/name.rb +0 -13
  115. data/spec/models/namespacing.rb +0 -11
  116. data/spec/models/patient.rb +0 -4
  117. data/spec/models/person.rb +0 -99
  118. data/spec/models/pet.rb +0 -7
  119. data/spec/models/pet_owner.rb +0 -6
  120. data/spec/models/phone.rb +0 -7
  121. data/spec/models/post.rb +0 -15
  122. data/spec/models/translation.rb +0 -5
  123. data/spec/models/vet_visit.rb +0 -5
  124. data/spec/spec.opts +0 -3
  125. data/spec/spec_helper.rb +0 -31
  126. data/spec/unit/mongoid/associations/belongs_to_related_spec.rb +0 -145
  127. data/spec/unit/mongoid/associations/embed_many_spec.rb +0 -516
  128. data/spec/unit/mongoid/associations/embed_one_spec.rb +0 -282
  129. data/spec/unit/mongoid/associations/embedded_in_spec.rb +0 -193
  130. data/spec/unit/mongoid/associations/has_many_related_spec.rb +0 -418
  131. data/spec/unit/mongoid/associations/has_one_related_spec.rb +0 -179
  132. data/spec/unit/mongoid/associations/meta_data_spec.rb +0 -88
  133. data/spec/unit/mongoid/associations/options_spec.rb +0 -192
  134. data/spec/unit/mongoid/associations_spec.rb +0 -595
  135. data/spec/unit/mongoid/attributes_spec.rb +0 -507
  136. data/spec/unit/mongoid/callbacks_spec.rb +0 -55
  137. data/spec/unit/mongoid/collection_spec.rb +0 -187
  138. data/spec/unit/mongoid/collections/cyclic_iterator_spec.rb +0 -75
  139. data/spec/unit/mongoid/collections/master_spec.rb +0 -41
  140. data/spec/unit/mongoid/collections/mimic_spec.rb +0 -43
  141. data/spec/unit/mongoid/collections/slaves_spec.rb +0 -81
  142. data/spec/unit/mongoid/commands/create_spec.rb +0 -31
  143. data/spec/unit/mongoid/commands/delete_all_spec.rb +0 -58
  144. data/spec/unit/mongoid/commands/delete_spec.rb +0 -38
  145. data/spec/unit/mongoid/commands/destroy_all_spec.rb +0 -21
  146. data/spec/unit/mongoid/commands/destroy_spec.rb +0 -51
  147. data/spec/unit/mongoid/commands/save_spec.rb +0 -107
  148. data/spec/unit/mongoid/commands_spec.rb +0 -270
  149. data/spec/unit/mongoid/config_spec.rb +0 -172
  150. data/spec/unit/mongoid/contexts/enumerable_spec.rb +0 -421
  151. data/spec/unit/mongoid/contexts/mongo_spec.rb +0 -682
  152. data/spec/unit/mongoid/contexts_spec.rb +0 -25
  153. data/spec/unit/mongoid/criteria_spec.rb +0 -824
  154. data/spec/unit/mongoid/criterion/complex_spec.rb +0 -19
  155. data/spec/unit/mongoid/criterion/exclusion_spec.rb +0 -91
  156. data/spec/unit/mongoid/criterion/inclusion_spec.rb +0 -219
  157. data/spec/unit/mongoid/criterion/optional_spec.rb +0 -319
  158. data/spec/unit/mongoid/cursor_spec.rb +0 -74
  159. data/spec/unit/mongoid/deprecation_spec.rb +0 -24
  160. data/spec/unit/mongoid/document_spec.rb +0 -818
  161. data/spec/unit/mongoid/errors_spec.rb +0 -103
  162. data/spec/unit/mongoid/extensions/array/accessors_spec.rb +0 -50
  163. data/spec/unit/mongoid/extensions/array/assimilation_spec.rb +0 -24
  164. data/spec/unit/mongoid/extensions/array/conversions_spec.rb +0 -35
  165. data/spec/unit/mongoid/extensions/array/parentization_spec.rb +0 -20
  166. data/spec/unit/mongoid/extensions/big_decimal/conversions_spec.rb +0 -22
  167. data/spec/unit/mongoid/extensions/binary/conversions_spec.rb +0 -22
  168. data/spec/unit/mongoid/extensions/boolean/conversions_spec.rb +0 -49
  169. data/spec/unit/mongoid/extensions/date/conversions_spec.rb +0 -102
  170. data/spec/unit/mongoid/extensions/datetime/conversions_spec.rb +0 -67
  171. data/spec/unit/mongoid/extensions/float/conversions_spec.rb +0 -61
  172. data/spec/unit/mongoid/extensions/hash/accessors_spec.rb +0 -184
  173. data/spec/unit/mongoid/extensions/hash/assimilation_spec.rb +0 -46
  174. data/spec/unit/mongoid/extensions/hash/conversions_spec.rb +0 -21
  175. data/spec/unit/mongoid/extensions/hash/criteria_helpers_spec.rb +0 -17
  176. data/spec/unit/mongoid/extensions/hash/scoping_spec.rb +0 -14
  177. data/spec/unit/mongoid/extensions/integer/conversions_spec.rb +0 -61
  178. data/spec/unit/mongoid/extensions/nil/assimilation_spec.rb +0 -24
  179. data/spec/unit/mongoid/extensions/object/conversions_spec.rb +0 -57
  180. data/spec/unit/mongoid/extensions/proc/scoping_spec.rb +0 -34
  181. data/spec/unit/mongoid/extensions/string/conversions_spec.rb +0 -17
  182. data/spec/unit/mongoid/extensions/string/inflections_spec.rb +0 -208
  183. data/spec/unit/mongoid/extensions/symbol/inflections_spec.rb +0 -91
  184. data/spec/unit/mongoid/extensions/time/conversions_spec.rb +0 -70
  185. data/spec/unit/mongoid/extras_spec.rb +0 -102
  186. data/spec/unit/mongoid/factory_spec.rb +0 -31
  187. data/spec/unit/mongoid/field_spec.rb +0 -143
  188. data/spec/unit/mongoid/fields_spec.rb +0 -181
  189. data/spec/unit/mongoid/finders_spec.rb +0 -404
  190. data/spec/unit/mongoid/identity_spec.rb +0 -109
  191. data/spec/unit/mongoid/indexes_spec.rb +0 -93
  192. data/spec/unit/mongoid/javascript_spec.rb +0 -48
  193. data/spec/unit/mongoid/matchers/all_spec.rb +0 -27
  194. data/spec/unit/mongoid/matchers/default_spec.rb +0 -27
  195. data/spec/unit/mongoid/matchers/exists_spec.rb +0 -56
  196. data/spec/unit/mongoid/matchers/gt_spec.rb +0 -39
  197. data/spec/unit/mongoid/matchers/gte_spec.rb +0 -49
  198. data/spec/unit/mongoid/matchers/in_spec.rb +0 -27
  199. data/spec/unit/mongoid/matchers/lt_spec.rb +0 -39
  200. data/spec/unit/mongoid/matchers/lte_spec.rb +0 -49
  201. data/spec/unit/mongoid/matchers/ne_spec.rb +0 -27
  202. data/spec/unit/mongoid/matchers/nin_spec.rb +0 -27
  203. data/spec/unit/mongoid/matchers/size_spec.rb +0 -27
  204. data/spec/unit/mongoid/matchers_spec.rb +0 -329
  205. data/spec/unit/mongoid/memoization_spec.rb +0 -75
  206. data/spec/unit/mongoid/named_scope_spec.rb +0 -123
  207. data/spec/unit/mongoid/observable_spec.rb +0 -46
  208. data/spec/unit/mongoid/paths_spec.rb +0 -124
  209. data/spec/unit/mongoid/scope_spec.rb +0 -240
  210. data/spec/unit/mongoid/state_spec.rb +0 -83
  211. data/spec/unit/mongoid/timestamps_spec.rb +0 -25
  212. data/spec/unit/mongoid/validations/associated_spec.rb +0 -103
  213. data/spec/unit/mongoid/validations/uniqueness_spec.rb +0 -47
  214. data/spec/unit/mongoid/validations_spec.rb +0 -190
  215. data/spec/unit/mongoid/versioning_spec.rb +0 -41
  216. 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