mongo_mapper-unstable 2009.11.8 → 2009.11.18

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. data/Rakefile +3 -3
  2. data/VERSION +1 -1
  3. data/bin/mmconsole +10 -5
  4. data/lib/mongo_mapper.rb +28 -5
  5. data/lib/mongo_mapper/associations/belongs_to_polymorphic_proxy.rb +1 -1
  6. data/lib/mongo_mapper/associations/belongs_to_proxy.rb +1 -1
  7. data/lib/mongo_mapper/associations/many_documents_as_proxy.rb +2 -2
  8. data/lib/mongo_mapper/associations/many_documents_proxy.rb +2 -2
  9. data/lib/mongo_mapper/associations/many_embedded_proxy.rb +2 -1
  10. data/lib/mongo_mapper/document.rb +3 -12
  11. data/lib/mongo_mapper/embedded_document.rb +37 -19
  12. data/lib/mongo_mapper/finder_options.rb +17 -11
  13. data/lib/mongo_mapper/rails_compatibility/document.rb +4 -0
  14. data/lib/mongo_mapper/rails_compatibility/embedded_document.rb +4 -0
  15. data/lib/mongo_mapper/serializers/json_serializer.rb +2 -2
  16. data/lib/mongo_mapper/support.rb +16 -44
  17. data/lib/mongo_mapper/types.rb +64 -0
  18. data/lib/mongo_mapper/validations.rb +1 -1
  19. data/mongo_mapper.gemspec +15 -12
  20. data/test/functional/associations/test_belongs_to_polymorphic_proxy.rb +10 -10
  21. data/test/functional/associations/test_belongs_to_proxy.rb +2 -1
  22. data/test/functional/associations/test_many_documents_as_proxy.rb +13 -12
  23. data/test/functional/associations/test_many_embedded_polymorphic_proxy.rb +34 -34
  24. data/test/functional/associations/test_many_embedded_proxy.rb +22 -22
  25. data/test/functional/associations/test_many_polymorphic_proxy.rb +10 -10
  26. data/test/functional/associations/test_many_proxy.rb +14 -15
  27. data/test/functional/test_associations.rb +4 -4
  28. data/test/functional/test_binary.rb +1 -1
  29. data/test/functional/test_dirty.rb +6 -6
  30. data/test/functional/test_document.rb +64 -65
  31. data/test/functional/test_embedded_document.rb +34 -14
  32. data/test/functional/test_string_id_compatibility.rb +72 -0
  33. data/test/functional/test_validations.rb +1 -1
  34. data/test/models.rb +24 -24
  35. data/test/unit/test_document.rb +7 -4
  36. data/test/unit/test_embedded_document.rb +47 -5
  37. data/test/unit/test_finder_options.rb +22 -3
  38. data/test/unit/test_mongo_mapper.rb +65 -0
  39. data/test/unit/test_rails_compatibility.rb +14 -0
  40. data/test/unit/test_support.rb +45 -0
  41. metadata +8 -5
  42. data/test/unit/test_mongomapper.rb +0 -28
@@ -26,10 +26,10 @@ class ManyEmbeddedProxyTest < Test::Unit::TestCase
26
26
  project.addresses << chi
27
27
  project.save
28
28
 
29
- from_db = Project.find(project.id)
30
- from_db.addresses.size.should == 2
31
- from_db.addresses[0].should == sb
32
- from_db.addresses[1].should == chi
29
+ project = project.reload
30
+ project.addresses.size.should == 2
31
+ project.addresses[0].should == sb
32
+ project.addresses[1].should == chi
33
33
  end
34
34
 
35
35
  should "allow embedding arbitrarily deep" do
@@ -47,10 +47,10 @@ class ManyEmbeddedProxyTest < Test::Unit::TestCase
47
47
  doc = @document.new(:person => meg)
48
48
  doc.save
49
49
 
50
- from_db = @document.find(doc.id)
51
- from_db.person.name.should == 'Meg'
52
- from_db.person.child.name.should == 'Steve'
53
- from_db.person.child.child.name.should == 'Linda'
50
+ doc = doc.reload
51
+ doc.person.name.should == 'Meg'
52
+ doc.person.child.name.should == 'Steve'
53
+ doc.person.child.child.name.should == 'Linda'
54
54
  end
55
55
 
56
56
  should "allow assignment of 'many' embedded documents using a hash" do
@@ -70,12 +70,12 @@ class ManyEmbeddedProxyTest < Test::Unit::TestCase
70
70
  pet_lover.pets[1].species.should == "Siberian Husky"
