module RuboCop::Cop::Minitest::NilAssertionHandleable
Common functionality for `AssertNil` and `RefuteNil` cops.
Constants
- MSG
Private Instance Methods
autocorrect(corrector, node, actual)
click to toggle source
# File lib/rubocop/cop/mixin/nil_assertion_handleable.rb, line 39 def autocorrect(corrector, node, actual) corrector.replace(node.loc.selector, :"#{assertion_type}_nil") if comparison_assertion_method?(node) corrector.replace(first_and_second_arguments_range(node), actual.source) else corrector.remove(node.first_argument.loc.dot) corrector.remove(node.first_argument.loc.selector) end end
build_message(node, actual, message)
click to toggle source
# File lib/rubocop/cop/mixin/nil_assertion_handleable.rb, line 20 def build_message(node, actual, message) message = message.first message_source = message&.source preferred_args = [actual.source, message_source].compact current_args = if comparison_assertion_method?(node) ['nil', preferred_args].join(', ') else ["#{actual.source}.nil?", message_source].compact.join(', ') end format( MSG, assertion_type: assertion_type, preferred_args: preferred_args.join(', '), method: node.method_name, current_args: current_args ) end
comparison_assertion_method?(node)
click to toggle source
# File lib/rubocop/cop/mixin/nil_assertion_handleable.rb, line 49 def comparison_assertion_method?(node) node.method?(:"#{assertion_type}_equal") end
register_offense(node, actual, message)
click to toggle source
# File lib/rubocop/cop/mixin/nil_assertion_handleable.rb, line 12 def register_offense(node, actual, message) message = build_message(node, actual, message) add_offense(node, message: message) do |corrector| autocorrect(corrector, node, actual) end end