class RuboCop::Cop::InternalAffairs::RedundantLetRuboCopConfigNew

Checks that ‘let` is `RuboCop::Config.new` with no arguments.

@example

# bad
RSpec.describe RuboCop::Cop::Department::Foo, :config do
  let(:config) { RuboCop::Config.new }
end

# good
RSpec.describe RuboCop::Cop::Department::Foo, :config do
end

RSpec.describe RuboCop::Cop::Department::Foo, :config do
  let(:config) { RuboCop::Config.new(argument) }
end

Constants

MSG

Public Instance Methods

on_block(node) click to toggle source
# File lib/rubocop/cop/internal_affairs/redundant_let_rubocop_config_new.rb, line 39
def on_block(node)
  return unless let_rubocop_config_new?(node)

  describe = find_describe_method_node(node)

  unless (exist_config = describe.last_argument.source == ':config')
    additional_message = ' and specify `:config` in `describe`'
  end

  message = format(MSG, additional_message: additional_message)

  add_offense(node, message: message) do |corrector|
    corrector.remove(range_by_whole_lines(node.source_range, include_final_newline: true))

    corrector.insert_after(describe.last_argument, ', :config') unless exist_config
  end
end

Private Instance Methods

find_describe_method_node(block_node) click to toggle source
# File lib/rubocop/cop/internal_affairs/redundant_let_rubocop_config_new.rb, line 59
def find_describe_method_node(block_node)
  block_node.ancestors.find { |node| node.block_type? && node.method?(:describe) }.send_node
end