mongo_doc 0.3.0 → 0.3.1

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/README.textile CHANGED
@@ -105,7 +105,7 @@ h2. Installation
105
105
 
106
106
  MongoDoc *requires* mongoDB v1.3.2 or later.
107
107
 
108
- bc. sudo gem install mongodoc
108
+ bc. sudo gem install mongo_doc
109
109
 
110
110
  h2. Connecting
111
111
 
data/Rakefile CHANGED
@@ -1,4 +1,3 @@
1
- require 'rubygems'
2
1
  require 'rake'
3
2
 
4
3
  begin
@@ -10,6 +9,7 @@ begin
10
9
  gem.email = "leshill@gmail.com"
11
10
  gem.homepage = "http://github.com/leshill/mongodoc"
12
11
  gem.authors = ["Les Hill"]
12
+ gem.add_dependency "activesupport", ">= 2.3.4"
13
13
  gem.add_dependency "mongo", "= 0.19"
14
14
  gem.add_dependency "mongo_ext", "= 0.19"
15
15
  gem.add_dependency "durran-validatable", "= 2.0.1"
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.0
1
+ 0.3.1
@@ -52,3 +52,6 @@ Then /^the query result is the document '(.*)'$/ do |name|
52
52
  end
53
53
  end
54
54
 
55
+ Then /^the query (is|is not) (empty|blank)$/ do |is, empty|
56
+ query.send("#{empty}?").should == (is == 'is')
57
+ end
@@ -126,3 +126,11 @@ Feature: MongoDoc::Base
126
126
  Scenario: Using skip on results
127
127
  When I query contacts with criteria all('interests' => ['ruby', 'rails']).skip(1)
128
128
  Then the size of the query result is 2
129
+
130
+ Scenario: Is a criteria blank?
131
+ When I query contacts with criteria all('interests' => ['wii'])
132
+ Then the query is blank
133
+
134
+ Scenario: Is a criteria empty?
135
+ When I query contacts with criteria all('interests' => ['ruby'])
136
+ Then the query is not empty
data/lib/mongo_doc.rb CHANGED
@@ -1,17 +1,10 @@
1
- require 'rubygems'
2
-
3
- gem 'mongo', '0.19'
4
- gem 'mongo_ext', '0.19'
5
- gem 'durran-validatable', '2.0.1'
6
- gem 'leshill-will_paginate', '2.3.11'
7
-
8
1
  require 'mongo'
9
2
  require 'active_support'
10
3
  require 'validatable'
11
4
  require 'will_paginate/collection'
12
5
 
13
6
  module MongoDoc
14
- VERSION = '0.3.0'
7
+ VERSION = '0.3.1'
15
8
  end
16
9
 
17
10
  require 'mongo_doc/connection'
@@ -39,6 +39,17 @@ module MongoDoc
39
39
  @count ||= collection.find(selector, options).count
40
40
  end
41
41
 
42
+ # Determine if the context is empty or blank given the criteria. Will
43
+ # perform a quick has_one asking only for the id.
44
+ #
45
+ # Example:
46
+ #
47
+ # <tt>context.blank?</tt>
48
+ def empty?
49
+ collection.find_one(selector, options).nil?
50
+ end
51
+ alias blank? empty?
52
+
42
53
  # Execute the context. This will take the selector and options
43
54
  # and pass them on to the Ruby driver's +find()+ method on the collection. The
44
55
  # collection itself will be retrieved from the class provided, and once the
@@ -31,7 +31,9 @@ module Mongoid #:nodoc:
31
31
 
32
32
  delegate \
33
33
  :aggregate,
34
+ :blank?,
34
35
  :count,
36
+ :empty?,
35
37
  :execute,
36
38
  :first,
37
39
  :group,
@@ -76,17 +78,6 @@ module Mongoid #:nodoc:
76
78
  end
77
79
  end
78
80
 
79
- # Returns true if the criteria is empty.
80
- #
81
- # Example:
82
- #
83
- # <tt>criteria.blank?</tt>
84
- def blank?
85
- count < 1
86
- end
87
-
88
- alias :empty? :blank?
89
-
90
81
  # Return or create the context in which this criteria should be executed.
91
82
  #
92
83
  # This will return an Enumerable context if the class is embedded,
data/mongo_doc.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{mongo_doc}
8
- s.version = "0.3.0"
8
+ s.version = "0.3.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Les Hill"]
12
- s.date = %q{2010-03-02}
12
+ s.date = %q{2010-03-06}
13
13
  s.description = %q{ODM for MongoDB}