71
71
  pet_lover.save.should be_true
72
72
 
73
- from_db = RealPerson.find(pet_lover.id)
74
- from_db.name.should == "Mr. Pet Lover"
75
- from_db.pets[0].name.should == "Jimmy"
76
- from_db.pets[0].species.should == "Cocker Spainel"
77
- from_db.pets[1].name.should == "Sasha"
78
- from_db.pets[1].species.should == "Siberian Husky"
73
+ pet_lover = pet_lover.reload
74
+ pet_lover.name.should == "Mr. Pet Lover"
75
+ pet_lover.pets[0].name.should == "Jimmy"
76
+ pet_lover.pets[0].species.should == "Cocker Spainel"
77
+ pet_lover.pets[1].name.should == "Sasha"
78
+ pet_lover.pets[1].species.should == "Siberian Husky"
79
79
  end
80
80
 
81
81
  context "embedding many embedded documents" do
@@ -101,13 +101,13 @@ class ManyEmbeddedProxyTest < Test::Unit::TestCase
101
101
  doc.people << meg
102
102
  doc.save
103
103
 
104
- from_db = @document.find(doc.id)
105
- from_db.people.first.name.should == "Meg"
106
- from_db.people.first.pets.should_not == []
107
- from_db.people.first.pets.first.name.should == "Sparky"
108
- from_db.people.first.pets.first.species.should == "Dog"
109
- from_db.people.first.pets[1].name.should == "Koda"
110
- from_db.people.first.pets[1].species.should == "Dog"
104
+ doc = doc.reload
105
+ doc.people.first.name.should == "Meg"
106
+ doc.people.first.pets.should_not == []
107
+ doc.people.first.pets.first.name.should == "Sparky"
108
+ doc.people.first.pets.first.species.should == "Dog"
109
+ doc.people.first.pets[1].name.should == "Koda"
110
+ doc.people.first.pets[1].species.should == "Dog"
111
111
  end
112
112
 
113
113
  should "create a reference to the root document for all embedded documents before save" do
@@ -139,7 +139,7 @@ class ManyEmbeddedProxyTest < Test::Unit::TestCase
139
139
  should "allow finding by id" do
140
140
  sparky = Pet.new(:name => "Sparky", :species => "Dog")
141
141
  meg = Person.new(:name => "Meg", :pets => [sparky])
142
- meg.pets.find(sparky.id).should == sparky
142
+ meg.pets.find(sparky._id).should == sparky
143
143
  end
144
144
 
145
145
  context "extending the association" do
@@ -34,8 +34,8 @@ class ManyPolymorphicProxyTest < Test::Unit::TestCase
34
34
  ]
35
35
  }.should change { Message.count }.by(3)
36
36
 
37
- from_db = Room.find(room.id)
38
- messages = from_db.messages.all :order => "position"
37
+ room = room.reload
38
+ messages = room.messages.all :order => "position"
39
39
  messages.size.should == 3
40
40
  messages[0].body.should == 'John entered room'
41
41
  messages[1].body.should == 'Heyyyoooo!'
@@ -48,8 +48,8 @@ class ManyPolymorphicProxyTest < Test::Unit::TestCase
48
48
  room.messages.push Exit.new(:body => 'John entered the room', :position => 2)
49
49
  room.messages.concat Chat.new(:body => 'Holla!' , :position => 3)
50
50
 
51
- from_db = Room.find(room.id)
52
- messages = from_db.messages.all :order => "position"
51
+ room = room.reload
52
+ messages = room.messages.all :order => "position"
53
53
  messages[0]._type.should == 'Enter'
54
54
  messages[1]._type.should == 'Exit'
55
55
  messages[2]._type.should == 'Chat'
@@ -59,7 +59,7 @@ class ManyPolymorphicProxyTest < Test::Unit::TestCase
59
59
  should "assign foreign key" do
60
60
  room = Room.create
61
61
  message = room.messages.build
62
- message.room_id.should == room.id
62
+ message.room_id.should == room._id
63
63
  end
64
64
 
65
65
  should "assign _type" do
@@ -79,7 +79,7 @@ class ManyPolymorphicProxyTest < Test::Unit::TestCase
79
79
  should "assign foreign key" do
80
80
  room = Room.create
81
81
  message = room.messages.create
82
- message.room_id.should == room.id
82
+ message.room_id.should == room._id
83
83
  end
84
84
 
85
85
  should "assign _type" do
@@ -254,12 +254,12 @@ class ManyPolymorphicProxyTest < Test::Unit::TestCase
254
254
 
