enkessler/cuke_cataloger

View on GitHub
lib/cuke_cataloger/formatters/text_report_formatter.rb

Summary

Maintainability
A
0 mins
Test Coverage
# TODO: have better testing so that this can be safely refactored
# rubocop:disable Metrics/AbcSize - Not going to mess with this, given how little testing is present

module CukeCataloger

  # Not a part of the public API. Subject to change at any time.
  class TextReportFormatter

    # Formats validation results into a readable text report
    def format_data(data)
      report_text = "Validation Results\nProblems found: #{data.count}\n\n"


      results_by_category = Hash.new { |hash, key| hash[key] = [] }

      data.each do |result|
        results_by_category[result[:problem]] << result
      end

      results_by_category.each_key do |problem_category|
        report_text << "#{problem_category} problems: #{results_by_category[problem_category].count}\n"
      end

      results_by_category.each_key do |problem_category|
        report_text << "\n\n#{problem_category} problems (#{results_by_category[problem_category].count}):\n"

        results_by_category[problem_category].each do |result|
          report_text << "#{result[:test]}\n"
        end
      end

      report_text
    end

  end
end

# rubocop:enable Metrics/AbcSize