class RuboCop::Cop::Minitest::AssertInstanceOf


assert_instance_of(Class, object, ‘the message’)
assert_instance_of(Class, object)
# good
assert(object.instance_of?(Class), ‘the message’)
assert(object.instance_of?(Class))
# bad
@example
over ‘assert(object.instance_of?(Class))`.
This cop enforces the test to use `assert_instance_of(Class, object)`

def autocorrect(node)

def autocorrect(node)
  lambda do |corrector|
    assert_with_instance_of(node) do |_, object, method, rest_args|
      message = rest_args.first
      arguments = node_arguments(object, method, message)
      replacement = "assert_instance_of(#{arguments})"
      corrector.replace(node.loc.expression, replacement)
    end
  end
end

def node_arguments(object, method, message)

def node_arguments(object, method, message)
  [method, object, message].compact.map(&:source).join(', ')
end

def on_send(node)

def on_send(node)
  assert_with_instance_of(node) do
    |first_receiver_arg, object, method, rest_args|
    message = rest_args.first
    arguments = node_arguments(object, method, message)
    receiver = [first_receiver_arg.source, message&.source].compact.join(', ')
    offense_message = format(MSG, arguments: arguments, receiver: receiver)
    add_offense(node, message: offense_message)
  end
end