class RuboCop::Cop::Minitest::RefuteEqual
This cop enforces the use of `refute_equal(expected, object)` over `assert(expected != actual)` or `assert(! expected == actual)`.
@example
# bad assert("rubocop-minitest" != actual) assert(! "rubocop-minitest" == actual) # good refute_equal("rubocop-minitest", actual)
Constants
- MSG
- RESTRICT_ON_SEND
Public Instance Methods
on_send(node)
click to toggle source
# File lib/rubocop/cop/minitest/refute_equal.rb, line 29 def on_send(node) preferred, over = process_not_equal(node) return unless preferred && over assert_not_equal(node) do |_, expected, actual| message = format(MSG, preferred: preferred, over: over) add_offense(node, message: message) do |corrector| corrector.replace(node.loc.selector, 'refute_equal') replacement = [expected, actual].map(&:source).join(', ') corrector.replace(first_argument_range(node), replacement) end end end
Private Instance Methods
original_usage(first_part, custom_message)
click to toggle source
# File lib/rubocop/cop/minitest/refute_equal.rb, line 52 def original_usage(first_part, custom_message) [first_part, custom_message].compact.join(', ') end
preferred_usage(first_arg, second_arg, custom_message = nil)
click to toggle source
# File lib/rubocop/cop/minitest/refute_equal.rb, line 47 def preferred_usage(first_arg, second_arg, custom_message = nil) [first_arg, second_arg, custom_message] .compact.map(&:source).join(', ') end
process_not_equal(node)
click to toggle source
# File lib/rubocop/cop/minitest/refute_equal.rb, line 56 def process_not_equal(node) assert_not_equal(node) do |over, first_arg, second_arg, rest_args| custom_message = rest_args.first preferred = preferred_usage(first_arg, second_arg, custom_message) over = original_usage(over.source, custom_message&.source) return [preferred, over] end end