module RuboCop::Cop::Minitest::NilAssertionHandleable

Common functionality for `AssertNil` and `RefuteNil` cops.

Constants

MSG

Private Instance Methods

autocorrect(corrector, node, actual) click to toggle source
# File lib/rubocop/cop/mixin/nil_assertion_handleable.rb, line 39
def autocorrect(corrector, node, actual)
  corrector.replace(node.loc.selector, :"#{assertion_type}_nil")
  if comparison_assertion_method?(node)
    corrector.replace(first_and_second_arguments_range(node), actual.source)
  else
    corrector.remove(node.first_argument.loc.dot)
    corrector.remove(node.first_argument.loc.selector)
  end
end
build_message(node, actual, message) click to toggle source
# File lib/rubocop/cop/mixin/nil_assertion_handleable.rb, line 20
def build_message(node, actual, message)
  message = message.first
  message_source = message&.source

  preferred_args = [actual.source, message_source].compact
  current_args = if comparison_assertion_method?(node)
                   ['nil', preferred_args].join(', ')
                 else
                   ["#{actual.source}.nil?", message_source].compact.join(', ')
                 end

  format(
    MSG,
    assertion_type: assertion_type,
    preferred_args: preferred_args.join(', '),
    method: node.method_name, current_args: current_args
  )
end
comparison_assertion_method?(node) click to toggle source
# File lib/rubocop/cop/mixin/nil_assertion_handleable.rb, line 49
def comparison_assertion_method?(node)
  node.method?(:"#{assertion_type}_equal")
end
register_offense(node, actual, message) click to toggle source
# File lib/rubocop/cop/mixin/nil_assertion_handleable.rb, line 12
def register_offense(node, actual, message)
  message = build_message(node, actual, message)

  add_offense(node, message: message) do |corrector|
    autocorrect(corrector, node, actual)
  end
end