Class: RuboCop::Cop::RSpec::NotToNot

Inherits:
RuboCop::Cop show all
Includes:
ConfigurableEnforcedStyle
Defined in:
lib/rubocop/cop/rspec/not_to_not.rb

Overview

Enforces the usage of the same method on all negative message expectations.

Examples:

# bad
it '...' do
  expect(false).to_not be_true
end

# good
it '...' do
  expect(false).not_to be_true
end

Constant Summary collapse

MSG =
'Prefer `%s` over `%s`'.freeze
METHOD_NAMES =
[:not_to, :to_not].freeze

Instance Method Summary collapse

Instance Method Details

#autocorrect(node) ⇒ Object



45
46
47
48
49
50
51
# File 'lib/rubocop/cop/rspec/not_to_not.rb', line 45

def autocorrect(node)
  _receiver, method_name, *_args = *node
  lambda do |corrector|
    corrector.replace(node.loc.selector,
                      method_name == :not_to ? 'to_not' : 'not_to')
  end
end

#message(node) ⇒ Object



35
36
37
38
39
40
41
42
43
# File 'lib/rubocop/cop/rspec/not_to_not.rb', line 35

def message(node)
  _receiver, method_name, *_args = *node

  if method_name == :not_to
    format(MSG, 'to_not', 'not_to')
  else
    format(MSG, 'not_to', 'to_not')
  end
end

#on_send(node) ⇒ Object



26
27
28
29
30
31
32
33
# File 'lib/rubocop/cop/rspec/not_to_not.rb', line 26

def on_send(node)
  _receiver, method_name, *_args = *node

  return unless METHOD_NAMES.include?(method_name)

  return if style == method_name
  add_offense(node, :expression)
end