255
255
  context "with one id" do
256
256
  should "work for id in association" do
257
- @lounge.messages.find(@lm2.id).should == @lm2
257
+ @lounge.messages.find(@lm2._id).should == @lm2
258
258
  end
259
259
 
260
260
  should "not work for id not in association" do
261
261
  lambda {
262
- @lounge.messages.find!(@hm2.id)
262
+ @lounge.messages.find!(@hm2._id)
263
263
  }.should raise_error(MongoMapper::DocumentNotFound)
264
264
  end
265
265
  end
@@ -280,13 +280,13 @@ class ManyPolymorphicProxyTest < Test::Unit::TestCase
280
280
 
281
281
  context "with multiple ids" do
282
282
  should "work for ids in association" do
283
- messages = @lounge.messages.find(@lm1.id, @lm2.id)
283
+ messages = @lounge.messages.find(@lm1._id, @lm2._id)
284
284
  messages.should == [@lm1, @lm2]
285
285
  end
286
286
 
287
287
  should "not work for ids not in association" do
288
288
  lambda {
289
- @lounge.messages.find!(@lm1.id, @lm2.id, @hm2.id)
289
+ @lounge.messages.find!(@lm1._id, @lm2._id, @hm2._id)
290
290
  }.should raise_error(MongoMapper::DocumentNotFound)
291
291
  end
292
292
  end
@@ -25,9 +25,9 @@ class ManyProxyTest < Test::Unit::TestCase
25
25
  project.statuses = [Status.new("name" => "ready")]
26
26
  project.save.should be_true
27
27
 
28
- from_db = Project.find(project.id)
29
- from_db.statuses.size.should == 1
30
- from_db.statuses[0].name.should == "ready"
28
+ project = project.reload
29
+ project.statuses.size.should == 1
30
+ project.statuses[0].name.should == "ready"
31
31
  end
32
32
 
33
33
  should "correctly assign foreign key when using <<, push and concat" do
@@ -36,17 +36,17 @@ class ManyProxyTest < Test::Unit::TestCase
36
36
  project.statuses.push Status.new(:name => 'push')
37
37
  project.statuses.concat Status.new(:name => 'concat')
38
38
 
39
- from_db = Project.find(project.id)
40
- from_db.statuses[0].project_id.should == project.id
41
- from_db.statuses[1].project_id.should == project.id
42
- from_db.statuses[2].project_id.should == project.id
39
+ project = project.reload
40
+ project.statuses[0].project_id.should == project._id
41
+ project.statuses[1].project_id.should == project._id
42
+ project.statuses[2].project_id.should == project._id
43
43
  end
44
44
 
45
45
  context "build" do
46
46
  should "assign foreign key" do
47
47
  project = Project.create
48
48
  status = project.statuses.build
49
- status.project_id.should == project.id
49
+ status.project_id.should == project._id
50
50
  end
51
51
 
52
52
  should "allow assigning attributes" do
@@ -60,7 +60,7 @@ class ManyProxyTest < Test::Unit::TestCase
60
60
  should "assign foreign key" do
61
61
  project = Project.create
62
62
  status = project.statuses.create(:name => 'Foo!')
63
- status.project_id.should == project.id
63
+ status.project_id.should == project._id
64
64
  end
65
65
 
66
66
  should "save record" do
@@ -81,7 +81,7 @@ class ManyProxyTest < Test::Unit::TestCase
81
81
  should "assign foreign key" do
82
82
  project = Project.create
83
83
  status = project.statuses.create!(:name => 'Foo!')
84
- status.project_id.should == project.id
84
+ status.project_id.should == project._id
85
85
  end
86
86
 
87
87
  should "save record" do
@@ -105,7 +105,6 @@ class ManyProxyTest < Test::Unit::TestCase
105
105
  end
106
106
  end
107
107
 
108
-
109
108
  context "count" do
110
109
  should "work scoped to association" do
111
110
  project = Project.create
@@ -316,25 +315,25 @@ class ManyProxyTest < Test::Unit::TestCase
316
315
 
317
316
  context "with one id" do
318
317
  should "work for id in association" do
319
- @project1.statuses.find(@complete.id).should == @complete
318
+ @project1.statuses.find(@complete._id).should == @complete
320
319
  end
321
320
 
322
321
  should "not work for id not in association" do
323
322
  lambda {
324
- @project1.statuses.find!(@archived.id)
323
+ @project1.statuses.find!(@archived._id)
325
324
  }.should raise_error(MongoMapper::DocumentNotFound)
