lib/rubocop/cop/rspec/verified_doubles.rb in rubocop-rspec-1.5.1 vs lib/rubocop/cop/rspec/verified_doubles.rb in rubocop-rspec-1.5.2

- old
+ new

@@ -1,6 +1,5 @@ -# encoding: utf-8 # frozen_string_literal: true module RuboCop module Cop module RSpec @@ -17,26 +16,19 @@ # it '...' do # widget = instance_double("Widget") # end class VerifiedDoubles < Cop MSG = 'Prefer using verifying doubles over normal doubles.'.freeze - DOUBLE_TYPES = [:double, :spy].freeze + def_node_matcher :unverified_double, <<-PATTERN + {(send nil {:double :spy} $_ ...) } + PATTERN + def on_send(node) - _receiver, method_name, *args = *node - name, *_stubs = *args - return unless DOUBLE_TYPES.include?(method_name) - return if name.nil? - return if name_is_symbol?(name) && cop_config['IgnoreSymbolicNames'] - add_offense(node, - :expression, - format(MSG, node.loc.expression.source)) - end + return unless (name = unverified_double(node)) + return if name.type.equal?(:sym) && cop_config['IgnoreSymbolicNames'] - private - - def name_is_symbol?(name) - name.children.first.is_a? Symbol + add_offense(node, :expression) end end end end end