mongomatic 0.5.0 → 0.5.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.rdoc CHANGED
@@ -37,7 +37,7 @@ Mongomatic allows you to map your Ruby objects to Mongo documents. It is designe
37
37
  u.valid?
38
38
  => true
39
39
  u.insert
40
- => BSON::ObjectID('4c32834f0218236321000001')
40
+ => BSON::ObjectId('4c32834f0218236321000001')
41
41
 
42
42
  User.empty?
43
43
  => false
@@ -48,14 +48,14 @@ Mongomatic allows you to map your Ruby objects to Mongo documents. It is designe
48
48
  => 137
49
49
 
50
50
  found = User.find_one({"name" => "Ben Myles"})
51
- => #<User:0x00000101939a48 @doc={"_id"=>BSON::ObjectID('4c32834f0218236321000001'), "name"=>"Ben Myles", "email"=>"me@somewhere.com"}, @removed=false, @is_new=false, @errors=[]>
52
- User.find_one(BSON::ObjectID('4c32834f0218236321000001')) == found
51
+ => #<User:0x00000101939a48 @doc={"_id"=>BSON::ObjectId('4c32834f0218236321000001'), "name"=>"Ben Myles", "email"=>"me@somewhere.com"}, @removed=false, @is_new=false, @errors=[]>
52
+ User.find_one(BSON::ObjectId('4c32834f0218236321000001')) == found
53
53
  => true
54
54
 
55
55
  cursor = User.find({"name" => "Ben Myles"})
56
56
  => #<Mongomatic::Cursor:0x0000010195b4e0 @obj_class=User, @mongo_cursor=<Mongo::Cursor:0x80cadac0 namespace='mongomatic_test.User' @selector={"name"=>"Ben Myles"}>>
57
57
  found = cursor.next
58
- => #<User:0x00000101939a48 @doc={"_id"=>BSON::ObjectID('4c32834f0218236321000001'), "name"=>"Ben Myles", "email"=>"me@somewhere.com"}, @removed=false, @is_new=false, @errors=[]>
58
+ => #<User:0x00000101939a48 @doc={"_id"=>BSON::ObjectId('4c32834f0218236321000001'), "name"=>"Ben Myles", "email"=>"me@somewhere.com"}, @removed=false, @is_new=false, @errors=[]>
59
59
  found.remove
60
60
  => 67
61
61
  User.count
@@ -142,7 +142,7 @@ module Mongomatic
142
142
  end
143
143
 
144
144
  # Insert the document into the database. Will return false if the document has
145
- # already been inserted or is invalid. Returns the generated BSON::ObjectID
145
+ # already been inserted or is invalid. Returns the generated BSON::ObjectId
146
146
  # for the new document. Will silently fail if MongoDB is unable to insert the
147
147
  # document, use insert! if you want an error raised instead. Note that this will
148
148
  # require an additional call to the db.
@@ -7,7 +7,7 @@ module Mongomatic
7
7
  def on(field, sep=" ")
8
8
  ret = []
9
9
  self.each do |err|
10
- ret << err.join(sep) if err.first =~ /^#{field}/
10
+ ret << err.join(sep) if err.first =~ /^#{field.to_s.split('_').join(' ')}/i
11
11
  end
12
12
  case ret.size
13
13
  when 0
@@ -206,7 +206,7 @@ module Mongomatic
206
206
  # Adds value to the array only if its not in the array already.<br/>
207
207
  # Or to add many values:<br/>
208
208
  # { $addToSet : { a : { $each : [ 3 , 5 , 6 ] } } }
209
- # user.add_to_set("friend_ids", BSON::ObjectID('...'))
209
+ # user.add_to_set("friend_ids", BSON::ObjectId('...'))
210
210
  def add_to_set(field, val, safe=false)
211
211
  mongo_field = field.to_s
212
212
  field, hash = hash_for_field(mongo_field)
@@ -9,7 +9,7 @@ class TestMongomatic < Test::Unit::TestCase
9
9
  assert_equal p1, Person.find_one(:name => "Jordan")
10
10
  end
11
11
 
12
- should "find one with an instance of BSON::ObjectID" do
12
+ should "find one with an instance of BSON::ObjectId" do
13
13
  Person.collection.drop
14
14
  p1 = Person.new(:name => "Jordan")
15
15
  p1.insert
@@ -33,15 +33,15 @@ class TestMongomatic < Test::Unit::TestCase
33
33
  assert Person.find({"name" => "Jordan"}).empty?
34
34
  end
35
35
 
