Sha256: e4732c389b776e14b0b6f10a04b68647d00315f7c61632e659da4075e738c705

Contents?: true

Size: 1.83 KB

Versions: 8

Compression:

Stored size: 1.83 KB

Contents

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

  it 'finds an instance variable inside a describe' do
    expect_offense(<<-RUBY)
      describe MyClass do
        before { @foo = [] }
        it { expect(@foo).to be_empty }
                    ^^^^ Use `let` instead of an instance variable.
      end
    RUBY
  end

  it 'ignores non-spec blocks' do
    expect_no_offenses(<<-RUBY)
      not_rspec do
        before { @foo = [] }
        it { expect(@foo).to be_empty }
      end
    RUBY
  end

  it 'finds an instance variable inside a shared example' do
    expect_offense(<<-RUBY)
      shared_examples 'shared example' do
        it { expect(@foo).to be_empty }
                    ^^^^ Use `let` instead of an instance variable.
      end
    RUBY
  end

  it 'ignores an instance variable without describe' do
    expect_no_offenses(<<-RUBY)
      @foo = []
      @foo.empty?
    RUBY
  end

  # Regression test for nevir/rubocop-rspec#115
  it 'ignores instance variables outside of specs' do
    expect_no_offenses(<<-RUBY, 'lib/source_code.rb')
      feature do
        @foo = bar

        @foo
      end
    RUBY
  end

  context 'when configured with AssignmentOnly', :config do
    subject(:cop) { described_class.new(config) }

    let(:cop_config) do
      { 'AssignmentOnly' => true }
    end

    it 'flags an instance variable when it is also assigned' do
      expect_offense(<<-RUBY)
        describe MyClass do
          before { @foo = [] }
          it { expect(@foo).to be_empty }
                      ^^^^ Use `let` instead of an instance variable.
        end
      RUBY
    end

    it 'ignores an instance variable when it is not assigned' do
      expect_no_offenses(<<-RUBY)
        describe MyClass do
          it { expect(@foo).to be_empty }
        end
      RUBY
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
rubocop-rspec-1.21.0 spec/rubocop/cop/rspec/instance_variable_spec.rb
rubocop-rspec-1.20.1 spec/rubocop/cop/rspec/instance_variable_spec.rb
rubocop-rspec-1.20.0 spec/rubocop/cop/rspec/instance_variable_spec.rb
rubocop-rspec-1.19.0 spec/rubocop/cop/rspec/instance_variable_spec.rb
rubocop-rspec-1.18.0 spec/rubocop/cop/rspec/instance_variable_spec.rb
rubocop-rspec-1.17.1 spec/rubocop/cop/rspec/instance_variable_spec.rb
rubocop-rspec-1.17.0 spec/rubocop/cop/rspec/instance_variable_spec.rb
rubocop-rspec-1.16.0 spec/rubocop/cop/rspec/instance_variable_spec.rb