class RuboCop::Cop::Minitest::RefuteFalse


refute(actual, ‘message’)
refute(actual)
# good
assert(!test, ‘message’)
assert(!test)
assert_equal(false, actual, ‘message’)
assert_equal(false, actual)
# bad
@example
—-
refute(nil) # success
assert_equal(false, nil) # failure
—-
[source,ruby]

False positives cannot be prevented when this is a variable or method return value.
This cop is unsafe because it cannot detect failure when second argument is ‘nil`.
@safety
Enforces the use of `refute(object)` over `assert_equal(false, object)`.

def autocorrect(corrector, node, actual)

def autocorrect(corrector, node, actual)
  corrector.replace(node.loc.selector, 'refute')
  if node.method?(:assert_equal)
    corrector.replace(first_and_second_arguments_range(node), actual.source)
  else
    corrector.replace(node.first_argument, actual.source)
  end
end

def on_send(node)

def on_send(node)
  actual, rest_receiver_arg = assert_equal_with_false(node) || assert_with_bang_argument(node)
  return unless actual
  message_argument = rest_receiver_arg.first
  arguments = [actual.source, message_argument&.source].compact.join(', ')
  message = node.method?(:assert_equal) ? MSG_FOR_ASSERT_EQUAL : MSG_FOR_ASSERT
  add_offense(node, message: format(message, arguments: arguments)) do |corrector|
    autocorrect(corrector, node, actual)
  end
end