Sha256: 786258ba5653cfd5bcc5a6ac16a3010572d9b6682c2addbc783f28c25b66cc91

Contents?: true

Size: 1.84 KB

Versions: 7

Compression:

Stored size: 1.84 KB

Contents

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

  it 'finds an instance variable inside a describe' do
    expect_violation(<<-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_violations(<<-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_violation(<<-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_violations(<<-RUBY)
      @foo = []
      @foo.empty?
    RUBY
  end

  # Regression test for nevir/rubocop-rspec#115
  it 'ignores instance variables outside of specs' do
    expect_no_violations(<<-RUBY, filename: '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_violation(<<-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_violations(<<-RUBY)
        describe MyClass do
          it { expect(@foo).to be_empty }
        end
      RUBY
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
rubocop-rspec-1.12.0 spec/rubocop/cop/rspec/instance_variable_spec.rb
rubocop-rspec-1.11.0 spec/rubocop/cop/rspec/instance_variable_spec.rb
rubocop-rspec-1.10.0 spec/rubocop/cop/rspec/instance_variable_spec.rb
rubocop-rspec-1.9.1 spec/rubocop/cop/rspec/instance_variable_spec.rb
rubocop-rspec-1.9.0 spec/rubocop/cop/rspec/instance_variable_spec.rb
rubocop-rspec-1.8.0 spec/rubocop/cop/rspec/instance_variable_spec.rb
rubocop-rspec-1.7.0 spec/rubocop/cop/rspec/instance_variable_spec.rb