Class: RuboCop::Cop::RSpec::ExpectActual
- Extended by:
- AutoCorrector
- Defined in:
- lib/rubocop/cop/rspec/expect_actual.rb
Overview
Checks for ‘expect(…)` calls containing literal values.
Autocorrection is performed when the expected is not a literal.
Constant Summary collapse
- MSG =
'Provide the actual value you are testing to `expect(...)`.'
- RESTRICT_ON_SEND =
Runners.all
- SIMPLE_LITERALS =
%i[ true false nil int float str sym complex rational regopt ].freeze
- COMPLEX_LITERALS =
%i[ array hash pair irange erange regexp ].freeze
- SUPPORTED_MATCHERS =
%i[eq eql equal be].freeze
Instance Method Summary collapse
Methods inherited from Base
inherited, #on_new_investigation
Methods included from RSpec::Language::NodePattern
#block_or_numblock_pattern, #block_pattern, #numblock_pattern, #send_pattern
Methods included from RSpec::Language
#example?, #example_group?, #example_group_with_body?, #explicit_rspec?, #hook?, #include?, #let?, #rspec?, #shared_group?, #spec_group?, #subject?
Instance Method Details
#expect_literal(node) ⇒ Object
56 57 58 59 60 61 62 63 64 65 |
# File 'lib/rubocop/cop/rspec/expect_actual.rb', line 56 def_node_matcher :expect_literal, <<~PATTERN (send (send nil? :expect $#literal?) #Runners.all { (send (send nil? $:be) :== $_) (send nil? $_ $_ ...) } ) PATTERN |
#on_send(node) ⇒ Object
67 68 69 70 71 72 73 74 75 76 |
# File 'lib/rubocop/cop/rspec/expect_actual.rb', line 67 def on_send(node) expect_literal(node) do |actual, matcher, expected| add_offense(actual.source_range) do |corrector| next unless SUPPORTED_MATCHERS.include?(matcher) next if literal?(expected) swap(corrector, actual, expected) end end end |