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,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,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
|