class RuboCop::Cop::RSpec::ClassCheck
Enforces consistent use of ‘be_a` or `be_kind_of`.
@example EnforcedStyle: be_a (default)
# bad expect(object).to be_kind_of(String) expect(object).to be_a_kind_of(String) # good expect(object).to be_a(String) expect(object).to be_an(String)
@example EnforcedStyle: be_kind_of
# bad expect(object).to be_a(String) expect(object).to be_an(String) # good expect(object).to be_kind_of(String) expect(object).to be_a_kind_of(String)
Constants
- METHOD_NAMES_FOR_BE_A
- METHOD_NAMES_FOR_KIND_OF
- MSG
- PREFERRED_METHOD_NAME_BY_STYLE
- RESTRICT_ON_SEND
Public Instance Methods
on_send(node)
click to toggle source
# File lib/rubocop/cop/rspec/class_check.rb, line 54 def on_send(node) return unless offending?(node) add_offense( node.loc.selector, message: format_message(node) ) do |corrector| autocorrect(corrector, node) end end
Private Instance Methods
autocorrect(corrector, node)
click to toggle source
# File lib/rubocop/cop/rspec/class_check.rb, line 67 def autocorrect(corrector, node) corrector.replace(node.loc.selector, preferred_method_name) end
format_message(node)
click to toggle source
# File lib/rubocop/cop/rspec/class_check.rb, line 71 def format_message(node) format( MSG, current: node.method_name, preferred: preferred_method_name ) end
offending?(node)
click to toggle source
# File lib/rubocop/cop/rspec/class_check.rb, line 79 def offending?(node) !node.receiver && !preferred_method_name?(node.method_name) end
preferred_method_name()
click to toggle source
# File lib/rubocop/cop/rspec/class_check.rb, line 87 def preferred_method_name PREFERRED_METHOD_NAME_BY_STYLE[style] end
preferred_method_name?(method_name)
click to toggle source
# File lib/rubocop/cop/rspec/class_check.rb, line 83 def preferred_method_name?(method_name) preferred_method_names.include?(method_name) end
preferred_method_names()
click to toggle source
# File lib/rubocop/cop/rspec/class_check.rb, line 91 def preferred_method_names if style == :be_a METHOD_NAMES_FOR_BE_A else METHOD_NAMES_FOR_KIND_OF end end