Sha256: bbd27c65644af7187ab872b9fae3d40a62d470bfe68442a59f67d8d7b573b906

Contents?: true

Size: 1.2 KB

Versions: 4

Compression:

Stored size: 1.2 KB

Contents

require_relative 'result_collection'
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.is_a?(ResultCollection) ? results : ResultCollection.new(results)
    end

    def summarize
      return 'pass' if optional_results_passing_criteria_met?

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

    private

    def prioritized_result_strings
      Entities::Result::RESULT_OPTIONS
    end

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

    def all_optional_results?
      results.required_results.blank?
    end

    def results_for_summary
      all_optional_results? ? results : results.required_results
    end

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

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
inferno_core-0.5.2 lib/inferno/result_summarizer.rb
inferno_core-0.5.1 lib/inferno/result_summarizer.rb
inferno_core-0.5.0 lib/inferno/result_summarizer.rb
inferno_core-0.4.44 lib/inferno/result_summarizer.rb