Class: RuboCop::Cop::Minitest::RefuteSame
- Inherits:
-
Base
- Object
- Base
- RuboCop::Cop::Minitest::RefuteSame
- Extended by:
- AutoCorrector
- Defined in:
- lib/rubocop/cop/minitest/refute_same.rb
Overview
Enforces the use of ‘refute_same(expected, object)` over `refute(expected.equal?(actual))`.
NOTE: Use ‘refute_same` only when there is a need to compare by identity.
Otherwise, use `refute_equal`.
Constant Summary collapse
- MSG =
'Prefer using `refute_same(%<new_arguments>s)`.'- RESTRICT_ON_SEND =
i[refute refute_equal].freeze
Instance Method Summary collapse
-
#on_send(node) ⇒ Object
rubocop:disable Metrics/AbcSize.
Instance Method Details
#on_send(node) ⇒ Object
rubocop:disable Metrics/AbcSize
40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/rubocop/cop/minitest/refute_same.rb', line 40 def on_send(node) if (equal_node, expected_node, actual_node, = refute_with_equal?(node)) add_offense(node, message: (expected_node, actual_node, .first)) do |corrector| corrector.replace(node.loc.selector, 'refute_same') corrector.replace(equal_node, "#{expected_node.source}, #{actual_node.source}") end elsif (expected_node, actual_node, = refute_equal_with_object_id?(node)) add_offense(node, message: (expected_node, actual_node, .first)) do |corrector| corrector.replace(node.loc.selector, 'refute_same') remove_method_call(expected_node.parent, corrector) remove_method_call(actual_node.parent, corrector) end end end |