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.
Constant Summary collapse
- MSG =
'Provide the actual you are testing to `expect(...)`.'
- 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
Methods included from RSpec::Language
#example?, #example_group?, #example_group_with_body?, #hook?, #include?, #let?, #rspec?, #shared_group?, #spec_group?, #subject?
Instance Method Details
#expect_literal(node) ⇒ Object
49 50 51 52 53 54 55 56 57 58 |
# File 'lib/rubocop/cop/rspec/expect_actual.rb', line 49 def_node_matcher :expect_literal, <<~PATTERN (send (send nil? :expect $#literal?) #Runners.all { (send (send nil? $:be) :== $_) (send nil? $_ $_ ...) } ) PATTERN |
#on_send(node) ⇒ Object
60 61 62 63 64 65 66 67 68 69 |
# File 'lib/rubocop/cop/rspec/expect_actual.rb', line 60 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 |