Module: Neospec::Report::Basic

Defined in:
lib/neospec/report/basic.rb

Class Method Summary collapse

Class Method Details

.call(results, output: $stdout) ⇒ Object



4
5
6
# File 'lib/neospec/report/basic.rb', line 4

def self.call(results, output: $stdout)
  output.puts "\n#{successes(results)}#{failures(results)}"
end

.failures(results) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/neospec/report/basic.rb', line 18

def self.failures(results)
  return if results.successful?

  output = "\n  Failures:\t#{results.failures.size}\n\n"
  output << "Failures:\n"

  output += results.failures.map do |failure|
    failure_output = ["  #{Neospec::Color::RED}#{failure.message}#{Neospec::Color::RESET}"]
    failure.stack.first(5).each do |location|
      failure_output << "    > #{location}"
    end

    failure_output.join("\n")
  end.join("\n\n")

  output
end

.formatted_duration(duration) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/neospec/report/basic.rb', line 36

def self.formatted_duration(duration)
  if duration < 1
    "#{(duration * 1000).round(2)} milliseconds"
  elsif duration < 60
    "#{duration.round(2)} seconds"
  elsif duration < 3600
    minutes = (duration / 60).to_i
    seconds = (duration % 60).to_i
    "#{minutes} minute#{(minutes == 1) ? "" : "s"} #{seconds} second#{(seconds == 1) ? "" : "s"}"
  elsif duration < 86400
    hours = (duration / 3600).to_i
    minutes = ((duration % 3600) / 60).to_i
    "#{hours} hour#{(hours == 1) ? "" : "s"} #{minutes} minute#{(minutes == 1) ? "" : "s"}"
  else
    days = (duration / 86400).to_i
    hours = ((duration % 86400) / 3600).to_i
    "#{days} day#{(days == 1) ? "" : "s"} #{hours} hour#{(hours == 1) ? "" : "s"}"
  end
end

.successes(results) ⇒ Object



8
9
10
11
12
13
14
15
16
# File 'lib/neospec/report/basic.rb', line 8

def self.successes(results)
  <<~STR.chomp
    Finished in #{formatted_duration(results.duration)}

    Results:
      Specs:\t#{results.specs.size}
      Expectations:\t#{results.expectations}
  STR
end