mongo_mapper 0.7.3 → 0.7.4
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/Rakefile +3 -2
- data/lib/mongo_mapper.rb +2 -3
- data/lib/mongo_mapper/plugins/associations.rb +10 -1
- data/lib/mongo_mapper/plugins/associations/base.rb +2 -2
- data/lib/mongo_mapper/plugins/associations/many_documents_proxy.rb +12 -3
- data/lib/mongo_mapper/plugins/associations/one_embedded_proxy.rb +41 -0
- data/lib/mongo_mapper/plugins/associations/one_proxy.rb +1 -0
- data/lib/mongo_mapper/plugins/associations/proxy.rb +8 -2
- data/lib/mongo_mapper/plugins/callbacks.rb +7 -3
- data/lib/mongo_mapper/plugins/descendants.rb +2 -2
- data/lib/mongo_mapper/plugins/keys.rb +14 -7
- data/lib/mongo_mapper/plugins/modifiers.rb +30 -14
- data/lib/mongo_mapper/plugins/protected.rb +1 -1
- data/lib/mongo_mapper/plugins/serialization.rb +1 -1
- data/lib/mongo_mapper/query.rb +27 -19
- data/lib/mongo_mapper/support.rb +10 -6
- data/lib/mongo_mapper/version.rb +1 -1
- data/mongo_mapper.gemspec +14 -8
- data/test/functional/associations/test_belongs_to_polymorphic_proxy.rb +1 -1
- data/test/functional/associations/test_belongs_to_proxy.rb +1 -1
- data/test/functional/associations/test_many_documents_proxy.rb +100 -17
- data/test/functional/associations/test_one_embedded_proxy.rb +68 -0
- data/test/functional/associations/test_one_proxy.rb +48 -13
- data/test/functional/test_binary.rb +1 -1
- data/test/functional/test_document.rb +7 -7
- data/test/functional/test_embedded_document.rb +8 -0
- data/test/functional/test_identity_map.rb +2 -2
- data/test/functional/test_modifiers.rb +249 -185
- data/test/functional/test_protected.rb +4 -0
- data/test/functional/test_string_id_compatibility.rb +1 -1
- data/test/support/custom_matchers.rb +0 -18
- data/test/test_helper.rb +6 -4
- data/test/unit/associations/test_base.rb +7 -2
- data/test/unit/test_document.rb +5 -5
- data/test/unit/test_embedded_document.rb +7 -7
- data/test/unit/test_query.rb +17 -7
- data/test/unit/test_support.rb +26 -14
- metadata +33 -16
data/lib/mongo_mapper/support.rb
CHANGED
@@ -11,10 +11,10 @@ end
|
|
11
11
|
|
12
12
|
class Binary
|
13
13
|
def self.to_mongo(value)
|
14
|
-
if value.is_a?(
|
14
|
+
if value.is_a?(BSON::Binary)
|
15
15
|
value
|
16
16
|
else
|
17
|
-
value.nil? ? nil :
|
17
|
+
value.nil? ? nil : BSON::Binary.new(value)
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
@@ -129,10 +129,10 @@ class ObjectId
|
|
129
129
|
def self.to_mongo(value)
|
130
130
|
if value.blank?
|
131
131
|
nil
|
132
|
-
elsif value.is_a?(
|
132
|
+
elsif value.is_a?(BSON::ObjectID)
|
133
133
|
value
|
134
134
|
else
|
135
|
-
|
135
|
+
BSON::ObjectID.from_string(value.to_s)
|
136
136
|
end
|
137
137
|
end
|
138
138
|
|
@@ -198,11 +198,15 @@ class Time
|
|
198
198
|
end
|
199
199
|
end
|
200
200
|
|
201
|
-
class
|
201
|
+
class BSON::ObjectID
|
202
202
|
alias_method :original_to_json, :to_json
|
203
203
|
|
204
|
+
def as_json(options=nil)
|
205
|
+
to_s
|
206
|
+
end
|
207
|
+
|
204
208
|
def to_json(options = nil)
|
205
|
-
|
209
|
+
as_json.to_json
|
206
210
|
end
|
207
211
|
end
|
208
212
|
|
data/lib/mongo_mapper/version.rb
CHANGED
data/mongo_mapper.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{mongo_mapper}
|
8
|
-
s.version = "0.7.
|
8
|
+
s.version = "0.7.4"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["John Nunemaker"]
|
12
|
-
s.date = %q{2010-04-
|
12
|
+
s.date = %q{2010-04-18}
|
13
13
|
s.default_executable = %q{mmconsole}
|
14
14
|
s.email = %q{nunemaker@gmail.com}
|
15
15
|
s.executables = ["mmconsole"]
|
@@ -39,6 +39,7 @@ Gem::Specification.new do |s|
|
|
39
39
|
"lib/mongo_mapper/plugins/associations/many_embedded_polymorphic_proxy.rb",
|
40
40
|
"lib/mongo_mapper/plugins/associations/many_embedded_proxy.rb",
|
41
41
|
"lib/mongo_mapper/plugins/associations/many_polymorphic_proxy.rb",
|
42
|
+
"lib/mongo_mapper/plugins/associations/one_embedded_proxy.rb",
|
42
43
|
"lib/mongo_mapper/plugins/associations/one_proxy.rb",
|
43
44
|
"lib/mongo_mapper/plugins/associations/proxy.rb",
|
44
45
|
"lib/mongo_mapper/plugins/callbacks.rb",
|
@@ -78,6 +79,7 @@ Gem::Specification.new do |s|
|
|
78
79
|
"test/functional/associations/test_many_embedded_polymorphic_proxy.rb",
|
79
80
|
"test/functional/associations/test_many_embedded_proxy.rb",
|
80
81
|
"test/functional/associations/test_many_polymorphic_proxy.rb",
|
82
|
+
"test/functional/associations/test_one_embedded_proxy.rb",
|
81
83
|
"test/functional/associations/test_one_proxy.rb",
|
82
84
|
"test/functional/test_associations.rb",
|
83
85
|
"test/functional/test_binary.rb",
|
@@ -133,6 +135,7 @@ Gem::Specification.new do |s|
|
|
133
135
|
"test/functional/associations/test_many_embedded_polymorphic_proxy.rb",
|
134
136
|
"test/functional/associations/test_many_embedded_proxy.rb",
|
135
137
|
"test/functional/associations/test_many_polymorphic_proxy.rb",
|
138
|
+
"test/functional/associations/test_one_embedded_proxy.rb",
|
136
139
|
"test/functional/associations/test_one_proxy.rb",
|
137
140
|
"test/functional/test_associations.rb",
|
138
141
|
"test/functional/test_binary.rb",
|
@@ -180,16 +183,18 @@ Gem::Specification.new do |s|
|
|
180
183
|
|
181
184
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
182
185
|
s.add_runtime_dependency(%q<activesupport>, [">= 2.3.4"])
|
183
|
-
s.add_runtime_dependency(%q<mongo>, ["= 0.
|
184
|
-
s.add_runtime_dependency(%q<jnunemaker-validatable>, ["= 1.8.
|
186
|
+
s.add_runtime_dependency(%q<mongo>, ["= 0.20.1"])
|
187
|
+
s.add_runtime_dependency(%q<jnunemaker-validatable>, ["= 1.8.4"])
|
188
|
+
s.add_development_dependency(%q<json>, [">= 1.2.3"])
|
185
189
|
s.add_development_dependency(%q<jnunemaker-matchy>, ["= 0.4.0"])
|
186
190
|
s.add_development_dependency(%q<shoulda>, ["= 2.10.2"])
|
187
191
|
s.add_development_dependency(%q<timecop>, ["= 0.3.1"])
|
188
192
|
s.add_development_dependency(%q<mocha>, ["= 0.9.8"])
|
189
193
|
else
|
190
194
|
s.add_dependency(%q<activesupport>, [">= 2.3.4"])
|
191
|
-
s.add_dependency(%q<mongo>, ["= 0.
|
192
|
-
s.add_dependency(%q<jnunemaker-validatable>, ["= 1.8.
|
195
|
+
s.add_dependency(%q<mongo>, ["= 0.20.1"])
|
196
|
+
s.add_dependency(%q<jnunemaker-validatable>, ["= 1.8.4"])
|
197
|
+
s.add_dependency(%q<json>, [">= 1.2.3"])
|
193
198
|
s.add_dependency(%q<jnunemaker-matchy>, ["= 0.4.0"])
|
194
199
|
s.add_dependency(%q<shoulda>, ["= 2.10.2"])
|
195
200
|
s.add_dependency(%q<timecop>, ["= 0.3.1"])
|
@@ -197,8 +202,9 @@ Gem::Specification.new do |s|
|
|
197
202
|
end
|
198
203
|
else
|
199
204
|
s.add_dependency(%q<activesupport>, [">= 2.3.4"])
|
200
|
-
s.add_dependency(%q<mongo>, ["= 0.
|
201
|
-
s.add_dependency(%q<jnunemaker-validatable>, ["= 1.8.
|
205
|
+
s.add_dependency(%q<mongo>, ["= 0.20.1"])
|
206
|
+
s.add_dependency(%q<jnunemaker-validatable>, ["= 1.8.4"])
|
207
|
+
s.add_dependency(%q<json>, [">= 1.2.3"])
|
202
208
|
s.add_dependency(%q<jnunemaker-matchy>, ["= 0.4.0"])
|
203
209
|
s.add_dependency(%q<shoulda>, ["= 2.10.2"])
|
204
210
|
s.add_dependency(%q<timecop>, ["= 0.3.1"])
|
@@ -52,7 +52,7 @@ class BelongsToProxyTest < Test::Unit::TestCase
|
|
52
52
|
end
|
53
53
|
|
54
54
|
should "return nil if id set but document not found" do
|
55
|
-
id =
|
55
|
+
id = BSON::ObjectID.new
|
56
56
|
@comment_class.new(:name => 'Foo', :post_id => id).post.nil?.should be_true
|
57
57
|
end
|
58
58
|
|
@@ -5,6 +5,16 @@ class ManyDocumentsProxyTest < Test::Unit::TestCase
|
|
5
5
|
def setup
|
6
6
|
Project.collection.remove
|
7
7
|
Status.collection.remove
|
8
|
+
|
9
|
+
@pet_class = Doc do
|
10
|
+
key :name, String
|
11
|
+
key :owner_id, ObjectId
|
12
|
+
end
|
13
|
+
|
14
|
+
@owner_class = Doc do
|
15
|
+
key :name, String
|
16
|
+
end
|
17
|
+
@owner_class.many :pets, :class => @pet_class, :foreign_key => :owner_id, :order => 'name'
|
8
18
|
end
|
9
19
|
|
10
20
|
should "default reader to empty array" do
|
@@ -12,6 +22,32 @@ class ManyDocumentsProxyTest < Test::Unit::TestCase
|
|
12
22
|
project.statuses.should == []
|
13
23
|
end
|
14
24
|
|
25
|
+
should "allow assignment of many associated documents using a hash" do
|
26
|
+
person_attributes = {
|
27
|
+
'name' => 'Mr. Pet Lover',
|
28
|
+
'pets' => [
|
29
|
+
{'name' => 'Jimmy', 'species' => 'Cocker Spainel'},
|
30
|
+
{'name' => 'Sasha', 'species' => 'Siberian Husky'},
|
31
|
+
]
|
32
|
+
}
|
33
|
+
|
34
|
+
owner = @owner_class.new(person_attributes)
|
35
|
+
owner.name.should == 'Mr. Pet Lover'
|
36
|
+
owner.pets[0].name.should == 'Jimmy'
|
37
|
+
owner.pets[0].species.should == 'Cocker Spainel'
|
38
|
+
owner.pets[1].name.should == 'Sasha'
|
39
|
+
owner.pets[1].species.should == 'Siberian Husky'
|
40
|
+
|
41
|
+
owner.save.should be_true
|
42
|
+
owner.reload
|
43
|
+
|
44
|
+
owner.name.should == 'Mr. Pet Lover'
|
45
|
+
owner.pets[0].name.should == 'Jimmy'
|
46
|
+
owner.pets[0].species.should == 'Cocker Spainel'
|
47
|
+
owner.pets[1].name.should == 'Sasha'
|
48
|
+
owner.pets[1].species.should == 'Siberian Husky'
|
49
|
+
end
|
50
|
+
|
15
51
|
should "allow adding to association like it was an array" do
|
16
52
|
project = Project.new
|
17
53
|
project.statuses << Status.new(:name => 'Foo1!')
|
@@ -20,26 +56,60 @@ class ManyDocumentsProxyTest < Test::Unit::TestCase
|
|
20
56
|
project.statuses.size.should == 3
|
21
57
|
end
|
22
58
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
59
|
+
context "replacing the association" do
|
60
|
+
context "with objects of the class" do
|
61
|
+
should "work" do
|
62
|
+
project = Project.new
|
63
|
+
project.statuses = [Status.new(:name => "ready")]
|
64
|
+
project.save.should be_true
|
65
|
+
|
66
|
+
project.reload
|
67
|
+
project.statuses.size.should == 1
|
68
|
+
project.statuses[0].name.should == "ready"
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
context "with Hashes" do
|
73
|
+
should "convert to objects of the class and work" do
|
74
|
+
project = Project.new
|
75
|
+
project.statuses = [{ 'name' => 'ready' }]
|
76
|
+
project.save.should be_true
|
27
77
|
|
28
|
-
|
29
|
-
|
30
|
-
|
78
|
+
project.reload
|
79
|
+
project.statuses.size.should == 1
|
80
|
+
project.statuses[0].name.should == "ready"
|
81
|
+
end
|
82
|
+
end
|
31
83
|
end
|
32
84
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
85
|
+
context "using <<, push and concat" do
|
86
|
+
context "with objects of the class" do
|
87
|
+
should "correctly assign foreign key" do
|
88
|
+
project = Project.new
|
89
|
+
project.statuses << Status.new(:name => '<<')
|
90
|
+
project.statuses.push Status.new(:name => 'push')
|
91
|
+
project.statuses.concat Status.new(:name => 'concat')
|
92
|
+
|
93
|
+
project.reload
|
94
|
+
project.statuses[0].project_id.should == project.id
|
95
|
+
project.statuses[1].project_id.should == project.id
|
96
|
+
project.statuses[2].project_id.should == project.id
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
context "with Hashes" do
|
101
|
+
should "correctly convert to objects and assign foreign key" do
|
102
|
+
project = Project.new
|
103
|
+
project.statuses << { 'name' => '<<' }
|
104
|
+
project.statuses.push( { 'name' => 'push' })
|
105
|
+
project.statuses.concat({ 'name' => 'concat' })
|
106
|
+
|
107
|
+
project.reload
|
108
|
+
project.statuses[0].project_id.should == project.id
|
109
|
+
project.statuses[1].project_id.should == project.id
|
110
|
+
project.statuses[2].project_id.should == project.id
|
111
|
+
end
|
112
|
+
end
|
43
113
|
end
|
44
114
|
|
45
115
|
context "build" do
|
@@ -62,6 +132,19 @@ class ManyDocumentsProxyTest < Test::Unit::TestCase
|
|
62
132
|
status.save!
|
63
133
|
project.statuses.size.should == 1
|
64
134
|
end
|
135
|
+
|
136
|
+
should "update collection without save" do
|
137
|
+
project = Project.create
|
138
|
+
project.statuses.build(:name => 'Foo')
|
139
|
+
project.statuses.size.should == 1
|
140
|
+
end
|
141
|
+
|
142
|
+
should "save built document when saving parent" do
|
143
|
+
project = Project.create
|
144
|
+
status = project.statuses.build(:name => 'Foo')
|
145
|
+
project.save!
|
146
|
+
status.should_not be_new
|
147
|
+
end
|
65
148
|
end
|
66
149
|
|
67
150
|
context "create" do
|
@@ -0,0 +1,68 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class OneEmbeddedProxyTest < Test::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
@post_class = Doc('Post') do
|
6
|
+
key :title, String
|
7
|
+
end
|
8
|
+
@author_class = EDoc('Author') do
|
9
|
+
key :name, String
|
10
|
+
embedded_in :post
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
should "default to nil" do
|
15
|
+
@post_class.one :author, :class => @author_class
|
16
|
+
@post_class.new.author.should be_nil
|
17
|
+
end
|
18
|
+
|
19
|
+
should "be able to build" do
|
20
|
+
@post_class.one :author, :class => @author_class
|
21
|
+
|
22
|
+
post = @post_class.create
|
23
|
+
author = post.author.build(:name => "John")
|
24
|
+
post.author.should be_instance_of(@author_class)
|
25
|
+
post.author.should be_new
|
26
|
+
post.author.name.should == 'John'
|
27
|
+
post.author.should == author
|
28
|
+
post.author.post.should == post
|
29
|
+
end
|
30
|
+
|
31
|
+
should "send object id to target" do
|
32
|
+
@post_class.one :author, :class => @author_class
|
33
|
+
|
34
|
+
post = @post_class.new
|
35
|
+
author = @author_class.new(:name => 'Frank')
|
36
|
+
post.author = author
|
37
|
+
|
38
|
+
post.author.object_id.should == post.author.target.object_id
|
39
|
+
end
|
40
|
+
|
41
|
+
should "be able to replace the association" do
|
42
|
+
@post_class.one :author, :class => @author_class
|
43
|
+
|
44
|
+
post = @post_class.new
|
45
|
+
author = @author_class.new(:name => 'Frank')
|
46
|
+
post.author = author
|
47
|
+
post.save
|
48
|
+
post.reload
|
49
|
+
|
50
|
+
post.author.should == author
|
51
|
+
post.author.nil?.should be_false
|
52
|
+
|
53
|
+
new_author = @author_class.new(:name => 'Emily')
|
54
|
+
post.author = new_author
|
55
|
+
post.author.should == new_author
|
56
|
+
end
|
57
|
+
|
58
|
+
should "have boolean method for testing presence" do
|
59
|
+
@post_class.one :author, :class => @author_class
|
60
|
+
|
61
|
+
post = @post_class.new
|
62
|
+
post.author?.should be_false
|
63
|
+
|
64
|
+
post.author = @author_class.new(:name => 'Frank')
|
65
|
+
post.author?.should be_true
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
@@ -24,23 +24,57 @@ class OneProxyTest < Test::Unit::TestCase
|
|
24
24
|
|
25
25
|
post.author.object_id.should == post.author.target.object_id
|
26
26
|
end
|
27
|
-
|
28
|
-
should "
|
27
|
+
|
28
|
+
should "allow assignment of associated document using a hash" do
|
29
29
|
@post_class.one :author, :class => @author_class
|
30
|
-
|
31
|
-
post = @post_class.new
|
32
|
-
author
|
33
|
-
|
30
|
+
|
31
|
+
post = @post_class.new('author' => { 'name' => 'Frank' })
|
32
|
+
post.author.name.should == 'Frank'
|
33
|
+
|
34
|
+
post.save.should be_true
|
34
35
|
post.reload
|
35
|
-
|
36
|
-
post.author.should ==
|
37
|
-
post.author.nil?.should be_false
|
38
|
-
|
39
|
-
new_author = @author_class.new(:name => 'Emily')
|
40
|
-
post.author = new_author
|
41
|
-
post.author.should == new_author
|
36
|
+
|
37
|
+
post.author.name.should == 'Frank'
|
42
38
|
end
|
43
39
|
|
40
|
+
context "replacing the association" do
|
41
|
+
context "with an object of the class" do
|
42
|
+
should "work" do
|
43
|
+
@post_class.one :author, :class => @author_class
|
44
|
+
|
45
|
+
post = @post_class.new
|
46
|
+
author = @author_class.new(:name => 'Frank')
|
47
|
+
post.author = author
|
48
|
+
post.reload
|
49
|
+
|
50
|
+
post.author.should == author
|
51
|
+
post.author.nil?.should be_false
|
52
|
+
|
53
|
+
new_author = @author_class.new(:name => 'Emily')
|
54
|
+
post.author = new_author
|
55
|
+
post.author.should == new_author
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
context "with a Hash" do
|
60
|
+
should "convert to an object of the class and work" do
|
61
|
+
@post_class.one :author, :class => @author_class
|
62
|
+
|
63
|
+
post = @post_class.new
|
64
|
+
author = { 'name' => 'Frank' }
|
65
|
+
post.author = author
|
66
|
+
post.reload
|
67
|
+
|
68
|
+
post.author.name.should == 'Frank'
|
69
|
+
post.author.nil?.should be_false
|
70
|
+
|
71
|
+
new_author = { 'name' => 'Emily' }
|
72
|
+
post.author = new_author
|
73
|
+
post.author.name.should == 'Emily'
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
44
78
|
should "have boolean method for testing presence" do
|
45
79
|
@post_class.one :author, :class => @author_class
|
46
80
|
|
@@ -58,6 +92,7 @@ class OneProxyTest < Test::Unit::TestCase
|
|
58
92
|
post = @post_class.create
|
59
93
|
author = @author_class.create(:name => 'Frank', :primary => false, :post_id => post.id)
|
60
94
|
primary = @author_class.create(:name => 'Bill', :primary => true, :post_id => post.id)
|
95
|
+
post.reload
|
61
96
|
post.author.should == author
|
62
97
|
post.primary_author.should == primary
|
63
98
|
end
|
@@ -10,7 +10,7 @@ class BinaryTest < Test::Unit::TestCase
|
|
10
10
|
doc.save
|
11
11
|
|
12
12
|
doc = doc.reload
|
13
|
-
doc.contents.to_s.should == ByteBuffer.new('010101').to_s
|
13
|
+
doc.contents.to_s.should == BSON::ByteBuffer.new('010101').to_s
|
14
14
|
end
|
15
15
|
|
16
16
|
context "Saving a document with a blank binary value" do
|
@@ -142,8 +142,8 @@ class DocumentTest < Test::Unit::TestCase
|
|
142
142
|
end
|
143
143
|
|
144
144
|
should "automatically set id" do
|
145
|
-
@doc_instance.id.should be_instance_of(
|
146
|
-
@doc_instance._id.should be_instance_of(
|
145
|
+
@doc_instance.id.should be_instance_of(BSON::ObjectID)
|
146
|
+
@doc_instance._id.should be_instance_of(BSON::ObjectID)
|
147
147
|
end
|
148
148
|
|
149
149
|
should "no longer be new?" do
|
@@ -303,12 +303,12 @@ class DocumentTest < Test::Unit::TestCase
|
|
303
303
|
end
|
304
304
|
|
305
305
|
should "compact not found when using find" do
|
306
|
-
@document.find(@doc1._id,
|
306
|
+
@document.find(@doc1._id, BSON::ObjectID.new.to_s).should == [@doc1]
|
307
307
|
end
|
308
308
|
|
309
309
|
should "raise error if not all found when using find!" do
|
310
310
|
assert_raises(MongoMapper::DocumentNotFound) do
|
311
|
-
@document.find!(@doc1._id,
|
311
|
+
@document.find!(@doc1._id, BSON::ObjectID.new.to_s)
|
312
312
|
end
|
313
313
|
end
|
314
314
|
|
@@ -641,7 +641,7 @@ class DocumentTest < Test::Unit::TestCase
|
|
641
641
|
end
|
642
642
|
|
643
643
|
should "assign an id for the document" do
|
644
|
-
@doc.id.should be_instance_of(
|
644
|
+
@doc.id.should be_instance_of(BSON::ObjectID)
|
645
645
|
end
|
646
646
|
|
647
647
|
should "save attributes" do
|
@@ -709,7 +709,7 @@ class DocumentTest < Test::Unit::TestCase
|
|
709
709
|
end
|
710
710
|
|
711
711
|
should "assign an id for the document" do
|
712
|
-
@doc.id.should be_instance_of(
|
712
|
+
@doc.id.should be_instance_of(BSON::ObjectID)
|
713
713
|
end
|
714
714
|
|
715
715
|
should "save attributes" do
|
@@ -1180,7 +1180,7 @@ class DocumentTest < Test::Unit::TestCase
|
|
1180
1180
|
|
1181
1181
|
context "database has keys not defined in model" do
|
1182
1182
|
setup do
|
1183
|
-
@id =
|
1183
|
+
@id = BSON::ObjectID.new
|
1184
1184
|
@document.collection.insert({
|
1185
1185
|
:_id => @id,
|
1186
1186
|
:first_name => 'John',
|