class RuboCop::Cop::Minitest::RefuteRespondTo


refute_respond_to(self, :some_method)
refute_respond_to(object, :some_method, ‘the message’)
refute_respond_to(object, :some_method)
# good
refute(respond_to?(:some_method))
refute(object.respond_to?(:some_method), ‘the message’)
refute(object.respond_to?(:some_method))
# bad
@example
over ‘refute(object.respond_to?(:some_method))`.
This cop enforces the test to use `refute_respond_to(object, :some_method)`

def autocorrect(node)

def autocorrect(node)
  lambda do |corrector|
    refute_with_respond_to(node) do |_, object, method|
      corrector.replace(node.loc.selector, 'refute_respond_to')
      object = object ? object.source : 'self'
      replacement = [object, method.source].join(', ')
      corrector.replace(first_argument_range(node), replacement)
    end
  end
end

def build_preferred_arguments(receiver, method, message)

def build_preferred_arguments(receiver, method, message)
  receiver = receiver ? receiver.source : 'self'
  [receiver, method.source, message&.source].compact.join(', ')
end

def on_send(node)

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