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