From 7e71ea4307df7b970642f2ab4fe7c0034c7f0fb8 Mon Sep 17 00:00:00 2001 From: Kazuma Watanabe Date: Sat, 27 Jul 2024 16:38:48 +0900 Subject: [PATCH] Apply suggestions from code review Co-authored-by: Phil Pirozhkov --- .../cop/rails/private_transaction_option.rb | 2 +- .../rails/private_transaction_option_spec.rb | 18 +++++++++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/lib/rubocop/cop/rails/private_transaction_option.rb b/lib/rubocop/cop/rails/private_transaction_option.rb index f6e36bd4a0..a86c4ed084 100644 --- a/lib/rubocop/cop/rails/private_transaction_option.rb +++ b/lib/rubocop/cop/rails/private_transaction_option.rb @@ -25,7 +25,7 @@ module Rails # ActiveRecord::Base.transaction(requires_new: true) # class PrivateTransactionOption < Base - MSG = 'Do not use `ActiveRecord::Base.transaction(joinable: _)`.' + MSG = 'Use a negated `requires_new` option instead of the internal `joinable`.' RESTRICT_ON_SEND = %i[transaction].freeze # @!method match_transaction_with_joinable(node) diff --git a/spec/rubocop/cop/rails/private_transaction_option_spec.rb b/spec/rubocop/cop/rails/private_transaction_option_spec.rb index eb4ef78ad5..815fb745c5 100644 --- a/spec/rubocop/cop/rails/private_transaction_option_spec.rb +++ b/spec/rubocop/cop/rails/private_transaction_option_spec.rb @@ -3,14 +3,26 @@ RSpec.describe RuboCop::Cop::Rails::PrivateTransactionOption, :config do it 'registers an offense when using `joinable: false`' do expect_offense(<<~RUBY) - ActiveRecord::Base.transaction(requires_new: true, joinable: false) - ^^^^^^^^^^^^^^^ Do not use `ActiveRecord::Base.transaction(joinable: _)`. + ActiveRecord::Base.transaction(requires_new: true, joinable: false) do + ^^^^^^^^^^^^^^^ Use a negated `requires_new` option instead of the internal `joinable`. + # ... + end RUBY end + it 'registers an offense when using `joinable: false`' do + expect_offense(<<~RUBY) + account.transaction(requires_new: true, joinable: false) do + ^^^^^^^^^^^^^^^ Use a negated `requires_new` option instead of the internal `joinable`. + # ... + end + RUBY + end it 'does not register an offense when using only `requires_new: true`' do expect_no_offenses(<<~RUBY) - ActiveRecord::Base.transaction(requires_new: true) + ActiveRecord::Base.transaction(requires_new: true) do + # ... + end RUBY end end