aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases/locking_test.rb
diff options
context:
space:
mode:
authorJeffrey Guenther <guenther.jeffrey@gmail.com>2017-12-14 19:03:28 -0800
committerJeffrey Guenther <guenther.jeffrey@gmail.com>2017-12-14 19:03:28 -0800
commit1c5358e4729ce48b0e597d0b39d22f3b1c42f6fc (patch)
treeea060a71e57ec1e6366a33f7e40be14ea2f0d64b /activerecord/test/cases/locking_test.rb
parentab2a95db8088b7607017671b82e396bcd9e80332 (diff)
parentcc0d272c8c37c197a7e68633e5f082eccb2e3737 (diff)
downloadrails-1c5358e4729ce48b0e597d0b39d22f3b1c42f6fc.tar.gz
rails-1c5358e4729ce48b0e597d0b39d22f3b1c42f6fc.tar.bz2
rails-1c5358e4729ce48b0e597d0b39d22f3b1c42f6fc.zip
Merge branch 'master' into activestorage-guide
Diffstat (limited to 'activerecord/test/cases/locking_test.rb')
-rw-r--r--activerecord/test/cases/locking_test.rb34
1 files changed, 33 insertions, 1 deletions
diff --git a/activerecord/test/cases/locking_test.rb b/activerecord/test/cases/locking_test.rb
index e857180bd1..437a5a38a3 100644
--- a/activerecord/test/cases/locking_test.rb
+++ b/activerecord/test/cases/locking_test.rb
@@ -399,11 +399,43 @@ class OptimisticLockingTest < ActiveRecord::TestCase
end
end
+ def test_counter_cache_with_touch_and_lock_version
+ car = Car.create!
+
+ assert_equal 0, car.wheels_count
+ assert_equal 0, car.lock_version
+
+ previously_car_updated_at = car.updated_at
+ travel(1.second) do
+ Wheel.create!(wheelable: car)
+ end
+
+ assert_equal 1, car.reload.wheels_count
+ assert_not_equal previously_car_updated_at, car.updated_at
+ assert_equal 1, car.lock_version
+
+ previously_car_updated_at = car.updated_at
+ car.wheels.first.update(size: 42)
+
+ assert_equal 1, car.reload.wheels_count
+ assert_not_equal previously_car_updated_at, car.updated_at
+ assert_equal 2, car.lock_version
+
+ previously_car_updated_at = car.updated_at
+ travel(1.second) do
+ car.wheels.first.destroy!
+ end
+
+ assert_equal 0, car.reload.wheels_count
+ assert_not_equal previously_car_updated_at, car.updated_at
+ assert_equal 3, car.lock_version
+ end
+
def test_polymorphic_destroy_with_dependencies_and_lock_version
car = Car.create!
assert_difference "car.wheels.count" do
- car.wheels << Wheel.create!
+ car.wheels.create
end
assert_difference "car.wheels.count", -1 do
car.reload.destroy