Sha256: da8fc69140347305a25beb7c88284aebb123d638546251d44fc26ce3c8219fa7
Contents?: true
Size: 1.75 KB
Versions: 1
Compression:
Stored size: 1.75 KB
Contents
# frozen_string_literal: true module RuboCop module Cop module Minitest # This cop enforces the test to use `refute_respond_to(object, :some_method)` # over `refute(object.respond_to?(:some_method))`. # # @example # # bad # refute(object.respond_to?(:some_method)) # refute(object.respond_to?(:some_method), 'the message') # # # good # refute_respond_to(object, :some_method) # refute_respond_to(object, :some_method, 'the message') # class RefuteRespondTo < Cop MSG = 'Prefer using `refute_respond_to(%<preferred>s)` over ' \ '`refute(%<over>s)`.' def_node_matcher :refute_with_respond_to, <<~PATTERN (send nil? :refute $(send $_ :respond_to? $_) $...) PATTERN def on_send(node) refute_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(', ') message = format(MSG, preferred: preferred, over: over) add_offense(node, message: message) end end def autocorrect(node) lambda do |corrector| refute_with_respond_to(node) do |_, object, method, rest_args| custom_message = rest_args.first preferred = [object, method, custom_message] .compact.map(&:source).join(', ') replacement = "refute_respond_to(#{preferred})" corrector.replace(node.loc.expression, replacement) end end end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
rubocop-minitest-0.4.0 | lib/rubocop/cop/minitest/refute_respond_to.rb |