class RuboCop::Cop::Minitest::LiteralAsActualArgument

This cop enforces correct order of expected and actual arguments for `assert_equal`.

@example

# bad
assert_equal foo, 2
assert_equal foo, [1, 2]
assert_equal foo, [1, 2], 'message'

# good
assert_equal 2, foo
assert_equal [1, 2], foo
assert_equal [1, 2], foo, 'message'

Constants

MSG
RESTRICT_ON_SEND

Public Instance Methods

autocorrect(corrector, node) click to toggle source
# File lib/rubocop/cop/minitest/literal_as_actual_argument.rb, line 38
def autocorrect(corrector, node)
  expected, actual, message = *node.arguments

  new_actual_source = if actual.hash_type? && !actual.braces?
                        "{#{actual.source}}"
                      else
                        actual.source
                      end
  arguments = [new_actual_source, expected.source, message&.source].compact.join(', ')

  corrector.replace(node, "assert_equal(#{arguments})")
end
on_send(node) click to toggle source
# File lib/rubocop/cop/minitest/literal_as_actual_argument.rb, line 27
def on_send(node)
  return unless node.method?(:assert_equal)

  actual = node.arguments[1]
  return unless actual&.recursive_basic_literal?

  add_offense(all_arguments_range(node)) do |corrector|
    autocorrect(corrector, node)
  end
end