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