326
325
  end
327
326
  end
328
327
 
329
328
  context "with multiple ids" do
330
329
  should "work for ids in association" do
331
- statuses = @project1.statuses.find(@brand_new.id, @complete.id)
330
+ statuses = @project1.statuses.find(@brand_new._id, @complete._id)
332
331
  statuses.should == [@brand_new, @complete]
333
332
  end
334
333
 
335
334
  should "not work for ids not in association" do
336
335
  lambda {
337
- @project1.statuses.find!(@brand_new.id, @complete.id, @archived.id)
336
+ @project1.statuses.find!(@brand_new._id, @complete._id, @archived._id)
338
337
  }.should raise_error(MongoMapper::DocumentNotFound)
339
338
  end
340
339
  end
@@ -14,7 +14,7 @@ class AssociationsTest < Test::Unit::TestCase
14
14
  include MongoMapper::EmbeddedDocument
15
15
 
16
16
  key :name, String
17
- key :post_id, String
17
+ key :post_id, ObjectId
18
18
 
19
19
  belongs_to :post, :class_name => 'AssociationsTest::AwesomeUser'
20
20
  end
@@ -22,7 +22,7 @@ class AssociationsTest < Test::Unit::TestCase
22
22
  class AwesomePost
23
23
  include MongoMapper::Document
24
24
 
25
- key :creator_id, String
25
+ key :creator_id, ObjectId
26
26
 
27
27
  belongs_to :creator, :class_name => 'AssociationsTest::AwesomeUser'
28
28
  many :tags, :class_name => 'AssociationsTest::AwesomeTag', :foreign_key => :post_id
@@ -38,7 +38,7 @@ class AssociationsTest < Test::Unit::TestCase
38
38
  post2 = AwesomePost.create(:creator => user, :tags => [tag2])
39
39
  user.posts.should == [post1, post2]
40
40
 
41
- post1_from_db = AwesomePost.find(post1.id)
42
- post1_from_db.tags.should == [tag1]
41
+ post1 = post1.reload
42
+ post1.tags.should == [tag1]
43
43
  end
44
44
  end
@@ -12,7 +12,7 @@ class BinaryTest < Test::Unit::TestCase
12
12
  doc = klass.new(:contents => '010101')
13
13
  doc.save
14
14
 
15
- doc = klass.find(doc.id)
15
+ doc = doc.reload
16
16
  doc.contents.to_s.should == ByteBuffer.new('010101').to_s
17
17
  end
18
18
  end
@@ -55,17 +55,17 @@ class DirtyTest < Test::Unit::TestCase
55
55
  should "not happen when loading from database" do
56
56
  doc = @document.create(:phrase => 'Foo')
57
57
 
58
- from_db = @document.find(doc.id)
59
- from_db.changed?.should be_false
58
+ doc = doc.reload
59
+ doc.changed?.should be_false
60
60
  end
61
61
 
62
62
  should "happen if changed after loading from database" do
63
63
  doc = @document.create(:phrase => 'Foo')
64
64
 
65
- from_db = @document.find(doc.id)
66
- from_db.changed?.should be_false
67
- from_db.phrase = 'Bar'
68
- from_db.changed?.should be_true
65
+ doc = doc.reload
66
+ doc.changed?.should be_false
67
+ doc.phrase = 'Bar'
68
+ doc.changed?.should be_true
69
69
  end
70
70
  end
71
71
 
@@ -17,6 +17,7 @@ class DocumentTest < Test::Unit::TestCase
17
17
 
18
18
  context "Saving a document with a custom id" do
19
19
  should "clear custom id flag when saved" do
20
+ @document.key :_id, String
20
21
  doc = @document.new(:id => '1234')
21
22
  doc.using_custom_id?.should be_true
22
23
  doc.save.should be_true
@@ -37,7 +38,7 @@ class DocumentTest < Test::Unit::TestCase
37
38
 
38
39
  context "Loading a document from the database with keys that are not defined" do
39
40
  setup do
