Sha256: 2006230542bea07c12440011246fc1cd2d48dacbd3196d752723ccee0b5feb0b

Contents?: true

Size: 1.67 KB

Versions: 9

Compression:

Stored size: 1.67 KB

Contents

RSpec.describe 'config/default.yml' do
  subject(:default_config) do
    RuboCop::ConfigLoader.load_file('config/default.yml')
  end

  let(:cop_names) do
    namespaces = {
      'rspec' => 'RSpec',
      'capybara' => 'Capybara',
      'factory_bot' => 'FactoryBot',
      'rails' => 'Rails'
    }
    glob = SpecHelper::ROOT.join('lib', 'rubocop', 'cop', 'rspec',
                                 '{,capybara,factory_bot,rails}', '*.rb')
    cop_names =
      Pathname.glob(glob).map do |file|
        file_name = file.basename('.rb').to_s
        cop_name  = file_name.gsub(/(^|_)(.)/) { Regexp.last_match(2).upcase }
        namespace = namespaces[file.dirname.basename.to_s]
        "#{namespace}/#{cop_name}"
      end

    cop_names - %w[RSpec/Cop]
  end

  let(:config_keys) do
    cop_names + %w[AllCops]
  end

  def cop_configuration(config_key)
    cop_names.map do |cop_name|
      cop_config = default_config[cop_name]

      cop_config.fetch(config_key) do
        raise "Expected #{cop_name} to have #{config_key} configuration key"
      end
    end
  end

  it 'has configuration for all cops' do
    expect(default_config.keys.sort).to eq(config_keys.sort)
  end

  it 'has descriptions for all cops' do
    expect(cop_configuration('Description')).to all(be_a(String))
  end

  it 'does not have newlines in cop descriptions' do
    cop_configuration('Description').each do |value|
      expect(value).not_to include("\n")
    end
  end

  it 'ends every description with a period' do
    expect(cop_configuration('Description')).to all(end_with('.'))
  end

  it 'includes Enabled: true for every cop' do
    expect(cop_configuration('Enabled')).to all(be(true).or(be(false)))
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
rubocop-rspec-1.29.1 spec/project/default_config_spec.rb
rubocop-rspec-1.29.0 spec/project/default_config_spec.rb
rubocop-rspec-1.28.0 spec/project/default_config_spec.rb
rubocop-rspec-1.27.0 spec/project/default_config_spec.rb
rubocop-rspec-1.26.0 spec/project/default_config_spec.rb
rubocop-rspec-1.25.1 spec/project/default_config_spec.rb
rubocop-rspec-1.25.0 spec/project/default_config_spec.rb
rubocop-rspec-1.24.0 spec/project/default_config_spec.rb
rubocop-rspec-1.23.0 spec/project/default_config_spec.rb