Sha256: e06d058ccbabf59c67bb82deb9d90d442964df75a0d8077f27a409f4bee45484

Contents?: true

Size: 796 Bytes

Versions: 5

Compression:

Stored size: 796 Bytes

Contents

require 'chutney/linter'

module Chutney
  # service class to lint for file name differs feature name
  class FileNameDiffersFeatureName < Linter
    def lint
      features do |file, feature|
        next unless feature.include? :name
        
        expected_feature_name = title_case file
        next if ignore_whitespaces(feature[:name]).casecmp(ignore_whitespaces(expected_feature_name)) == 0
        
        references = [reference(file, feature)]
        add_error(references, "Feature name should be '#{expected_feature_name}'")
      end
    end

    def title_case(value)
      value = File.basename(value, '.feature')
      value.split('_').collect(&:capitalize).join(' ')
    end

    def ignore_whitespaces(value)
      value.delete('-').delete('_').delete(' ')
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
chutney-1.6.3 lib/chutney/linter/file_name_differs_feature_name.rb
chutney-1.6.2 lib/chutney/linter/file_name_differs_feature_name.rb
chutney-1.6.1 lib/chutney/linter/file_name_differs_feature_name.rb
chutney-1.6.0 lib/chutney/linter/file_name_differs_feature_name.rb
chutney-0.5.0 lib/chutney/linter/file_name_differs_feature_name.rb