Class: RuboCop::Cop::Minitest::AssertSame
- Inherits:
-
Base
- Object
- Base
- RuboCop::Cop::Minitest::AssertSame
- Extended by:
- AutoCorrector
- Defined in:
- lib/rubocop/cop/minitest/assert_same.rb
Overview
Enforces the use of ‘assert_same(expected, actual)` over `assert(expected.equal?(actual))`.
NOTE: Use ‘assert_same` only when there is a need to compare by identity.
Otherwise, use `assert_equal`.
Constant Summary collapse
- MSG =
'Prefer using `assert_same(%<new_arguments>s)`.'- RESTRICT_ON_SEND =
i[assert assert_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/assert_same.rb', line 40 def on_send(node) if (equal_node, expected_node, actual_node, = assert_with_equal?(node)) add_offense(node, message: (expected_node, actual_node, .first)) do |corrector| corrector.replace(node.loc.selector, 'assert_same') corrector.replace(equal_node, "#{expected_node.source}, #{actual_node.source}") end elsif (expected_node, actual_node, = assert_equal_with_object_id?(node)) add_offense(node, message: (expected_node, actual_node, .first)) do |corrector| corrector.replace(node.loc.selector, 'assert_same') remove_method_call(expected_node.parent, corrector) remove_method_call(actual_node.parent, corrector) end end end |