mongoid_optimistic_locking 0.0.3 → 0.0.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.
@@ -3,14 +3,14 @@ module Mongoid
3
3
  module Operations
4
4
 
5
5
  def insert(options = {})
6
- return super unless optimistic_locking?
6
+ return super unless optimistic_locking? && valid?
7
7
  increment_lock_version do
8
8
  super
9
9
  end
10
10
  end
11
11
 
12
12
  def update(options = {})
13
- return super unless optimistic_locking?
13
+ return super unless optimistic_locking? && valid?
14
14
  set_lock_version_for_selector do
15
15
  increment_lock_version do
16
16
  result = super
@@ -1,5 +1,5 @@
1
1
  module Mongoid
2
2
  module OptimisticLocking
3
- VERSION = '0.0.3'
3
+ VERSION = '0.0.4'
4
4
  end
5
5
  end
@@ -47,6 +47,15 @@ describe Mongoid::OptimisticLocking do
47
47
  field :name
48
48
  end
49
49
 
50
+ class Hamburger
51
+ include Mongoid::Document
52
+ include Mongoid::OptimisticLocking
53
+ field :patty
54
+ field :toppings
55
+ validates :patty, presence: true
56
+ validates :toppings, presence: true
57
+ end
58
+
50
59
  end
51
60
 
52
61
  after(:all) { COLLECTIONS.each { |n| Object.send(:remove_const, n) } }
@@ -180,6 +189,20 @@ describe Mongoid::OptimisticLocking do
180
189
 
181
190
  end
182
191
 
192
+ context 'optimistic locking on a document with validation' do
193
+ it 'should not incremement lock version when validation fails' do
194
+ burger = Hamburger.new
195
+ burger._lock_version.should == 0
196
+ burger.save.should == false
197
+ burger._lock_version.should == 0
198
+ end
199
+
200
+ it 'should allow creation when valid' do
201
+ burger = Hamburger.create({patty: 'beef', toppings: 'bacon'})
202
+ burger._lock_version.should == 1
203
+ end
204
+ end
205
+
183
206
  context 'optimistic locking on an embeds_one document' do
184
207
 
185
208
  let!(:state) { State.new(:name => 'California') }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongoid_optimistic_locking
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-03-05 00:00:00.000000000 Z
13
+ date: 2013-04-26 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: mongoid
@@ -102,12 +102,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
102
102
  - - ! '>='
103
103
  - !ruby/object:Gem::Version
104
104
  version: '0'
105
+ segments:
106
+ - 0
107
+ hash: 1302811903269459729
105
108
  required_rubygems_version: !ruby/object:Gem::Requirement
106
109
  none: false
107
110
  requirements:
108
111
  - - ! '>='
109
112
  - !ruby/object:Gem::Version
110
113
  version: '0'
114
+ segments:
115
+ - 0
116
+ hash: 1302811903269459729
111
117
  requirements: []
112
118
  rubyforge_project: mongoid_optimistic_locking
113
119
  rubygems_version: 1.8.24