Fix Capybara/CurrentPathExpectation autocorrect incompatible with Style/TrailingCommaInArguments autocorrect

このエントリーをはてなブックマークに追加

[Fix #1237] Fix Capybara/CurrentPathExpectation autocorrect incompatible with Style/TrailingCommaInArguments autocorrect
https://github.com/rubocop/rubocop-rspec/pull/1253

以下の様なコードがあった場合に、Capybara/CurrentPathExpectationStyle/TrailingCommaInArguments が同時に動作する環境だと上手く自動修正されない問題があった。

expect(current_path).to eq(
  some_path(
    record_id: record.id
  )
)

ここで最初のアプローチとしてはStyle/TrailingCommaInArgumentsが有効か否かを判定していたが、.autocorrect_incompatible_withを使用すれば良い事が分かった。

だが、Style/TrailingCommaInArgumentsは RuboCop の本体側に定義があって、このCapybara/CurrentPathExpectationは rubocop-rspec 側にあるので、 最終的には以下の様にオーバライドを rubocop-rspec 側でする様にした。

RuboCop::Cop::Style::TrailingCommaInArguments.singleton_class.prepend(
  Module.new do
    def autocorrect_incompatible_with
      super.push(RuboCop::Cop::RSpec::Capybara::CurrentPathExpectation)
    end
  end
)