diff options
author | bogdanvlviv <bogdanvlviv@gmail.com> | 2017-04-22 14:01:59 +0300 |
---|---|---|
committer | bogdanvlviv <bogdanvlviv@gmail.com> | 2017-06-12 23:22:20 +0300 |
commit | 7b1ee9f54c5906b49b60b300212e17e0290e8ee5 (patch) | |
tree | 20e35a320618a791a6eb25e888fde6b05cfcccd5 /activerecord | |
parent | 42a80721938453a2ecbba204ce21a0d496756178 (diff) | |
download | rails-7b1ee9f54c5906b49b60b300212e17e0290e8ee5.tar.gz rails-7b1ee9f54c5906b49b60b300212e17e0290e8ee5.tar.bz2 rails-7b1ee9f54c5906b49b60b300212e17e0290e8ee5.zip |
Add test cases for optimistic locking
Add test to ensure that locking_column cannot be updated explicitly.
Add test to prevent regression on creating new object with
explicit value locking_column.
Related to #28318
Diffstat (limited to 'activerecord')
-rw-r--r-- | activerecord/test/cases/locking_test.rb | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/activerecord/test/cases/locking_test.rb b/activerecord/test/cases/locking_test.rb index 3a3b8e51f9..2b139a5da4 100644 --- a/activerecord/test/cases/locking_test.rb +++ b/activerecord/test/cases/locking_test.rb @@ -167,6 +167,12 @@ class OptimisticLockingTest < ActiveRecord::TestCase assert_equal 0, p1.lock_version end + def test_lock_new_when_explicitly_passing_value + p1 = Person.new(first_name: "Douglas Adams", lock_version: 42) + p1.save! + assert_equal 42, p1.lock_version + end + def test_touch_existing_lock p1 = Person.find(1) assert_equal 0, p1.lock_version @@ -186,6 +192,19 @@ class OptimisticLockingTest < ActiveRecord::TestCase end end + def test_explicit_update_lock_column_raise_error + person = Person.find(1) + + assert_raises(ActiveRecord::StaleObjectError) do + person.first_name = "Douglas Adams" + person.lock_version = 42 + + assert person.lock_version_changed? + + person.save + end + end + def test_lock_column_name_existing t1 = LegacyThing.find(1) t2 = LegacyThing.find(1) |