Sha256: 88a5cd44a723f63d9d855c430687a46520a91a26e1022cd5b8c6eeeed962ea91

Contents?: true

Size: 1.27 KB

Versions: 1

Compression:

Stored size: 1.27 KB

Contents

describe RuboCop::Cop::RSpec::InstanceVariable do
  subject(:cop) { described_class.new }

  it 'finds an instance variable inside a describe' do
    inspect_source(
      cop,
      [
        'describe MyClass do',
        '  before { @foo = [] }',
        '  it { expect(@foo).to be_empty }',
        'end'
      ]
    )
    expect(cop.offenses.size).to eq(1)
    expect(cop.offenses.map(&:line).sort).to eq([3])
    expect(cop.messages).to eq(['Use `let` instead of an instance variable'])
  end

  it 'ignores non-spec blocks' do
    inspect_source(
      cop,
      [
        'not_rspec do',
        '  before { @foo = [] }',
        '  it { expect(@foo).to be_empty }',
        'end'
      ]
    )
    expect(cop.offenses).to be_empty
  end

  it 'finds an instance variable inside a shared example' do
    inspect_source(
      cop,
      [
        "shared_examples 'shared example' do",
        '  it { expect(@foo).to be_empty }',
        'end'
      ]
    )
    expect(cop.offenses.size).to eq(1)
    expect(cop.offenses.map(&:line).sort).to eq([2])
    expect(cop.messages).to eq(['Use `let` instead of an instance variable'])
  end

  it 'ignores an instance variable without describe' do
    inspect_source(cop, ['@foo = []', '@foo.empty?'])
    expect(cop.offenses).to be_empty
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rubocop-rspec-1.5.2 spec/rubocop/cop/rspec/instance_variable_spec.rb