Sha256: a40dcc9fab37f639c158417748532e095fb5920adf034ddbd2e5c4b0131bfccf

Contents?: true

Size: 1.11 KB

Versions: 10

Compression:

Stored size: 1.11 KB

Contents

module Inferno
  # @private
  # This class takes an array of results and determines the overall result. This
  # is used to determine the result of a TestGroup/TestSuite based on the
  # results of it's children.
  class ResultSummarizer
    attr_reader :results

    def initialize(results)
      @results = results
    end

    def summarize
      return 'pass' if all_optional_results? &&
                       unique_result_strings.any?('pass') &&
                       unique_result_strings.none? { |result| %w[wait running].include? result }

      prioritized_result_strings.find { |result_string| unique_result_strings.include? result_string }
    end

    private

    def prioritized_result_strings
      Entities::Result::RESULT_OPTIONS
    end

    def required_results
      @required_results ||= results.select(&:required?)
    end

    def all_optional_results?
      required_results.blank?
    end

    def results_for_summary
      all_optional_results? ? results : required_results
    end

    def unique_result_strings
      @unique_result_strings ||=
        results_for_summary.map(&:result).uniq
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
inferno_core-0.4.39 lib/inferno/result_summarizer.rb
inferno_core-0.4.38 lib/inferno/result_summarizer.rb
inferno_core-0.4.35 lib/inferno/result_summarizer.rb
inferno_core-0.4.34 lib/inferno/result_summarizer.rb
inferno_core-0.4.33 lib/inferno/result_summarizer.rb
inferno_core-0.4.32 lib/inferno/result_summarizer.rb
inferno_core-0.4.31 lib/inferno/result_summarizer.rb
inferno_core-0.4.30 lib/inferno/result_summarizer.rb
inferno_core-0.4.29 lib/inferno/result_summarizer.rb
inferno_core-0.4.28 lib/inferno/result_summarizer.rb