Class: QueenCheck::ResultReport

Inherits:
Array
  • Object
show all
Defined in:
lib/queencheck/result.rb

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ ResultReport

Returns a new instance of ResultReport.



24
25
26
27
# File 'lib/queencheck/result.rb', line 24

def initialize(*args)
  super(*args)
  @labels = {}
end

Instance Method Details

#count(label = :all, list = self) ⇒ Object



73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/queencheck/result.rb', line 73

def count(label = :all, list = self)
  case label
  when :all, :tests
    self.size
  when :success, :successes
    self.successes.size
  when :failure, :failures
    self.failures.size
  when :exception, :exceptions
    self.exceptions.size
  else
    raise ArgumentError, "`#{label}` is not valid label" if !@labels.has_key?(label)
    list.reject {|result|
      !@labels[label].call(*result.properties)
    }.size
  end
end

#exceptionsObject



103
104
105
# File 'lib/queencheck/result.rb', line 103

def exceptions
  self.reject{|result| !result.is_exception? }
end

#failuresObject



99
100
101
# File 'lib/queencheck/result.rb', line 99

def failures
  self.reject{|result| result.is_success? }
end

#labeling(label, &block) ⇒ Object



91
92
93
# File 'lib/queencheck/result.rb', line 91

def labeling(label, &block)
  @labels[label] = block
end

#pretty_reportObject



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/queencheck/result.rb', line 29

def pretty_report
  justify = count(:all).to_s.size
  label_justify = @labels.keys.map{|label| label.size}.max
  [
    "Tests: ".green + count(:all).to_s.colorize(count(:all) == count(:success) ? :green : :red),
    "  ✓ Successes  : #{count(:success).to_s.rjust(justify)}#{
      (@labels.empty? ?  '' : "\n") + @labels.keys.map { |label|
        "    #{label.ljust(label_justify)} : #{count(label, successes).to_s.rjust(justify)}"
      }.join("\n")
    }".green,
    "  ✗ Failures   : #{count(:failures).to_s.rjust(justify)}#{
      (@labels.empty? ?  '' : "\n") + @labels.keys.map { |label|
        "    #{label.ljust(label_justify)} : #{count(label, failures).to_s.rjust(justify)}"
      }.join("\n")
    }".yellow,
    "  ✷ Exceptions : #{count(:exception).to_s.rjust(justify)}#{
      (@labels.empty? ?  '' : "\n") + @labels.keys.map { |label|
        "    #{label.ljust(label_justify)} : #{count(label, exceptions).to_s.rjust(justify)}"
      }.join("\n")
    }".red
  ].join("\n")
end

#report(with_label = true) ⇒ Object



52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/queencheck/result.rb', line 52

def report(with_label = true)
  [
    ["tests", count(:all)],
    ["success", count(:success)],
    ["failure", count(:failure)],
    ["exception", count(:exception)]
  ] + (
    if with_label
      report_label
    else
      []
    end
  )
end

#report_labelObject



67
68
69
70
71
# File 'lib/queencheck/result.rb', line 67

def report_label
  @labels.keys.map { | label |
    [label, count(label)]
  }
end

#successesObject



95
96
97
# File 'lib/queencheck/result.rb', line 95

def successes
  self.reject{|result| result.is_failure? }
end