class Bucky::Core::TestCore::TestResult

Attributes

result[RW]

Public Class Methods

new() click to toggle source
# File lib/bucky/core/test_core/test_result.rb, line 17
def initialize
  @result = Test::Unit::TestResult.new
  @tdo = Bucky::Core::Database::TestDataOperator.new
end

Public Instance Methods

save(added_result_info) click to toggle source

Save test result @param [Array] added_result_info

# File lib/bucky/core/test_core/test_result.rb, line 24
def save(added_result_info)
  # Format data before saving to database.
  test_suite_result = format_result_summary(added_result_info)
  @tdo.save_test_result(test_suite_result)
end

Private Instance Methods

format_result_summary(added_result_info) click to toggle source

Return Bucky::Test::Unit::TestResult Object @param [Array] added_result_info @return [Array] Array data for Sequel

# File lib/bucky/core/test_core/test_result.rb, line 35
def format_result_summary(added_result_info)
  # For sequel
  data_set = {}
  error_test_case_name = []

  ##############################################
  # Store failed cases in data set. #
  ##############################################
  @result.faults.each do |fault|
    case_name = fault.method_name
    case_id = @tdo.get_test_case_id(added_result_info[case_name.to_sym][:test_suite_id], added_result_info[case_name.to_sym][:case_name])
    error_test_case_name.push(case_name.to_sym)
    data_set[case_name] =
      [
        id = nil,
        test_case_id = case_id,
        error_title = fault.message,
        error_message = fault.location.join("\n"),
        elapsed_time = added_result_info[case_name.to_sym][:elapsed_time],
        is_error = 1,
        job_id = $job_id,
        round = $round
      ]
  end

  ############################################
  # Store passed cases in data set. #
  ############################################
  added_result_info.delete_if { |k, _v| error_test_case_name.include?(k) }
  added_result_info.each do |case_name, added_info|
    case_id = @tdo.get_test_case_id(added_info[:test_suite_id], added_info[:case_name])
    data_set[case_name] =
      [
        id = nil,
        test_case_id = case_id,
        error_title = '',
        error_message = '',
        elapsed_time = added_info[:elapsed_time],
        is_error = 0,
        job_id = $job_id,
        round = $round
      ]
  end

  # Data set for sequel
  data_set_ary = data_set.map { |_, v| v }

  # Table colomn
  column_name_ary = %i[id test_case_id error_title error_message elapsed_time is_error job_id round]
  {
    column: column_name_ary,
    data_set: data_set_ary
  }
end