jnunemaker-mongomapper 0.3.2 → 0.3.3
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/History +10 -0
- data/Rakefile +5 -3
- data/VERSION +1 -1
- data/lib/mongomapper/associations/belongs_to_polymorphic_proxy.rb +3 -1
- data/lib/mongomapper/associations/belongs_to_proxy.rb +2 -2
- data/lib/mongomapper/associations/many_documents_proxy.rb +32 -14
- data/lib/mongomapper/associations/proxy.rb +2 -6
- data/lib/mongomapper/associations.rb +44 -9
- data/lib/mongomapper/document.rb +142 -89
- data/lib/mongomapper/dynamic_finder.rb +38 -0
- data/lib/mongomapper/embedded_document.rb +102 -85
- data/lib/mongomapper/finder_options.rb +3 -14
- data/lib/mongomapper/key.rb +10 -15
- data/lib/mongomapper/support.rb +30 -0
- data/lib/mongomapper.rb +4 -31
- data/mongomapper.gemspec +12 -10
- data/test/functional/associations/test_belongs_to_polymorphic_proxy.rb +14 -0
- data/test/functional/associations/test_belongs_to_proxy.rb +10 -0
- data/test/functional/associations/test_many_proxy.rb +63 -4
- data/test/functional/test_document.rb +371 -120
- data/test/functional/test_rails_compatibility.rb +2 -3
- data/test/models.rb +10 -6
- data/test/unit/serializers/test_json_serializer.rb +1 -1
- data/test/unit/test_document.rb +7 -1
- data/test/unit/test_embedded_document.rb +115 -24
- data/test/unit/test_finder_options.rb +7 -38
- data/test/unit/test_key.rb +46 -23
- metadata +7 -7
- data/test/unit/test_mongo_id.rb +0 -35
@@ -18,9 +18,8 @@ class TestRailsCompatibility < Test::Unit::TestCase
|
|
18
18
|
end
|
19
19
|
|
20
20
|
should "have to_param that returns id" do
|
21
|
-
|
22
|
-
instance
|
23
|
-
instance.to_param.should == id.to_s
|
21
|
+
instance = Order.create('_id' => 1234)
|
22
|
+
instance.to_param.should == '1234'
|
24
23
|
end
|
25
24
|
|
26
25
|
should "alias new to new_record?" do
|
data/test/models.rb
CHANGED
@@ -38,8 +38,12 @@ end
|
|
38
38
|
|
39
39
|
class RealPerson
|
40
40
|
include MongoMapper::Document
|
41
|
-
many :pets
|
41
|
+
many :pets
|
42
42
|
key :name, String
|
43
|
+
|
44
|
+
def realname=(n)
|
45
|
+
self.name = n
|
46
|
+
end
|
43
47
|
end
|
44
48
|
|
45
49
|
class Person
|
@@ -83,26 +87,26 @@ module TrModels
|
|
83
87
|
include MongoMapper::EmbeddedDocument
|
84
88
|
key :license_plate, String
|
85
89
|
end
|
86
|
-
|
90
|
+
|
87
91
|
class Car < TrModels::Transport
|
88
92
|
include MongoMapper::EmbeddedDocument
|
89
93
|
key :model, String
|
90
94
|
key :year, Integer
|
91
95
|
end
|
92
|
-
|
96
|
+
|
93
97
|
class Bus < TrModels::Transport
|
94
98
|
include MongoMapper::EmbeddedDocument
|
95
99
|
key :max_passengers, Integer
|
96
100
|
end
|
97
|
-
|
101
|
+
|
98
102
|
class Ambulance < TrModels::Transport
|
99
103
|
include MongoMapper::EmbeddedDocument
|
100
104
|
key :icu, Boolean
|
101
105
|
end
|
102
|
-
|
106
|
+
|
103
107
|
class Fleet
|
104
108
|
include MongoMapper::Document
|
105
109
|
many :transports, :polymorphic => true, :class_name => "TrModels::Transport"
|
106
|
-
key :name, String
|
110
|
+
key :name, String
|
107
111
|
end
|
108
112
|
end
|
@@ -141,7 +141,7 @@ class JsonSerializationTest < Test::Unit::TestCase
|
|
141
141
|
|
142
142
|
should "allow attribute filtering with except" do
|
143
143
|
json = @contacts.to_json(:except => [:name, :preferences, :awesome, :created_at, :updated_at])
|
144
|
-
assert_equal %([{"id":
|
144
|
+
assert_equal %([{"id":null,"age":39},{"id":null,"age":14}]), json
|
145
145
|
end
|
146
146
|
end
|
147
147
|
|
data/test/unit/test_document.rb
CHANGED
@@ -100,7 +100,13 @@ class DocumentTest < Test::Unit::TestCase
|
|
100
100
|
|
101
101
|
context "new?" do
|
102
102
|
should "be true if no id" do
|
103
|
-
@document.new.new?.should
|
103
|
+
@document.new.new?.should be_true
|
104
|
+
end
|
105
|
+
|
106
|
+
should "be true if id but using custom id and not saved yet" do
|
107
|
+
doc = @document.new
|
108
|
+
doc.id = '1234'
|
109
|
+
doc.new?.should be_true
|
104
110
|
end
|
105
111
|
end
|
106
112
|
|
@@ -55,16 +55,28 @@ class EmbeddedDocumentTest < Test::Unit::TestCase
|
|
55
55
|
end
|
56
56
|
end
|
57
57
|
|
58
|
-
should "work" do
|
58
|
+
should "work with name" do
|
59
|
+
key = @document.key(:name)
|
60
|
+
key.name.should == 'name'
|
61
|
+
end
|
62
|
+
|
63
|
+
should "work with name and type" do
|
59
64
|
key = @document.key(:name, String)
|
60
65
|
key.name.should == 'name'
|
61
66
|
key.type.should == String
|
62
|
-
key.should be_instance_of(MongoMapper::Key)
|
63
67
|
end
|
64
68
|
|
65
|
-
should "work with options" do
|
69
|
+
should "work with name, type and options" do
|
66
70
|
key = @document.key(:name, String, :required => true)
|
67
|
-
key.
|
71
|
+
key.name.should == 'name'
|
72
|
+
key.type.should == String
|
73
|
+
key.options[:required].should be_true
|
74
|
+
end
|
75
|
+
|
76
|
+
should "work with name and options" do
|
77
|
+
key = @document.key(:name, :required => true)
|
78
|
+
key.name.should == 'name'
|
79
|
+
key.options[:required].should be_true
|
68
80
|
end
|
69
81
|
|
70
82
|
should "be tracked per document" do
|
@@ -76,11 +88,11 @@ class EmbeddedDocumentTest < Test::Unit::TestCase
|
|
76
88
|
@document.keys['age'].type.should == Integer
|
77
89
|
end
|
78
90
|
|
79
|
-
should "be redefinable" do
|
91
|
+
should "not be redefinable" do
|
80
92
|
@document.key(:foo, String)
|
81
93
|
@document.keys['foo'].type.should == String
|
82
94
|
@document.key(:foo, Integer)
|
83
|
-
@document.keys['foo'].type.should ==
|
95
|
+
@document.keys['foo'].type.should == String
|
84
96
|
end
|
85
97
|
|
86
98
|
should "create reader method" do
|
@@ -134,6 +146,53 @@ class EmbeddedDocumentTest < Test::Unit::TestCase
|
|
134
146
|
Parent.subclasses.should == [Child, OtherChild]
|
135
147
|
end
|
136
148
|
end
|
149
|
+
|
150
|
+
context "Applying default values for keys" do
|
151
|
+
setup do
|
152
|
+
@document = Class.new do
|
153
|
+
include MongoMapper::EmbeddedDocument
|
154
|
+
|
155
|
+
key :name, String, :default => 'foo'
|
156
|
+
key :age, Integer, :default => 20
|
157
|
+
key :net_worth, Float, :default => 100.00
|
158
|
+
key :active, Boolean, :default => true
|
159
|
+
key :smart, Boolean, :default => false
|
160
|
+
key :skills, Array, :default => [1]
|
161
|
+
key :options, Hash, :default => {'foo' => 'bar'}
|
162
|
+
end
|
163
|
+
|
164
|
+
@doc = @document.new
|
165
|
+
end
|
166
|
+
|
167
|
+
should "work for strings" do
|
168
|
+
@doc.name.should == 'foo'
|
169
|
+
end
|
170
|
+
|
171
|
+
should "work for integers" do
|
172
|
+
@doc.age.should == 20
|
173
|
+
end
|
174
|
+
|
175
|
+
should "work for floats" do
|
176
|
+
@doc.net_worth.should == 100.00
|
177
|
+
end
|
178
|
+
|
179
|
+
should "work for booleans" do
|
180
|
+
@doc.active.should == true
|
181
|
+
@doc.smart.should == false
|
182
|
+
end
|
183
|
+
|
184
|
+
should "work for arrays" do
|
185
|
+
@doc.skills.should == [1]
|
186
|
+
@doc.skills << 2
|
187
|
+
@doc.skills.should == [1, 2]
|
188
|
+
end
|
189
|
+
|
190
|
+
should "work for hashes" do
|
191
|
+
@doc.options['foo'].should == 'bar'
|
192
|
+
@doc.options['baz'] = 'wick'
|
193
|
+
@doc.options['baz'].should == 'wick'
|
194
|
+
end
|
195
|
+
end
|
137
196
|
|
138
197
|
context "An instance of an embedded document" do
|
139
198
|
setup do
|
@@ -149,16 +208,23 @@ class EmbeddedDocumentTest < Test::Unit::TestCase
|
|
149
208
|
@document.keys.keys.should include('_id')
|
150
209
|
end
|
151
210
|
|
152
|
-
should "have id method that
|
211
|
+
should "have id method that sets _id" do
|
153
212
|
doc = @document.new
|
154
213
|
doc.id.should == doc._id.to_s
|
155
214
|
end
|
156
215
|
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
216
|
+
context "setting custom id" do
|
217
|
+
should "set _id" do
|
218
|
+
doc = @document.new(:id => '1234')
|
219
|
+
doc._id.should == '1234'
|
220
|
+
end
|
221
|
+
|
222
|
+
should "know that custom id is set" do
|
223
|
+
doc = @document.new
|
224
|
+
doc.using_custom_id?.should be_false
|
225
|
+
doc.id = '1234'
|
226
|
+
doc.using_custom_id?.should be_true
|
227
|
+
end
|
162
228
|
end
|
163
229
|
|
164
230
|
context "being initialized" do
|
@@ -168,6 +234,12 @@ class EmbeddedDocumentTest < Test::Unit::TestCase
|
|
168
234
|
doc.attributes['name'].should == 'John'
|
169
235
|
doc.attributes['age'].should == 23
|
170
236
|
end
|
237
|
+
|
238
|
+
should "be able to assign keys dynamically" do
|
239
|
+
doc = @document.new(:name => 'John', :skills => ['ruby', 'rails'])
|
240
|
+
doc.name.should == 'John'
|
241
|
+
doc.skills.should == ['ruby', 'rails']
|
242
|
+
end
|
171
243
|
|
172
244
|
should "not throw error if initialized with nil" do
|
173
245
|
lambda {
|
@@ -191,13 +263,6 @@ class EmbeddedDocumentTest < Test::Unit::TestCase
|
|
191
263
|
doc.attributes[:age].should == 10
|
192
264
|
end
|
193
265
|
|
194
|
-
should "raise undefined method if no key exists" do
|
195
|
-
doc = @document.new(:name => 'foobar', :age => 10)
|
196
|
-
lambda {
|
197
|
-
doc.attributes = {:name => 'new value', :foobar => 'baz'}
|
198
|
-
}.should raise_error(NoMethodError)
|
199
|
-
end
|
200
|
-
|
201
266
|
should "not ignore keys that have methods defined" do
|
202
267
|
@document.class_eval do
|
203
268
|
attr_writer :password
|
@@ -237,10 +302,19 @@ class EmbeddedDocumentTest < Test::Unit::TestCase
|
|
237
302
|
doc[:name].should == 'string'
|
238
303
|
end
|
239
304
|
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
305
|
+
context "[]=" do
|
306
|
+
should "write key value for existing key" do
|
307
|
+
doc = @document.new
|
308
|
+
doc[:name] = 'string'
|
309
|
+
doc[:name].should == 'string'
|
310
|
+
end
|
311
|
+
|
312
|
+
should "create key and write value for missing key" do
|
313
|
+
doc = @document.new
|
314
|
+
doc[:foo] = 'string'
|
315
|
+
@document.keys.keys.include?('foo').should be_true
|
316
|
+
doc[:foo].should == 'string'
|
317
|
+
end
|
244
318
|
end
|
245
319
|
end
|
246
320
|
|
@@ -273,6 +347,23 @@ class EmbeddedDocumentTest < Test::Unit::TestCase
|
|
273
347
|
doc = @document.new(:name => 'John', :age => 27)
|
274
348
|
doc.name_and_age.should == 'John (27)'
|
275
349
|
end
|
350
|
+
|
351
|
+
should "set instance variable" do
|
352
|
+
@document.key :foo, Array
|
353
|
+
doc = @document.new
|
354
|
+
doc.instance_variable_get("@foo").should be_nil
|
355
|
+
doc.foo
|
356
|
+
doc.instance_variable_get("@foo").should == []
|
357
|
+
end
|
358
|
+
|
359
|
+
should "not set instance variable if frozen" do
|
360
|
+
@document.key :foo, Array
|
361
|
+
doc = @document.new
|
362
|
+
doc.instance_variable_get("@foo").should be_nil
|
363
|
+
doc.freeze
|
364
|
+
doc.foo
|
365
|
+
doc.instance_variable_get("@foo").should be_nil
|
366
|
+
end
|
276
367
|
end
|
277
368
|
|
278
369
|
context "reading an attribute before typcasting" do
|
@@ -367,4 +458,4 @@ class EmbeddedDocumentTest < Test::Unit::TestCase
|
|
367
458
|
end
|
368
459
|
end
|
369
460
|
end # instance of a embedded document
|
370
|
-
end
|
461
|
+
end
|
@@ -28,7 +28,6 @@ class FinderOptionsTest < Test::Unit::TestCase
|
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
|
-
|
32
31
|
context "Converting conditions to criteria" do
|
33
32
|
should "work with simple criteria" do
|
34
33
|
FinderOptions.to_mongo_criteria(:foo => 'bar').should == {
|
@@ -47,53 +46,23 @@ class FinderOptionsTest < Test::Unit::TestCase
|
|
47
46
|
}
|
48
47
|
end
|
49
48
|
|
50
|
-
should "not use $in for arrays if already using array
|
49
|
+
should "not use $in for arrays if already using array operator" do
|
51
50
|
FinderOptions.to_mongo_criteria(:foo => {'$all' => [1,2,3]}).should == {
|
52
51
|
:foo => {'$all' => [1,2,3]}
|
53
52
|
}
|
53
|
+
|
54
|
+
FinderOptions.to_mongo_criteria(:foo => {'$any' => [1,2,3]}).should == {
|
55
|
+
:foo => {'$any' => [1,2,3]}
|
56
|
+
}
|
54
57
|
end
|
55
58
|
|
56
59
|
should "work arbitrarily deep" do
|
57
60
|
FinderOptions.to_mongo_criteria(:foo => {:bar => [1,2,3]}).should == {
|
58
61
|
:foo => {:bar => {'$in' => [1,2,3]}}
|
59
62
|
}
|
60
|
-
end
|
61
|
-
|
62
|
-
should "convert string _ids to objectid automatically" do
|
63
|
-
id = XGen::Mongo::Driver::ObjectID.new
|
64
|
-
|
65
|
-
FinderOptions.to_mongo_criteria(:_id => id.to_s).should == {
|
66
|
-
:_id => id
|
67
|
-
}
|
68
|
-
end
|
69
|
-
|
70
|
-
should "leave objectid _ids alone" do
|
71
|
-
id = XGen::Mongo::Driver::ObjectID.new
|
72
|
-
|
73
|
-
FinderOptions.to_mongo_criteria(:_id => id).should == {
|
74
|
-
:_id => id
|
75
|
-
}
|
76
|
-
end
|
77
|
-
|
78
|
-
should "convert array of string _ids to object ids" do
|
79
|
-
id1 = XGen::Mongo::Driver::ObjectID.new
|
80
|
-
id2 = XGen::Mongo::Driver::ObjectID.new
|
81
|
-
|
82
|
-
FinderOptions.to_mongo_criteria(:_id => [id1.to_s, id2.to_s]).should == {
|
83
|
-
:_id => {'$in' => [id1, id2]}
|
84
|
-
}
|
85
|
-
end
|
86
|
-
|
87
|
-
should "convert array of string _ids when using mongo array stuff" do
|
88
|
-
id1 = XGen::Mongo::Driver::ObjectID.new
|
89
|
-
id2 = XGen::Mongo::Driver::ObjectID.new
|
90
|
-
|
91
|
-
FinderOptions.to_mongo_criteria(:_id => {'$all' => [id1.to_s, id2.to_s]}).should == {
|
92
|
-
:_id => {'$all' => [id1, id2]}
|
93
|
-
}
|
94
63
|
|
95
|
-
FinderOptions.to_mongo_criteria(:
|
96
|
-
:
|
64
|
+
FinderOptions.to_mongo_criteria(:foo => {:bar => {'$any' => [1,2,3]}}).should == {
|
65
|
+
:foo => {:bar => {'$any' => [1,2,3]}}
|
97
66
|
}
|
98
67
|
end
|
99
68
|
end
|
data/test/unit/test_key.rb
CHANGED
@@ -14,7 +14,7 @@ class KeyTest < Test::Unit::TestCase
|
|
14
14
|
|
15
15
|
context "The Key Class" do
|
16
16
|
should "have the native types defined" do
|
17
|
-
Key::NativeTypes.should == [String, Float, Time, Integer, Boolean, Array, Hash
|
17
|
+
Key::NativeTypes.should == [String, Float, Time, Integer, Boolean, Array, Hash]
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
@@ -30,7 +30,7 @@ class KeyTest < Test::Unit::TestCase
|
|
30
30
|
should "allow setting options" do
|
31
31
|
Key.new(:foo, Integer, :required => true).options[:required].should be(true)
|
32
32
|
end
|
33
|
-
|
33
|
+
|
34
34
|
should "default options to {}" do
|
35
35
|
Key.new(:foo, Integer, nil).options.should == {}
|
36
36
|
end
|
@@ -38,6 +38,30 @@ class KeyTest < Test::Unit::TestCase
|
|
38
38
|
should "symbolize option keys" do
|
39
39
|
Key.new(:foo, Integer, 'required' => true).options[:required].should be(true)
|
40
40
|
end
|
41
|
+
|
42
|
+
should "work with just name" do
|
43
|
+
key = Key.new(:foo)
|
44
|
+
key.name.should == 'foo'
|
45
|
+
end
|
46
|
+
|
47
|
+
should "work with name and type" do
|
48
|
+
key = Key.new(:foo, String)
|
49
|
+
key.name.should == 'foo'
|
50
|
+
key.type.should == String
|
51
|
+
end
|
52
|
+
|
53
|
+
should "work with name, type, and options" do
|
54
|
+
key = Key.new(:foo, String, :required => true)
|
55
|
+
key.name.should == 'foo'
|
56
|
+
key.type.should == String
|
57
|
+
key.options[:required].should be_true
|
58
|
+
end
|
59
|
+
|
60
|
+
should "work with name and options" do
|
61
|
+
key = Key.new(:foo, :required => true)
|
62
|
+
key.name.should == 'foo'
|
63
|
+
key.options[:required].should be_true
|
64
|
+
end
|
41
65
|
end
|
42
66
|
|
43
67
|
context "A key" do
|
@@ -52,14 +76,19 @@ class KeyTest < Test::Unit::TestCase
|
|
52
76
|
should "not be equal to another key with different type" do
|
53
77
|
Key.new(:name, String).should_not == Key.new(:name, Integer)
|
54
78
|
end
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
79
|
+
|
80
|
+
context "native?" do
|
81
|
+
should "be true if native type" do
|
82
|
+
Key.new(:name, String).native?.should be_true
|
83
|
+
end
|
84
|
+
|
85
|
+
should "be true if no type" do
|
86
|
+
Key.new(:name).native?.should be_true
|
87
|
+
end
|
88
|
+
|
89
|
+
should "be false if not native" do
|
90
|
+
Key.new(:name, Class.new).native?.should be_false
|
91
|
+
end
|
63
92
|
end
|
64
93
|
|
65
94
|
should "know if it is a embedded_document" do
|
@@ -75,14 +104,6 @@ class KeyTest < Test::Unit::TestCase
|
|
75
104
|
end
|
76
105
|
|
77
106
|
context "setting a value" do
|
78
|
-
should "correctly typecast MongoIDs" do
|
79
|
-
key = Key.new(:_id, MongoID)
|
80
|
-
id = MongoID.new
|
81
|
-
[id, id.to_s].each do |a|
|
82
|
-
key.set(a).should == id
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
107
|
should "correctly typecast Strings" do
|
87
108
|
key = Key.new(:foo, String)
|
88
109
|
[21, '21'].each do |a|
|
@@ -114,11 +135,6 @@ class KeyTest < Test::Unit::TestCase
|
|
114
135
|
key.set('2000-01-01 01:01:01.123456').zone.should == "UTC"
|
115
136
|
end
|
116
137
|
|
117
|
-
should_eventually "correctly typecast Dates" do
|
118
|
-
key = Key.new(:foo, Date)
|
119
|
-
key.set('2000-01-01').should == Date.new(2000, 1, 1)
|
120
|
-
end
|
121
|
-
|
122
138
|
should "correctly typecast Boolean" do
|
123
139
|
key = Key.new(:foo, Boolean)
|
124
140
|
['false', false, 'f', '0', 0].each do |b|
|
@@ -151,6 +167,13 @@ class KeyTest < Test::Unit::TestCase
|
|
151
167
|
key = Key.new(:foo, String)
|
152
168
|
key.get('bar').should == 'bar'
|
153
169
|
end
|
170
|
+
|
171
|
+
should "work without type" do
|
172
|
+
key = Key.new(:foo)
|
173
|
+
key.get([1,"2"]).should == [1, "2"]
|
174
|
+
key.get(false).should == false
|
175
|
+
key.get({}).should == {}
|
176
|
+
end
|
154
177
|
|
155
178
|
context "for a key with a default value set" do
|
156
179
|
setup do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jnunemaker-mongomapper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Nunemaker
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-08-
|
12
|
+
date: 2009-08-16 00:00:00 -07:00
|
13
13
|
default_executable: mmconsole
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -30,7 +30,7 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.
|
33
|
+
version: 0.11.1
|
34
34
|
version:
|
35
35
|
- !ruby/object:Gem::Dependency
|
36
36
|
name: jnunemaker-validatable
|
@@ -92,6 +92,7 @@ files:
|
|
92
92
|
- lib/mongomapper/associations/proxy.rb
|
93
93
|
- lib/mongomapper/callbacks.rb
|
94
94
|
- lib/mongomapper/document.rb
|
95
|
+
- lib/mongomapper/dynamic_finder.rb
|
95
96
|
- lib/mongomapper/embedded_document.rb
|
96
97
|
- lib/mongomapper/finder_options.rb
|
97
98
|
- lib/mongomapper/key.rb
|
@@ -102,6 +103,7 @@ files:
|
|
102
103
|
- lib/mongomapper/save_with_validation.rb
|
103
104
|
- lib/mongomapper/serialization.rb
|
104
105
|
- lib/mongomapper/serializers/json_serializer.rb
|
106
|
+
- lib/mongomapper/support.rb
|
105
107
|
- lib/mongomapper/validations.rb
|
106
108
|
- mongomapper.gemspec
|
107
109
|
- test/NOTE_ON_TESTING
|
@@ -125,14 +127,13 @@ files:
|
|
125
127
|
- test/unit/test_embedded_document.rb
|
126
128
|
- test/unit/test_finder_options.rb
|
127
129
|
- test/unit/test_key.rb
|
128
|
-
- test/unit/test_mongo_id.rb
|
129
130
|
- test/unit/test_mongomapper.rb
|
130
131
|
- test/unit/test_observing.rb
|
131
132
|
- test/unit/test_pagination.rb
|
132
133
|
- test/unit/test_rails_compatibility.rb
|
133
134
|
- test/unit/test_serializations.rb
|
134
135
|
- test/unit/test_validations.rb
|
135
|
-
has_rdoc:
|
136
|
+
has_rdoc: false
|
136
137
|
homepage: http://github.com/jnunemaker/mongomapper
|
137
138
|
licenses:
|
138
139
|
post_install_message:
|
@@ -157,7 +158,7 @@ requirements: []
|
|
157
158
|
rubyforge_project: mongomapper
|
158
159
|
rubygems_version: 1.3.5
|
159
160
|
signing_key:
|
160
|
-
specification_version:
|
161
|
+
specification_version: 3
|
161
162
|
summary: Awesome gem for modeling your domain and storing it in mongo
|
162
163
|
test_files:
|
163
164
|
- test/functional/associations/test_belongs_to_polymorphic_proxy.rb
|
@@ -180,7 +181,6 @@ test_files:
|
|
180
181
|
- test/unit/test_embedded_document.rb
|
181
182
|
- test/unit/test_finder_options.rb
|
182
183
|
- test/unit/test_key.rb
|
183
|
-
- test/unit/test_mongo_id.rb
|
184
184
|
- test/unit/test_mongomapper.rb
|
185
185
|
- test/unit/test_observing.rb
|
186
186
|
- test/unit/test_pagination.rb
|
data/test/unit/test_mongo_id.rb
DELETED
@@ -1,35 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class MongoIDTest < Test::Unit::TestCase
|
4
|
-
PhonyError = Class.new(StandardError)
|
5
|
-
|
6
|
-
class Phony
|
7
|
-
def to_s
|
8
|
-
raise PhonyError
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
context "mm_typecast" do
|
13
|
-
should "return value if object id" do
|
14
|
-
id = XGen::Mongo::Driver::ObjectID.new
|
15
|
-
MongoID.mm_typecast(id).should == id
|
16
|
-
end
|
17
|
-
|
18
|
-
should "return object id if string" do
|
19
|
-
id = XGen::Mongo::Driver::ObjectID.new
|
20
|
-
MongoID.mm_typecast(id.to_s).should == id
|
21
|
-
end
|
22
|
-
|
23
|
-
should "raise MongoMapper::IllegalID if invalid id" do
|
24
|
-
lambda {
|
25
|
-
MongoID.mm_typecast(1234)
|
26
|
-
}.should raise_error(MongoMapper::IllegalID)
|
27
|
-
end
|
28
|
-
|
29
|
-
should "raise exception if message does not match illegal object id" do
|
30
|
-
lambda {
|
31
|
-
MongoID.mm_typecast(Phony.new)
|
32
|
-
}.should raise_error(PhonyError)
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|