lib/rubocop/cop/minitest/assert_respond_to.rb in rubocop-minitest-0.4.0 vs lib/rubocop/cop/minitest/assert_respond_to.rb in rubocop-minitest-0.4.1

- old
+ new

@@ -8,14 +8,16 @@ # # @example # # bad # assert(object.respond_to?(:some_method)) # assert(object.respond_to?(:some_method), 'the message') + # assert(respond_to?(:some_method)) # # # good # assert_respond_to(object, :some_method) # assert_respond_to(object, :some_method, 'the message') + # assert_respond_to(self, some_method) # class AssertRespondTo < Cop MSG = 'Prefer using `assert_respond_to(%<preferred>s)` over ' \ '`assert(%<over>s)`.' @@ -24,27 +26,33 @@ PATTERN def on_send(node) assert_with_respond_to(node) do |over, object, method, rest_args| custom_message = rest_args.first - preferred = [object, method, custom_message] - .compact.map(&:source).join(', ') - over = [over, custom_message].compact.map(&:source).join(', ') + preferred = build_preferred_arguments(object, method, custom_message) + over = [over, custom_message].compact.map(&:source).join(', ') message = format(MSG, preferred: preferred, over: over) add_offense(node, message: message) end end def autocorrect(node) lambda do |corrector| assert_with_respond_to(node) do |_, object, method, rest_args| custom_message = rest_args.first - preferred = [object, method, custom_message] - .compact.map(&:source).join(', ') + preferred = build_preferred_arguments(object, method, custom_message) replacement = "assert_respond_to(#{preferred})" corrector.replace(node.loc.expression, replacement) end end + end + + private + + def build_preferred_arguments(receiver, method, message) + receiver = receiver ? receiver.source : 'self' + + [receiver, method.source, message&.source].compact.join(', ') end end end end end