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(...)`.'- MSG_NO_ARG =
'Test a non-literal value with `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
- SKIPPED_MATCHERS =
%i[route_to be_routable].freeze
- CORRECTABLE_MATCHERS =
%i[eq eql equal be].freeze
Instance Method Summary collapse
Methods inherited from Base
inherited, #on_new_investigation
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
60 61 62 63 64 65 66 67 68 69 |
# File 'lib/rubocop/cop/rspec/expect_actual.rb', line 60 def_node_matcher :expect_literal, <<~PATTERN (send (send nil? :expect $#literal?) #Runners.all ${ (send (send nil? $:be) :== $_) (send nil? $_ $_ ...) } ) PATTERN |
#expect_literal_no_arg(node) ⇒ Object
72 73 74 75 76 77 78 |
# File 'lib/rubocop/cop/rspec/expect_actual.rb', line 72 def_node_matcher :expect_literal_no_arg, <<~PATTERN (send (send nil? :expect $#literal?) #Runners.all $(send nil? $_) ) PATTERN |
#on_send(node) ⇒ Object
80 81 82 83 84 85 86 87 |
# File 'lib/rubocop/cop/rspec/expect_actual.rb', line 80 def on_send(node) expect_literal(node) do |actual, send_node, matcher, expected| register_offense(actual, send_node, matcher, expected) end expect_literal_no_arg(node) do |actual, send_node, matcher| register_offense(actual, send_node, matcher, nil) end end |