36
- should "find one with ObjectID or hash only" do
36
+ should "find one with ObjectId or hash only" do
37
37
  Person.collection.drop
38
38
  Person.create_indexes
39
39
 
40
40
  p = Person.new(:name => "Ben1", :birth_year => 1984, :created_at => Time.now.utc, :admin => true)
41
- assert p.insert!.is_a?(BSON::ObjectID)
41
+ assert p.insert!.is_a?(BSON::ObjectId)
42
42
  assert_equal 1, Person.count
43
43
 
44
- found = Person.find({"_id" => BSON::ObjectID(p["_id"].to_s)}).next
44
+ found = Person.find({"_id" => BSON::ObjectId(p["_id"].to_s)}).next
45
45
  assert_equal found, p
46
46
 
47
47
  assert_raise(TypeError) { Person.find_one(p["_id"].to_s) }
@@ -49,7 +49,7 @@ class TestMongomatic < Test::Unit::TestCase
49
49
  found = Person.find_one({"_id" => p["_id"].to_s})
50
50
  assert_equal found, nil
51
51
 
52
- found = Person.find_one({"_id" => BSON::ObjectID(p["_id"].to_s)})
52
+ found = Person.find_one({"_id" => BSON::ObjectId(p["_id"].to_s)})
53
53
  assert_equal found, p
54
54
  end
55
55
 
@@ -64,8 +64,8 @@ class TestMongomatic < Test::Unit::TestCase
64
64
  Person.collection.drop
65
65
  p1 = Person.new(:name => "Ben1", :birth_year => 1984, :created_at => Time.now.utc, :admin => true)
66
66
  p2 = Person.new(:name => "Ben2", :birth_year => 1986, :created_at => Time.now.utc, :admin => true)
67
- assert p1.insert.is_a?(BSON::ObjectID)
68
- assert p2.insert.is_a?(BSON::ObjectID)
67
+ assert p1.insert.is_a?(BSON::ObjectId)
68
+ assert p2.insert.is_a?(BSON::ObjectId)
69
69
  assert_equal 2, Person.collection.count
70
70
  assert_equal 2, Person.find.inject(0) { |sum, p| assert p.is_a?(Person); sum += 1 }
71
71
  assert_equal p2, Person.find.max { |p1,p2| p1["birth_year"] <=> p2["birth_year"] }
@@ -86,7 +86,7 @@ class TestMongomatic < Test::Unit::TestCase
86
86
 
87
87
  assert !p.update
88
88
 
89
- assert p.insert.is_a?(BSON::ObjectID)
89
+ assert p.insert.is_a?(BSON::ObjectId)
90
90
 
91
91
  assert_equal 1, Person.collection.count
92
92
 
@@ -113,10 +113,10 @@ class TestMongomatic < Test::Unit::TestCase
113
113
  should "be able to limit and sort" do
114
114
  Person.collection.drop
115
115
  p = Person.new(:name => "Ben", :birth_year => 1984, :created_at => Time.now.utc, :admin => true)
116
- assert p.insert.is_a?(BSON::ObjectID)
116
+ assert p.insert.is_a?(BSON::ObjectId)
117
117
  assert_equal 1, Person.collection.count
118
118
  p2 = Person.new(:name => "Ben2", :birth_year => 1984, :created_at => Time.now.utc, :admin => true)
119
- assert p2.insert.is_a?(BSON::ObjectID)
119
+ assert p2.insert.is_a?(BSON::ObjectId)
120
120
  assert_equal 2, Person.collection.count
121
121
 
122
122
  cursor = Person.find({"_id" => p["_id"]})
@@ -146,7 +146,7 @@ class TestMongomatic < Test::Unit::TestCase
146
146
  Person.collection.drop
147
147
  1000.upto(2000) do |i|
148
148
  p = Person.new(:name => "Ben#{i}", :birth_year => 1984, :created_at => Time.now.utc, :admin => true)
149
- assert p.insert.is_a?(BSON::ObjectID)
149
+ assert p.insert.is_a?(BSON::ObjectId)
150
150
  end
151
151
  i = 1000
152
152
  Person.find().sort(["name", :asc]).each { |p| assert_equal "Ben#{i}", p["name"]; i += 1 }
@@ -161,7 +161,7 @@ class TestMongomatic < Test::Unit::TestCase
161
161
  should "be able to merge hashes" do
162
162
  Person.collection.drop
163
163
  p = Person.new(:name => "Ben", :birth_year => 1984, :created_at => Time.now.utc, :admin => true)
