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..03be2f2039 100644 --- a/spec/rubocop/cop/rails/private_transaction_option_spec.rb +++ b/spec/rubocop/cop/rails/private_transaction_option_spec.rb @@ -1,16 +1,29 @@ # frozen_string_literal: true RSpec.describe RuboCop::Cop::Rails::PrivateTransactionOption, :config do - it 'registers an offense when using `joinable: false`' do + it 'registers an offense when using `ActiveRecord::Base.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 `Account.transaction(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