class RuboCop::Cop::RSpec::EmptyExample

Constants

MSG

Checks if an example does not include any expectations.

@example usage

# bad
describe Bacon do
  let(:bacon)      { Bacon.new(chunkiness) }
  let(:chunkiness) { true }

  it 'is chunky' do
    bacon.chunky?
  end
end

# good
describe Bacon do
  let(:bacon)      { Bacon.new(chunkiness) }
  let(:chunkiness) { true }

  it 'is chunky' do
    expect(bacon.chunky?).to be_truthy
  end
end

Public Instance Methods

on_block(node) click to toggle source
# File lib/rubocop/cop/rspec/empty_example_cops.rb, line 49
def on_block(node)
  return unless it_description?(node)

  unless example_present?(node)
    add_offense(node, message: MSG)
  end
end

Private Instance Methods

example_present?(node) click to toggle source
# File lib/rubocop/cop/rspec/empty_example_cops.rb, line 59
def example_present?(node)
  if expect?(node) || should?(node) || assert?(node)
    true
  elsif node.nil?
    false
  elsif RuboCop::AST::Node === node && node.children.size > 0
    node.children.any? { |child| example_present?(child) }
  else # something not expectation
    false
  end
end