14
14
  s.email = %q{leshill@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -179,6 +179,7 @@ Gem::Specification.new do |s|
179
179
  s.specification_version = 3
180
180
 
181
181
  if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
182
+ s.add_runtime_dependency(%q<activesupport>, [">= 2.3.4"])
182
183
  s.add_runtime_dependency(%q<mongo>, ["= 0.19"])
183
184
  s.add_runtime_dependency(%q<mongo_ext>, ["= 0.19"])
184
185
  s.add_runtime_dependency(%q<durran-validatable>, ["= 2.0.1"])
@@ -186,6 +187,7 @@ Gem::Specification.new do |s|
186
187
  s.add_development_dependency(%q<rspec>, ["= 1.3.0"])
187
188
  s.add_development_dependency(%q<cucumber>, ["= 0.6.2"])
188
189
  else
190
+ s.add_dependency(%q<activesupport>, [">= 2.3.4"])
189
191
  s.add_dependency(%q<mongo>, ["= 0.19"])
190
192
  s.add_dependency(%q<mongo_ext>, ["= 0.19"])
191
193
  s.add_dependency(%q<durran-validatable>, ["= 2.0.1"])
@@ -194,6 +196,7 @@ Gem::Specification.new do |s|
194
196
  s.add_dependency(%q<cucumber>, ["= 0.6.2"])
195
197
  end
196
198
  else
199
+ s.add_dependency(%q<activesupport>, [">= 2.3.4"])
197
200
  s.add_dependency(%q<mongo>, ["= 0.19"])
198
201
  s.add_dependency(%q<mongo_ext>, ["= 0.19"])
199
202
  s.add_dependency(%q<durran-validatable>, ["= 2.0.1"])
@@ -194,5 +194,22 @@ describe "MongoDoc::Contexts::MongoDoc" do
194
194
  context.send(:grouped, op, field, reduce)
195
195
  end
196
196
  end
197
+
198
+ context "#empty? or #blank?" do
199
+ it "delegates to find_one" do
200
+ collection.should_receive(:find_one).with({}, {})
201
+ context.empty?
202
+ end
203
+
204
+ it "returns true if find_one returns no result" do
205
+ collection.stub(:find_one).and_return(nil)
206
+ context.should be_blank
207
+ end
208
+
209
+ it "returns false if find_one returns any result" do
210
+ collection.stub(:find_one).and_return(stub('result'))
211
+ context.should_not be_empty
212
+ end
213
+ end
197
214
  end
198
215
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 3
8
- - 0
9
- version: 0.3.0
8
+ - 1
9
+ version: 0.3.1
10
10
  platform: ruby
11
11
  authors:
12
12
  - Les Hill
@@ -14,13 +14,27 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-03-02 00:00:00 -05:00
17
+ date: 2010-03-06 00:00:00 -05:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
- name: mongo
21
+ name: activesupport
22
22
  prerelease: false
23
23
  requirement: &id001 !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ segments:
28
+ - 2
29
+ - 3
30
+ - 4
31
+ version: 2.3.4
32
+ type: :runtime
33
+ version_requirements: *id001
34
+ - !ruby/object:Gem::Dependency
35
+ name: mongo
36
+ prerelease: false
37
+ requirement: &id002 !ruby/object:Gem::Requirement
24
38
  requirements:
25
39
  - - "="
26
40
  - !ruby/object:Gem::Version
@@ -29,11 +43,11 @@ dependencies:
29
43
  - 19
30
44
  version: "0.19"
31
45
  type: :runtime
32
- version_requirements: *id001
46
+ version_requirements: *id002
33
47
  - !ruby/object:Gem::Dependency
34
48
  name: mongo_ext
35
49
  prerelease: false
36
- requirement: &id002 !ruby/object:Gem::Requirement
50
+ requirement: &id003 !ruby/object:Gem::Requirement
37
51
  requirements:
38
52
  - - "="
39
53
  - !ruby/object:Gem::Version
@@ -42,11 +56,11 @@ dependencies:
42
56
  - 19
43
57
  version: "0.19"
44
58
  type: :runtime
45
- version_requirements: *id002
59
+ version_requirements: *id003
46
60
  - !ruby/object:Gem::Dependency
47
61
  name: durran-validatable
48
62
  prerelease: false
49
- requirement: &id003 !ruby/object:Gem::Requirement
63
+ requirement: &id004 !ruby/object:Gem::Requirement
50
64
  requirements:
51
65
  - - "="
52
66
  - !ruby/object:Gem::Version
@@ -56,11 +70,11 @@ dependencies:
56
70
  - 1
57
71
  version: 2.0.1
58
72
  type: :runtime
59
- version_requirements: *id003
73
+ version_requirements: *id004
60
74
  - !ruby/object:Gem::Dependency
61
75
  name: leshill-will_paginate
62
76
  prerelease: false
63
- requirement: &id004 !ruby/object:Gem::Requirement
77
+ requirement: &id005 !ruby/object:Gem::Requirement
64
78
  requirements:
65
79
  - - "="
66
80
  - !ruby/object:Gem::Version
@@ -70,11 +84,11 @@ dependencies:
70
84
  - 11
71
85
  version: 2.3.11
72
86
  type: :runtime
73
- version_requirements: *id004
87
+ version_requirements: *id005
74
88
  - !ruby/object:Gem::Dependency
75
89
  name: rspec
76
90
  prerelease: false
77
- requirement: &id005 !ruby/object:Gem::Requirement
91
+ requirement: &id006 !ruby/object:Gem::Requirement
78
92
  requirements:
79
93
  - - "="
80
94
  - !ruby/object:Gem::Version
@@ -84,11 +98,11 @@ dependencies:
84
98
  - 0
85
99
  version: 1.3.0
86
100
  type: :development
87
- version_requirements: *id005
101
+ version_requirements: *id006
88
102
  - !ruby/object:Gem::Dependency
89
103
  name: cucumber
90
104
  prerelease: false
91
- requirement: &id006 !ruby/object:Gem::Requirement
105
+ requirement: &id007 !ruby/object:Gem::Requirement
92
106
  requirements:
93
107
  - - "="
94
108
  - !ruby/object:Gem::Version
@@ -98,7 +112,7 @@ dependencies:
98
112
  - 2
99
113
  version: 0.6.2
100
114
  type: :development
101
- version_requirements: *id006
115
+ version_requirements: *id007
102
116
  description: ODM for MongoDB
103
117
  email: leshill@gmail.com
104
118
  executables: []