164
- assert p.insert.is_a?(BSON::ObjectID)
164
+ assert p.insert.is_a?(BSON::ObjectId)
165
165
  assert_equal 1, Person.collection.count
166
166
  p.merge(:birth_year => 1986)
167
167
  p.update
@@ -176,7 +176,7 @@ class TestMongomatic < Test::Unit::TestCase
176
176
  assert p.valid?
177
177
  assert_equal [:before_validate, :after_validate], p.callback_tests
178
178
  p.callback_tests = []
179
- assert p.insert.is_a?(BSON::ObjectID)
179
+ assert p.insert.is_a?(BSON::ObjectId)
180
180
  assert_equal [:before_validate, :after_validate, :before_insert, :before_insert_or_update, :after_insert, :after_insert_or_update], p.callback_tests
181
181
  p.callback_tests = []
182
182
  p.update
@@ -194,7 +194,7 @@ class TestMongomatic < Test::Unit::TestCase
194
194
  Person.create_indexes
195
195
 
196
196
  p = Person.new(:name => "Ben1", :birth_year => 1984, :created_at => Time.now.utc, :admin => true)
197
- assert p.insert!.is_a?(BSON::ObjectID)
197
+ assert p.insert!.is_a?(BSON::ObjectId)
198
198
  assert_equal 1, Person.count
199
199
 
200
200
  p = Person.new(:name => "Ben1", :birth_year => 1984, :created_at => Time.now.utc, :admin => true)
@@ -519,5 +519,34 @@ class TestMongomatic < Test::Unit::TestCase
519
519
  p.valid?
520
520
  assert_nil p.errors.on(:name)
521
521
  end
522
+
523
+ should "be able to use errors.on case insensitive" do
524
+ p = Person.new
525
+ class << p
526
+ def validate
527
+ expectations do
528
+ be_expected self['name'], ['Name', 'cannot be empty']
529
+ be_expected self['age'], 'Age cannot be empty'
530
+ end
531
+ end
532
+ end
533
+
534
+ p.valid?
535
+ assert_equal 'Name cannot be empty', p.errors.on('name')
536
+ assert_equal 'Age cannot be empty', p.errors.on(:age)
537
+ end
522
538
 
539
+ should "be able to use errors.on with multi word fields" do
540
+ p = Person.new
541
+ class << p
542
+ def validate
543
+ expectations do
544
+ be_expected self['hair_color'], 'Hair color must exist'
545
+ end
546
+ end
547
+ end
548
+
549
+ p.valid?
550
+ assert_equal 'Hair color must exist', p.errors.on(:hair_color)
551
+ end
523
552
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 5
8
- - 0
9
- version: 0.5.0
8
+ - 1
9
+ version: 0.5.1
10
10
  platform: ruby
11
11
  authors:
12
12
  - Ben Myles
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-08-30 00:00:00 -07:00
17
+ date: 2010-09-02 00:00:00 -07:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -38,13 +38,13 @@ dependencies:
38
38
  requirement: &id002 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
- - - ">="
41
+ - - "="
42
42
  - !ruby/object:Gem::Version
43
43
  segments:
44
44
  - 1
45
45
  - 0
46
- - 4
47
- version: 1.0.4
46
+ - 7
47
+ version: 1.0.7
48
48
  type: :runtime
49
49
  version_requirements: *id002
50
50
  - !ruby/object:Gem::Dependency
@@ -53,13 +53,13 @@ dependencies:
53
53
  requirement: &id003 !ruby/object:Gem::Requirement
54
54
  none: false
55
55
  requirements:
56
- - - ">="
56
+ - - "="
57
57
  - !ruby/object:Gem::Version
58
58
  segments:
59
59
  - 1
60
60
  - 0
61
- - 4
62
- version: 1.0.4
61
+ - 7
62
+ version: 1.0.7
63
63
  type: :runtime
64
64
  version_requirements: *id003
65
65
  - !ruby/object:Gem::Dependency
@@ -68,13 +68,13 @@ dependencies:
68
68
  requirement: &id004 !ruby/object:Gem::Requirement
69
69
  none: false
70
70
  requirements:
71
- - - ">="
71
+ - - "="
72
72
  - !ruby/object:Gem::Version
73
73
  segments:
74
74
  - 1
75
75
  - 0
76
- - 7
77
- version: 1.0.7
76
+ - 8
77
+ version: 1.0.8
78
78
  type: :runtime
79
79
  version_requirements: *id004
80
80
  - !ruby/object:Gem::Dependency