class TestOutputPresenter

Public Class Methods

new(test_results) click to toggle source
# File lib/test_output_presenter.rb, line 12
def initialize(test_results)
  @test_results = test_results
  @tests = test_results.tests unless @test_results.compile_error?
end
parse(test_results) click to toggle source
# File lib/test_output_presenter.rb, line 2
def self.parse(test_results)
  parser = self.new(test_results)

  if test_results.compile_error?
    parser.parse_error
  else
    parser.parse
  end
end

Public Instance Methods

parse() click to toggle source
# File lib/test_output_presenter.rb, line 17
def parse
  output = ""

  output += dots_or_fs + "\n"
  if failures.count > 0
    output += blank_lines(3) + "\n"
    output += failed_tests + "\n"
  end
  output += blank_lines(2) + "\n"
  output += "#{@tests.count} tests ran, #{failures.count} red, #{passed.count} green"
  output += blank_lines(3)

  output
end
parse_error() click to toggle source
# File lib/test_output_presenter.rb, line 32
def parse_error
  [
    "Unable to run tests, SML says:".red,
    "",
    "",
    @test_results.message,
  ].join("\n")
end

Private Instance Methods

blank_lines(n) click to toggle source
# File lib/test_output_presenter.rb, line 43
def blank_lines(n)
  Array.new(n, "").join("\n")
end
dots_or_fs() click to toggle source
# File lib/test_output_presenter.rb, line 47
def dots_or_fs
  @tests.inject("") do |acc, test|
    if test.passed?
      acc += ".".green
    else
      acc += "F".red
    end
  end
end
failed_tests() click to toggle source
# File lib/test_output_presenter.rb, line 57
def failed_tests
  failures.map { |t| t.name.red }.join("\n")
end
failures() click to toggle source
# File lib/test_output_presenter.rb, line 61
def failures
  @tests.reject(&:passed?)
end
passed() click to toggle source
# File lib/test_output_presenter.rb, line 65
def passed
  @tests.select(&:passed?)
end