class RuboCop::Cop::RSpec::VerifiedDoubleReference
Checks for consistent verified double reference style.
Only investigates references that are one of the supported styles.
@see rspec.info/features/3-12/rspec-mocks/verifying-doubles
This cop can be configured in your configuration using the ‘EnforcedStyle` option and supports `–auto-gen-config`.
@example ‘EnforcedStyle: constant` (default)
# bad let(:foo) do instance_double('ClassName', method_name: 'returned_value') end # good let(:foo) do instance_double(ClassName, method_name: 'returned_value') end
@example ‘EnforcedStyle: string`
# bad let(:foo) do instance_double(ClassName, method_name: 'returned_value') end # good let(:foo) do instance_double('ClassName', method_name: 'returned_value') end
@example Reference is not in the supported style list. No enforcement
# good let(:foo) do instance_double(@klass, method_name: 'returned_value') end
Constants
- MSG
- REFERENCE_TYPE_STYLES
- RESTRICT_ON_SEND
Public Instance Methods
on_send(node)
click to toggle source
# File lib/rubocop/cop/rspec/verified_double_reference.rb, line 74 def on_send(node) verified_double(node) do |class_reference| break correct_style_detected unless opposing_style?(class_reference) message = format(MSG, style: style) expression = class_reference.source_range add_offense(expression, message: message) do |corrector| offense = class_reference.source corrector.replace(expression, correct_style(offense)) opposite_style_detected end end end
Private Instance Methods
correct_style(offense)
click to toggle source
# File lib/rubocop/cop/rspec/verified_double_reference.rb, line 101 def correct_style(offense) if style == :string "'#{offense}'" else offense.gsub(/^['"]|['"]$/, '') end end
opposing_style?(class_reference)
click to toggle source
# File lib/rubocop/cop/rspec/verified_double_reference.rb, line 92 def opposing_style?(class_reference) class_reference_style = REFERENCE_TYPE_STYLES[class_reference.type] # Only enforce supported styles return false unless class_reference_style class_reference_style != style end