class RuboCop::Cop::RSpec::ExpectActual
Checks for `expect(…)` calls containing literal values.
@example
# bad expect(5).to eq(price) expect(/foo/).to eq(pattern) expect("John").to eq(name) # good expect(price).to eq(5) expect(pattern).to eq(/foo/) expect(name).to eq("John")
Constants
- COMPLEX_LITERALS
- MSG
- SIMPLE_LITERALS
Public Instance Methods
on_send(node)
click to toggle source
# File lib/rubocop/cop/rspec/expect_actual.rb, line 45 def on_send(node) expect_literal(node) do |argument| add_offense(argument, location: :expression) end end
Private Instance Methods
complex_literal?(node)
click to toggle source
# File lib/rubocop/cop/rspec/expect_actual.rb, line 63 def complex_literal?(node) COMPLEX_LITERALS.include?(node.type) && node.each_child_node.all?(&method(:literal?)) end
literal?(node)
click to toggle source
This is not implement using a NodePattern because it seems to not be able to match against an explicit (nil) sexp
# File lib/rubocop/cop/rspec/expect_actual.rb, line 55 def literal?(node) node && (simple_literal?(node) || complex_literal?(node)) end
simple_literal?(node)
click to toggle source
# File lib/rubocop/cop/rspec/expect_actual.rb, line 59 def simple_literal?(node) SIMPLE_LITERALS.include?(node.type) end