class RuboCop::Cop::Minitest::AssertRespondTo


assert_respond_to(object, :some_method, ‘the message’)
assert_respond_to(object, :some_method)
# good
assert(object.respond_to?(:some_method), ‘the message’)
assert(object.respond_to?(:some_method))
# bad
@example
over ‘assert(object.respond_to?(:some_method))`.
This cop enforces the use of `assert_respond_to(object, :some_method)`

def autocorrect(node)

def autocorrect(node)
  lambda do |corrector|
    assert_with_respond_to(node) do |_, object, method, rest_args|
      custom_message = rest_args.first
      preferred = [object, method, custom_message]
                  .compact.map(&:source).join(', ')
      replacement = "assert_respond_to(#{preferred})"
      corrector.replace(node.loc.expression, replacement)
    end
  end
end

def on_send(node)

def on_send(node)
  assert_with_respond_to(node) do |over, object, method, rest_args|
    custom_message = rest_args.first
    preferred = [object, method, custom_message]
                .compact.map(&:source).join(', ')
    over      = [over, custom_message].compact.map(&:source).join(', ')
    message = format(MSG, preferred: preferred, over: over)
    add_offense(node, message: message)
  end
end