class Swiftrail::Testrail::Assembler

Attributes

junit_test_suites[R]
swift_tests[R]

Public Class Methods

new(swift_tests, junit_test_suites) click to toggle source
# File lib/swiftrail/testrail/assembler.rb, line 9
def initialize(swift_tests, junit_test_suites)
  @swift_tests = swift_tests
  @junit_test_suites = junit_test_suites
end

Public Instance Methods

assemble() click to toggle source
# File lib/swiftrail/testrail/assembler.rb, line 14
def assemble
  intermediate_results.group_by(&:case_id).map do |k, v|
    Api::TestCaseResult.from(k, v)
  end
end

Private Instance Methods

intermediate_results() click to toggle source
# File lib/swiftrail/testrail/assembler.rb, line 24
def intermediate_results
  junit_test_suites.map(&method(:test_cases)).flatten
end
search_cases_ids(test_case) click to toggle source

lookup case ids in test_case name

# File lib/swiftrail/testrail/assembler.rb, line 42
def search_cases_ids(test_case)
  result = QuickNimble::Parser.new().extract_information(test_case.test_name)
  if result.case_ids.empty?
    []
  else
    result.case_ids.map do |case_id|
      IntermediateResult.new(result.test_name, result.test_name, result.test_name, test_case.success?, test_case.duration, test_case.failures, case_id)
    end
  end
end
swift_test_for(junit_test_case) click to toggle source
# File lib/swiftrail/testrail/assembler.rb, line 53
def swift_test_for(junit_test_case)
  tests = swift_tests.select do |test|
    test.class_name == junit_test_case.class_name &&
      test.test_name == junit_test_case.test_name
  end
  if tests.count > 1
    STDERR.puts(Error::Ambiguity.new(junit_test_case, tests))
    nil
  else 
    tests.first
  end
end
test_cases(test_suite) click to toggle source
# File lib/swiftrail/testrail/assembler.rb, line 28
def test_cases(test_suite)
  test_suite.test_cases.map do |test_case|
    swift_test = swift_test_for(test_case)
    if swift_test.nil?
      search_cases_ids(test_case)
    else
      swift_test.case_ids.map do |case_id|
        IntermediateResult.new(swift_test.file_name, swift_test.class_name, swift_test.test_name, test_case.success?, test_case.duration, test_case.failures, case_id)
      end
    end
  end
end