Sha256: 326de50aa14660b8fa43e676e3888a5eb2a74a44028f36a01af0c2a1eea4d8b6
Contents?: true
Size: 1.9 KB
Versions: 1
Compression:
Stored size: 1.9 KB
Contents
require 'spec_helper' require 'reek/smells/too_many_instance_variables' require 'reek/examiner' require 'reek/core/code_parser' require 'reek/smells/smell_detector_shared' include Reek include Reek::Smells describe TooManyInstanceVariables do before(:each) do @source_name = 'elephant' @detector = TooManyInstanceVariables.new(@source_name) end it_should_behave_like 'SmellDetector' context 'counting instance variables' do it 'should not report 9 ivars' do expect('# clean class for testing purposes class Empty;def ivars() @aa=@ab=@ac=@ad=@ae=@af=@ag=@ah=@ai=4; end;end').not_to reek end it 'counts each ivar only once' do expect('# clean class for testing purposes class Empty;def ivars() @aa=@ab=@ac=@ad=@ae=@af=@ag=@ah=@ai=4;@aa=3; end;end').not_to reek end it 'should report 10 ivars' do expect('# smelly class for testing purposes class Empty;def ivars() @aa=@ab=@ac=@ad=@ae=@af=@ag=@ah=@ai=@aj=4; end;end').to reek_only_of(:TooManyInstanceVariables) end it 'should not report 10 ivars in 2 extensions' do src = <<EOS # clean class for testing purposes class Full;def ivars_a() @aa=@ab=@ac=@ad=@ae; end;end # clean class for testing purposes class Full;def ivars_b() @af=@ag=@ah=@ai=@aj; end;end EOS expect(src).not_to reek end end it 'reports correctly when the class has 10 instance variables' do src = <<EOS # smelly class for testing purposes class Empty def ivars @aa=@ab=@ac=@ad=@ae=@af=@ag=@ah=@ai=@aj=4 end end EOS ctx = CodeContext.new(nil, src.to_reek_source.syntax_tree) @warning = @detector.examine_context(ctx)[0] expect(@warning.source).to eq(@source_name) expect(@warning.smell_class).to eq('LargeClass') expect(@warning.subclass).to eq(TooManyInstanceVariables::SMELL_SUBCLASS) expect(@warning.smell[TooManyInstanceVariables::IVAR_COUNT_KEY]).to eq(10) expect(@warning.lines).to eq([2]) end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
reek-1.4.0 | spec/reek/smells/too_many_instance_variables_spec.rb |