Sha256: e2a8a056d7ff68d7267a4e0b277f0e46433b4e54bc4b9ea92125e6f139f0f9b3

Contents?: true

Size: 1.65 KB

Versions: 28

Compression:

Stored size: 1.65 KB

Contents

require_relative '../../spec_helper'
require_lib 'reek/smell_detectors/long_parameter_list'

RSpec.describe Reek::SmellDetectors::LongParameterList do
  it 'reports the right values' do
    src = <<-EOS
      class Alfa
        def bravo(charlie, delta, echo, foxtrot)
        end
      end
    EOS

    expect(src).to reek_of(:LongParameterList,
                           lines:   [2],
                           context: 'Alfa#bravo',
                           message: 'has 4 parameters',
                           source:  'string',
                           count:   4)
  end

  it 'does count all occurences' do
    src = <<-EOS
      class Alfa
        def bravo(charlie, delta, echo, foxtrot)
        end

        def golf(hotel, india, juliett, kilo)
        end
      end
    EOS

    expect(src).
      to reek_of(:LongParameterList, lines: [2], context: 'Alfa#bravo').
      and reek_of(:LongParameterList, lines: [5], context: 'Alfa#golf')
  end

  it 'reports nothing for 3 parameters' do
    src = 'def alfa(bravo, charlie, delta); end'
    expect(src).not_to reek_of(:LongParameterList)
  end

  it 'does not count an optional block' do
    src = 'def alfa(bravo, charlie, delta, &block); end'
    expect(src).not_to reek_of(:LongParameterList)
  end

  it 'does not report inner block with too many parameters' do
    src = <<-EOS
      def alfa(bravo)
        bravo.each { |charlie, delta, echo, foxtrot| }
      end
    EOS

    expect(src).not_to reek_of(:LongParameterList)
  end

  it 'reports 4 parameters with default parameters' do
    src = 'def alfa(bravo = 1, charlie = 2, delta = 3, echo = 4); end'
    expect(src).to reek_of(:LongParameterList)
  end
end

Version data entries

28 entries across 26 versions & 2 rubygems

Version Path
reek-4.6.0 spec/reek/smell_detectors/long_parameter_list_spec.rb
reek-4.5.6 spec/reek/smell_detectors/long_parameter_list_spec.rb
reek-4.5.5 spec/reek/smell_detectors/long_parameter_list_spec.rb
reek-4.5.4 spec/reek/smell_detectors/long_parameter_list_spec.rb
reek-4.5.3 spec/reek/smell_detectors/long_parameter_list_spec.rb
reek-4.5.2 spec/reek/smell_detectors/long_parameter_list_spec.rb
reek-4.5.1 spec/reek/smell_detectors/long_parameter_list_spec.rb
reek-4.5.0 spec/reek/smell_detectors/long_parameter_list_spec.rb