class RuboCop::Cop::RSpec::PredicateMatcher
Prefer using predicate matcher over using predicate method directly.
RSpec
defines magic matchers for predicate methods. This cop recommends to use the predicate matcher instead of using predicate method directly.
@example Strict: true, EnforcedStyle: inflected (default)
# bad expect(foo.something?).to be_truthy # good expect(foo).to be_something # also good - It checks "true" strictly. expect(foo).to be(true)
@example Strict: false, EnforcedStyle: inflected
# bad expect(foo.something?).to be_truthy expect(foo).to be(true) # good expect(foo).to be_something
@example Strict: true, EnforcedStyle: explicit
# bad expect(foo).to be_something # good - the above code is rewritten to it by this cop expect(foo.something?).to be(true)
@example Strict: false, EnforcedStyle: explicit
# bad expect(foo).to be_something # good - the above code is rewritten to it by this cop expect(foo.something?).to be_truthy
Public Instance Methods
autocorrect(node)
click to toggle source
# File lib/rubocop/cop/rspec/predicate_matcher.rb, line 320 def autocorrect(node) case style when :inflected autocorrect_inflected(node) when :explicit autocorrect_explicit(node) end end
on_block(node)
click to toggle source
# File lib/rubocop/cop/rspec/predicate_matcher.rb, line 316 def on_block(node) check_explicit(node) if style == :explicit end
on_send(node)
click to toggle source
# File lib/rubocop/cop/rspec/predicate_matcher.rb, line 307 def on_send(node) case style when :inflected check_inflected(node) when :explicit check_explicit(node) end end
Private Instance Methods
args_loc(send_node)
click to toggle source
returns args location with whitespace @example
foo 1, 2 ^^^^^
# File lib/rubocop/cop/rspec/predicate_matcher.rb, line 335 def args_loc(send_node) send_node.loc.selector.end.with( end_pos: send_node.loc.expression.end_pos ) end
block_loc(send_node)
click to toggle source
returns block location with whitespace @example
foo { bar } ^^^^^^^^
# File lib/rubocop/cop/rspec/predicate_matcher.rb, line 345 def block_loc(send_node) parent = send_node.parent return unless parent.block_type? send_node.loc.expression.end.with( end_pos: parent.loc.expression.end_pos ) end