40
- @id = Mongo::ObjectID.new.to_s
41
+ @id = Mongo::ObjectID.new
41
42
  @document.collection.insert({
42
43
  :_id => @id,
43
44
  :first_name => 'John',
@@ -80,7 +81,7 @@ class DocumentTest < Test::Unit::TestCase
80
81
  doc.tags = %w(foo bar)
81
82
  doc.save
82
83
  doc.tags.should == %w(foo bar)
83
- @document.find(doc.id).tags.should == %w(foo bar)
84
+ doc.reload.tags.should == %w(foo bar)
84
85
  end
85
86
 
86
87
  should "work with assignment then <<" do
@@ -102,7 +103,7 @@ class DocumentTest < Test::Unit::TestCase
102
103
  doc.tags << "bar"
103
104
  doc.save
104
105
  doc.tags.should == %w(foo bar)
105
- @document.find(doc.id).tags.should == %w(foo bar)
106
+ doc.reload.tags.should == %w(foo bar)
106
107
  end
107
108
  end
108
109
 
@@ -135,7 +136,7 @@ class DocumentTest < Test::Unit::TestCase
135
136
  doc.foo = {:baz => 'bar'}
136
137
  doc.save
137
138
 
138
- doc = @document.find(doc.id)
139
+ doc = doc.reload
139
140
  doc.foo[:baz].should == 'bar'
140
141
  doc.foo['baz'].should == 'bar'
141
142
  end
@@ -156,12 +157,11 @@ class DocumentTest < Test::Unit::TestCase
156
157
  doc = @document.new
157
158
  doc.save
158
159
 
159
- from_db = @document.find(doc.id)
160
- from_db.window.should == WindowSize.new(600, 480)
160
+ doc = doc.reload
161
+ doc.window.should == WindowSize.new(600, 480)
161
162
  end
162
163
  end
163
164
 
164
-
165
165
  context "Creating a single document" do
166
166
  setup do
167
167
  @doc_instance = @document.create({:first_name => 'John', :last_name => 'Nunemaker', :age => '27'})
@@ -174,6 +174,8 @@ class DocumentTest < Test::Unit::TestCase
174
174
  should "automatically set id" do
175
175
  @doc_instance.id.should_not be_nil
176
176
  @doc_instance.id.size.should == 24
177
+ @doc_instance.id.should be_instance_of(String)
178
+ @doc_instance._id.should be_instance_of(Mongo::ObjectID)
177
179
  end
178
180
 
179
181
  should "no longer be new?" do
@@ -226,7 +228,7 @@ class DocumentTest < Test::Unit::TestCase
226
228
  context "Updating a document" do
227
229
  setup do
228
230
  doc = @document.create({:first_name => 'John', :last_name => 'Nunemaker', :age => '27'})
229
- @doc_instance = @document.update(doc.id, {:age => 40})
231
+ @doc_instance = @document.update(doc._id, {:age => 40})
230
232
  end
231
233
 
232
234
  should "update attributes provided" do
@@ -246,8 +248,8 @@ class DocumentTest < Test::Unit::TestCase
246
248
  should "raise error when updating single doc if not provided id and attributes" do
247
249
  doc = @document.create({:first_name => 'John', :last_name => 'Nunemaker', :age => '27'})
248
250
  lambda { @document.update }.should raise_error(ArgumentError)
249
- lambda { @document.update(doc.id) }.should raise_error(ArgumentError)
250
- lambda { @document.update(doc.id, [1]) }.should raise_error(ArgumentError)
251
+ lambda { @document.update(doc._id) }.should raise_error(ArgumentError)
252
+ lambda { @document.update(doc._id, [1]) }.should raise_error(ArgumentError)
251
253
  end
252
254
 
253
255
  context "Updating multiple documents" do
@@ -256,8 +258,8 @@ class DocumentTest < Test::Unit::TestCase
256
258
  @doc2 = @document.create({:first_name => 'Steve', :last_name => 'Smith', :age => '28'})
257
259
 
258
260
  @doc_instances = @document.update({
259
- @doc1.id => {:age => 30},
260
- @doc2.id => {:age => 30},
261
+ @doc1._id => {:age => 30},
262
+ @doc2._id => {:age => 30},
261
263
  })
262
264
  end
263
265
 
@@ -272,8 +274,8 @@ class DocumentTest < Test::Unit::TestCase
272
274
  end
273
275
 
274
276
  should "update the documents" do
275
- @document.find(@doc1.id).age.should == 30
276
- @document.find(@doc2.id).age.should == 30
277
+ @document.find(@doc1._id).age.should == 30
278
+ @document.find(@doc2._id).age.should == 30
277
279
  end
278
280
  end
279
281
 
@@ -298,7 +300,7 @@ class DocumentTest < Test::Unit::TestCase
298
300
 
299
301
  context "with a single id" do
300
302
  should "work" do
301
- @document.find(@doc1.id).should == @doc1
303
+ @document.find(@doc1._id).should == @doc1
302
304
  end
303
305
 
304
306
  should "return nil if document not found with find" do
@@ -314,15 +316,15 @@ class DocumentTest < Test::Unit::TestCase
314
316
 
315
317
  context "with multiple id's" do
316
318
  should "work as arguments" do
317
- @document.find(@doc1.id, @doc2.id).should == [@doc1, @doc2]
319
+ @document.find(@doc1._id, @doc2._id).should == [@doc1, @doc2]
318
320
  end
319
321
 
320
322
  should "work as array" do
321
- @document.find([@doc1.id, @doc2.id]).should == [@doc1, @doc2]
323
+ @document.find([@doc1._id, @doc2._id]).should == [@doc1, @doc2]
322
324
  end
323
325
 
324
326
  should "return array if array only has one element" do
325
- @document.find([@doc1.id]).should == [@doc1]
327
+ @document.find([@doc1._id]).should == [@doc1]
326
328
  end
327
329
  end
328
330
 
@@ -442,8 +444,8 @@ class DocumentTest < Test::Unit::TestCase
442
444
  end
443
445
 
444
446
  should "be able to find by id" do
445
- @document.find_by_id(@doc1.id).should == @doc1
446
- @document.find_by_id(@doc2.id).should == @doc2
447
+ @document.find_by_id(@doc1._id).should == @doc1
448
+ @document.find_by_id(@doc2._id).should == @doc2
447
449
  end
448
450
 
449
451
  should "return nil if document not found" do
@@ -455,7 +457,7 @@ class DocumentTest < Test::Unit::TestCase
455
457
  setup do
456
458
  @doc1 = @document.create({:first_name => 'John', :last_name => 'Nunemaker', :age => '27'})
457
459
  @doc2 = @document.create({:first_name => 'Steve', :last_name => 'Smith', :age => '28'})
458
- @document.delete(@doc1.id)
460
+ @document.delete(@doc1._id)
459
461
  end
460
462
 
461
463
  should "remove document from collection" do
@@ -463,7 +465,7 @@ class DocumentTest < Test::Unit::TestCase
463
465
  end
464
466
 
465
467
  should "not remove other documents" do
466
- @document.find(@doc2.id).should_not be(nil)
468
+ @document.find(@doc2._id).should_not be(nil)
467
469
  end
468
470
  end
469
471
 
@@ -472,7 +474,7 @@ class DocumentTest < Test::Unit::TestCase
472
474
  @doc1 = @document.create({:first_name => 'John', :last_name => 'Nunemaker', :age => '27'})
473
475
  @doc2 = @document.create({:first_name => 'Steve', :last_name => 'Smith', :age => '28'})
474
476
  @doc3 = @document.create({:first_name => 'Steph', :last_name => 'Nunemaker', :age => '26'})
475
- @document.delete(@doc1.id, @doc2.id)
477
+ @document.delete(@doc1._id, @doc2._id)
476
478
 
477
479
  @document.count.should == 1
478
480
  end
@@ -481,7 +483,7 @@ class DocumentTest < Test::Unit::TestCase
481
483
  @doc1 = @document.create({:first_name => 'John', :last_name => 'Nunemaker', :age => '27'})
482
484
  @doc2 = @document.create({:first_name => 'Steve', :last_name => 'Smith', :age => '28'})
483
485
  @doc3 = @document.create({:first_name => 'Steph', :last_name => 'Nunemaker', :age => '26'})
484
- @document.delete([@doc1.id, @doc2.id])
486
+ @document.delete([@doc1._id, @doc2._id])
485
487
 
486
488
  @document.count.should == 1
487
489
  end
@@ -514,7 +516,7 @@ class DocumentTest < Test::Unit::TestCase
514
516
  setup do
515
517
  @doc1 = @document.create({:first_name => 'John', :last_name => 'Nunemaker', :age => '27'})
516
518
  @doc2 = @document.create({:first_name => 'Steve', :last_name => 'Smith', :age => '28'})
517
- @document.destroy(@doc1.id)
519
+ @document.destroy(@doc1._id)
518
520
  end
519
521
 
520
522
  should "remove document from collection" do
@@ -522,7 +524,7 @@ class DocumentTest < Test::Unit::TestCase
522
524
  end
523
525
 
524
526
  should "not remove other documents" do
525
- @document.find(@doc2.id).should_not be(nil)
527
+ @document.find(@doc2._id).should_not be(nil)
526
528
  end
527
529
  end
528
530
 
@@ -531,8 +533,8 @@ class DocumentTest < Test::Unit::TestCase
531
533
  @doc1 = @document.create({:first_name => 'John', :last_name => 'Nunemaker', :age => '27'})
532
534
  @doc2 = @document.create({:first_name => 'Steve', :last_name => 'Smith', :age => '28'})
533
535
  @doc3 = @document.create({:first_name => 'Steph', :last_name => 'Nunemaker', :age => '26'})
534
- @document.destroy(@doc1.id, @doc2.id)
535
-
536
+ @document.destroy(@doc1._id, @doc2._id)
537
+
536
538
  @document.count.should == 1
537
539
  end
538
540
 
@@ -540,7 +542,7 @@ class DocumentTest < Test::Unit::TestCase
540
542
  @doc1 = @document.create({:first_name => 'John', :last_name => 'Nunemaker', :age => '27'})
541
543
  @doc2 = @document.create({:first_name => 'Steve', :last_name => 'Smith', :age => '28'})
542
544
  @doc3 = @document.create({:first_name => 'Steph', :last_name => 'Nunemaker', :age => '26'})
543
- @document.destroy([@doc1.id, @doc2.id])
545
+ @document.destroy([@doc1._id, @doc2._id])
544
546
 
545
547
  @document.count.should == 1
546
548
  end
@@ -594,7 +596,7 @@ class DocumentTest < Test::Unit::TestCase
594
596
  context "many" do
595
597
  context "=> destroy" do
596
598
  setup do
597
- Property.key :thing_id, String
599
+ Property.key :thing_id, ObjectId
598
600
  Property.belongs_to :thing, :dependent => :destroy
599
601
  Thing.many :properties, :dependent => :destroy
600
602
 
@@ -617,7 +619,7 @@ class DocumentTest < Test::Unit::TestCase
617
619
 
618
620
  context "=> delete_all" do
619
621
  setup do
620
- Property.key :thing_id, String
622
+ Property.key :thing_id, ObjectId
621
623
  Property.belongs_to :thing
622
624
  Thing.has_many :properties, :dependent => :delete_all
623
625
 
@@ -640,7 +642,7 @@ class DocumentTest < Test::Unit::TestCase
640
642
 
641
643
  context "=> nullify" do
642
644
  setup do
643
- Property.key :thing_id, String
645
+ Property.key :thing_id, ObjectId
644
646
  Property.belongs_to :thing
645
647
  Thing.has_many :properties, :dependent => :nullify
646
648
 
@@ -665,7 +667,7 @@ class DocumentTest < Test::Unit::TestCase
665
667
  context "belongs_to" do
666
668
  context "=> destroy" do
667
669
  setup do
668
- Property.key :thing_id, String
670
+ Property.key :thing_id, ObjectId
669
671
  Property.belongs_to :thing, :dependent => :destroy
670
672
  Thing.has_many :properties
671
673
 
@@ -785,25 +787,24 @@ class DocumentTest < Test::Unit::TestCase
785
787
  end
786
788
 
787
789
  should "update attributes in the database" do
788
- from_db = @document.find(@doc.id)
789
- from_db.should == @doc
790
- from_db.first_name.should == 'John'
791
- from_db.age.should == 27
790
+ doc = @doc.reload
791
+ doc.should == @doc
792
+ doc.first_name.should == 'John'
793
+ doc.age.should == 27
792
794
  end
793
795
 
794
796
  should "allow to add custom attributes to the document" do
795
797
  @doc = @document.new(:first_name => 'David', :age => '26', :gender => 'male', :tags => [1, "2"])
796
798
  @doc.save
797
- from_db = @document.find(@doc.id)
798
- from_db.gender.should == 'male'
799
- from_db.tags.should == [1, "2"]
799
+ doc = @doc.reload
800
+ doc.gender.should == 'male'
801
+ doc.tags.should == [1, "2"]
800
802
  end
801
803
 
802
804
  should "allow to use custom methods to assign properties" do
803
- person = RealPerson.new(:realname => "David")
805
+ person = RealPerson.new(:realname => 'David')
804
806
  person.save
805
- from_db = RealPerson.find(person.id)
806
- from_db.name.should == "David"
807
+ person.reload.name.should == 'David'
807
808
  end
808
809
 
809
810
  context "with key of type date" do
@@ -833,17 +834,16 @@ class DocumentTest < Test::Unit::TestCase
833
834
  end
834
835
 
835
836
  should "update attributes in the database" do
836
- from_db = @document.find(@doc.id)
837
- from_db.first_name.should == 'Johnny'
838
- from_db.age.should == 30
837
+ doc = @doc.reload
838
+ doc.first_name.should == 'Johnny'
839
+ doc.age.should == 30
839
840
  end
840
841
 
841
842
  should "allow updating custom attributes" do
842
843
  @doc = @document.new(:first_name => 'David', :age => '26', :gender => 'male')
843
844
  @doc.gender = 'Male'
844
845
  @doc.save
845
- from_db = @document.find(@doc.id)
846
- from_db.gender.should == 'Male'
846
+ @doc.reload.gender.should == 'Male'
847
847
  end
848
848
  end
849
849
 
@@ -868,16 +868,15 @@ class DocumentTest < Test::Unit::TestCase
868
868
  end
869
869
 
870
870
  should "update attributes in the database" do
871
- from_db = @document.find(@doc.id)
872
- from_db.should == @doc
873
- from_db.first_name.should == 'Johnny'
874
- from_db.age.should == 30
871
+ doc = @doc.reload
872
+ doc.should == @doc
873
+ doc.first_name.should == 'Johnny'
874
+ doc.age.should == 30
875
875
  end
876
876
 
877
877
  should "allow updating custom attributes" do
878
878
  @doc.update_attributes(:gender => 'mALe')
879
- from_db = @document.find(@doc.id)
880
- from_db.gender.should == 'mALe'
879
+ @doc.reload.gender.should == 'mALe'
881
880
  end
882
881
  end
883
882
 
@@ -897,9 +896,9 @@ class DocumentTest < Test::Unit::TestCase
897
896
  end
898
897
 
899
898
  should "update attributes in the database" do
900
- from_db = @document.find(@doc.id)
901
- from_db.first_name.should == 'Johnny'
902
- from_db.age.should == 30
899
+ doc = @doc.reload
900
+ doc.first_name.should == 'Johnny'
901
+ doc.age.should == 30
903
902
  end
904
903
  end
905
904
 
@@ -1031,14 +1030,14 @@ class DocumentTest < Test::Unit::TestCase
1031
1030
  steph = DocDaughter.create(:name => 'Steph')
1032
1031
 
1033
1032
  lambda {
1034
- DocSon.find!(steph.id)
1033
+ DocSon.find!(steph._id)
1035
1034
  }.should raise_error(MongoMapper::DocumentNotFound)
1036
1035
  end
1037
1036
 
1038
1037
  should "not raise error for find with parent" do
1039
1038
  john = DocSon.create(:name => 'John')
1040
1039
 
1041
- DocParent.find!(john.id).should == john
1040
+ DocParent.find!(john._id).should == john
1042
1041
  end
1043
1042
 
1044
1043
  should "count scoped to class" do
@@ -1073,7 +1072,7 @@ class DocumentTest < Test::Unit::TestCase
1073
1072
  steph = DocDaughter.create(:name => 'Steph')
1074
1073
 
1075
1074
  lambda {
1076
- DocSon.destroy(steph.id)
1075
+ DocSon.destroy(steph._id)
1077
1076
  }.should raise_error(MongoMapper::DocumentNotFound)
1078
1077
  end
1079
1078
 
@@ -1082,7 +1081,7 @@ class DocumentTest < Test::Unit::TestCase
1082
1081
  steph = DocDaughter.create(:name => 'Steph')
1083
1082
 
1084
1083
  lambda {
1085
- DocSon.delete(steph.id)
1084
+ DocSon.delete(steph._id)
1086
1085
  }.should_not change { DocParent.count }
1087
1086
  end
1088
1087
 
@@ -1142,9 +1141,9 @@ class DocumentTest < Test::Unit::TestCase
1142
1141
  @document.update(doc._id, { :first_name => 'Johnny' })
1143
1142
  end
1144
1143
 
1145
- from_db = @document.find(doc.id)
1146
- from_db.created_at.should == old_created_at
1147
- from_db.updated_at.should_not == old_updated_at
1144
+ doc = doc.reload
1145
+ doc.created_at.should == old_created_at
1146
+ doc.updated_at.should_not == old_updated_at
1148
1147
  end
1149
1148
  end
1150
1149
 
@@ -1174,7 +1173,7 @@ class DocumentTest < Test::Unit::TestCase
1174
1173
  context "reload" do
1175
1174
  setup do
1176
1175
  @doc_instance_1 = @document.create({:first_name => 'Ryan', :last_name => 'Koopmans', :age => '37'})
1177
- @doc_instance_2 = @document.update(@doc_instance_1.id, {:age => '39'})
1176
+ @doc_instance_2 = @document.update(@doc_instance_1._id, {:age => '39'})
1178
1177
  end
1179
1178
 
1180
1179
  should "load fresh information from the database" do