mongo_mapper 0.7.4 → 0.7.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/Rakefile +1 -1
- data/lib/mongo_mapper.rb +1 -1
- data/lib/mongo_mapper/document.rb +4 -4
- data/lib/mongo_mapper/plugins/keys.rb +6 -2
- data/lib/mongo_mapper/version.rb +1 -1
- data/mongo_mapper.gemspec +5 -5
- data/test/functional/test_document.rb +16 -0
- data/test/unit/test_keys.rb +12 -0
- metadata +5 -6
data/Rakefile
CHANGED
@@ -13,7 +13,7 @@ Jeweler::Tasks.new do |gem|
|
|
13
13
|
gem.version = MongoMapper::Version
|
14
14
|
|
15
15
|
gem.add_dependency('activesupport', '>= 2.3.4')
|
16
|
-
gem.add_dependency('mongo', '0
|
16
|
+
gem.add_dependency('mongo', '1.0')
|
17
17
|
gem.add_dependency('jnunemaker-validatable', '1.8.4')
|
18
18
|
|
19
19
|
gem.add_development_dependency('json', '>= 1.2.3')
|
data/lib/mongo_mapper.rb
CHANGED
@@ -79,12 +79,12 @@ module MongoMapper
|
|
79
79
|
find(id)
|
80
80
|
end
|
81
81
|
|
82
|
-
def first_or_create(
|
83
|
-
first(
|
82
|
+
def first_or_create(args)
|
83
|
+
first(args) || create(args.reject { |key, value| !key?(key) })
|
84
84
|
end
|
85
85
|
|
86
|
-
def first_or_new(
|
87
|
-
first(
|
86
|
+
def first_or_new(args)
|
87
|
+
first(args) || new(args.reject { |key, value| !key?(key) })
|
88
88
|
end
|
89
89
|
|
90
90
|
def first(options={})
|
@@ -28,6 +28,10 @@ module MongoMapper
|
|
28
28
|
key
|
29
29
|
end
|
30
30
|
|
31
|
+
def key?(key)
|
32
|
+
keys.keys.include?(key.to_s)
|
33
|
+
end
|
34
|
+
|
31
35
|
def using_object_id?
|
32
36
|
object_id_key?(:_id)
|
33
37
|
end
|
@@ -147,7 +151,7 @@ module MongoMapper
|
|
147
151
|
module InstanceMethods
|
148
152
|
def initialize(attrs={}, from_database=false)
|
149
153
|
default_id_value(attrs)
|
150
|
-
|
154
|
+
|
151
155
|
if from_database
|
152
156
|
@new = false
|
153
157
|
self.attributes = attrs
|
@@ -155,7 +159,7 @@ module MongoMapper
|
|
155
159
|
@new = true
|
156
160
|
assign(attrs)
|
157
161
|
end
|
158
|
-
|
162
|
+
|
159
163
|
assign_type
|
160
164
|
end
|
161
165
|
|
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.5"
|
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-30}
|
13
13
|
s.default_executable = %q{mmconsole}
|
14
14
|
s.email = %q{nunemaker@gmail.com}
|
15
15
|
s.executables = ["mmconsole"]
|
@@ -183,7 +183,7 @@ Gem::Specification.new do |s|
|
|
183
183
|
|
184
184
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
185
185
|
s.add_runtime_dependency(%q<activesupport>, [">= 2.3.4"])
|
186
|
-
s.add_runtime_dependency(%q<mongo>, ["= 0
|
186
|
+
s.add_runtime_dependency(%q<mongo>, ["= 1.0"])
|
187
187
|
s.add_runtime_dependency(%q<jnunemaker-validatable>, ["= 1.8.4"])
|
188
188
|
s.add_development_dependency(%q<json>, [">= 1.2.3"])
|
189
189
|
s.add_development_dependency(%q<jnunemaker-matchy>, ["= 0.4.0"])
|
@@ -192,7 +192,7 @@ Gem::Specification.new do |s|
|
|
192
192
|
s.add_development_dependency(%q<mocha>, ["= 0.9.8"])
|
193
193
|
else
|
194
194
|
s.add_dependency(%q<activesupport>, [">= 2.3.4"])
|
195
|
-
s.add_dependency(%q<mongo>, ["= 0
|
195
|
+
s.add_dependency(%q<mongo>, ["= 1.0"])
|
196
196
|
s.add_dependency(%q<jnunemaker-validatable>, ["= 1.8.4"])
|
197
197
|
s.add_dependency(%q<json>, [">= 1.2.3"])
|
198
198
|
s.add_dependency(%q<jnunemaker-matchy>, ["= 0.4.0"])
|
@@ -202,7 +202,7 @@ Gem::Specification.new do |s|
|
|
202
202
|
end
|
203
203
|
else
|
204
204
|
s.add_dependency(%q<activesupport>, [">= 2.3.4"])
|
205
|
-
s.add_dependency(%q<mongo>, ["= 0
|
205
|
+
s.add_dependency(%q<mongo>, ["= 1.0"])
|
206
206
|
s.add_dependency(%q<jnunemaker-validatable>, ["= 1.8.4"])
|
207
207
|
s.add_dependency(%q<json>, [">= 1.2.3"])
|
208
208
|
s.add_dependency(%q<jnunemaker-matchy>, ["= 0.4.0"])
|
@@ -448,6 +448,15 @@ class DocumentTest < Test::Unit::TestCase
|
|
448
448
|
created.last_name.should == 'Nunemaker'
|
449
449
|
}.should change { @document.count }.by(1)
|
450
450
|
end
|
451
|
+
|
452
|
+
should "disregard non-keys when creating, but use them in the query" do
|
453
|
+
assert_nothing_raised do
|
454
|
+
@document.create(:first_name => 'John', :age => 9)
|
455
|
+
lambda {
|
456
|
+
@document.first_or_create(:first_name => 'John', :age.gt => 10).first_name.should == 'John'
|
457
|
+
}.should change { @document.count }.by(1)
|
458
|
+
end
|
459
|
+
end
|
451
460
|
end
|
452
461
|
|
453
462
|
context "first_or_new" do
|
@@ -467,6 +476,13 @@ class DocumentTest < Test::Unit::TestCase
|
|
467
476
|
created.should be_new
|
468
477
|
}.should_not change { @document.count }
|
469
478
|
end
|
479
|
+
|
480
|
+
should "disregard non-keys when initializing, but use them in the query" do
|
481
|
+
assert_nothing_raised do
|
482
|
+
@document.create(:first_name => 'John', :age => 9)
|
483
|
+
@document.first_or_new(:first_name => 'John', :age.gt => 10).first_name.should == 'John'
|
484
|
+
end
|
485
|
+
end
|
470
486
|
end
|
471
487
|
|
472
488
|
context "ClassMethods#delete (single document)" do
|
data/test/unit/test_keys.rb
CHANGED
@@ -22,6 +22,18 @@ end
|
|
22
22
|
class KeyTest < Test::Unit::TestCase
|
23
23
|
include MongoMapper::Plugins::Keys
|
24
24
|
|
25
|
+
context ".key?" do
|
26
|
+
should "be true if document has key" do
|
27
|
+
Address.key?(:city).should be_true
|
28
|
+
Address.key?('city').should be_true
|
29
|
+
end
|
30
|
+
|
31
|
+
should "be false if document does not have key" do
|
32
|
+
Address.key?(:foo).should be_false
|
33
|
+
Address.key?('foo').should be_false
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
25
37
|
context "Initializing a new key" do
|
26
38
|
should "allow setting the name" do
|
27
39
|
Key.new(:foo, String).name.should == 'foo'
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 7
|
8
|
-
-
|
9
|
-
version: 0.7.
|
8
|
+
- 5
|
9
|
+
version: 0.7.5
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- John Nunemaker
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-04-
|
17
|
+
date: 2010-04-30 00:00:00 -07:00
|
18
18
|
default_executable: mmconsole
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -39,10 +39,9 @@ dependencies:
|
|
39
39
|
- - "="
|
40
40
|
- !ruby/object:Gem::Version
|
41
41
|
segments:
|
42
|
-
- 0
|
43
|
-
- 20
|
44
42
|
- 1
|
45
|
-
|
43
|
+
- 0
|
44
|
+
version: "1.0"
|
46
45
|
type: :runtime
|
47
46
|
version_requirements: *id002
|
48
47
|
- !ruby/object:Gem::Dependency
|