aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases/locking_test.rb
diff options
context:
space:
mode:
authorVipul A M <vipulnsward@gmail.com>2016-04-24 04:01:18 +0530
committerVipul A M <vipulnsward@gmail.com>2016-04-24 04:01:18 +0530
commit210729c4cc05eae875b1e990c5bce39dee23e8f1 (patch)
treeff418e3a878ef7bc0a8e47c307c8476670c8378a /activerecord/test/cases/locking_test.rb
parentc9c5788a527b70d7f983e2b4b47e3afd863d9f48 (diff)
downloadrails-210729c4cc05eae875b1e990c5bce39dee23e8f1.tar.gz
rails-210729c4cc05eae875b1e990c5bce39dee23e8f1.tar.bz2
rails-210729c4cc05eae875b1e990c5bce39dee23e8f1.zip
Followup of #15771
Make sure we handle explicitly passed nil's to lock_version as well. An explicitly passed nil value is now converted to 0 on LockingType, so that we don't end up with ActiveRecord::StaleObjectError in update record optimistic locking Fixes #24695
Diffstat (limited to 'activerecord/test/cases/locking_test.rb')
-rw-r--r--activerecord/test/cases/locking_test.rb6
1 files changed, 6 insertions, 0 deletions
diff --git a/activerecord/test/cases/locking_test.rb b/activerecord/test/cases/locking_test.rb
index 6c59d7337a..9fc0041892 100644
--- a/activerecord/test/cases/locking_test.rb
+++ b/activerecord/test/cases/locking_test.rb
@@ -169,6 +169,12 @@ class OptimisticLockingTest < ActiveRecord::TestCase
assert_equal 1, p1.lock_version
end
+ def test_lock_new_when_explicitly_passing_nil
+ p1 = Person.new(:first_name => 'anika', lock_version: nil)
+ p1.save!
+ assert_equal 0, p1.lock_version
+ end
+
def test_touch_existing_lock
p1 = Person.find(1)
assert_equal 0, p1.lock_version