Module: Assert::View::Helpers::Common

Included in:
Base
Defined in:
lib/assert/view/helpers/common.rb

Instance Method Summary collapse

Instance Method Details

#all_pass?Boolean

Returns:

  • (Boolean)


34
35
36
# File 'lib/assert/view/helpers/common.rb', line 34

def all_pass?
  self.count(:pass) == self.count(:results)
end

#all_pass_result_summary_msgObject

generate an appropriate result summary msg for all tests passing



115
116
117
118
119
120
121
122
123
# File 'lib/assert/view/helpers/common.rb', line 115

def all_pass_result_summary_msg
  if self.count(:results) < 1
    "uhh..."
  elsif self.count(:results) == 1
    "pass"
  else
    "all pass"
  end
end

#count(type) ⇒ Object



26
27
28
# File 'lib/assert/view/helpers/common.rb', line 26

def count(type)
  self.suite.count(type)
end

#matched_result_details_for(match, tests, result_order = :normal) ⇒ Object

get all the result details for a set of tests matching a file or context



76
77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/assert/view/helpers/common.rb', line 76

def matched_result_details_for(match, tests, result_order=:normal)
  context_match = match.kind_of?(Class) && match.ancestors.include?(Assert::Context)
  file_match = match.kind_of?(String)

  matching_tests = if context_match
    tests.select {|test| test.context_info.klass == match}
  elsif file_match
    tests.select {|test| test.context_info.file == match}
  else
    tests
  end

  result_details_for(matching_tests, result_order)
end

#ocurring_result_typesObject

return a list of result symbols that have actually occurred



99
100
101
102
103
# File 'lib/assert/view/helpers/common.rb', line 99

def ocurring_result_types
  @result_types ||= [
    :pass, :fail, :ignore, :skip, :error
  ].select { |result_sym| self.count(result_sym) > 0 }
end

#ordered_suite_contextsObject



45
46
47
# File 'lib/assert/view/helpers/common.rb', line 45

def ordered_suite_contexts
  self.suite_contexts.sort{|a,b| a.to_s <=> b.to_s}
end

#ordered_suite_filesObject



56
57
58
# File 'lib/assert/view/helpers/common.rb', line 56

def ordered_suite_files
  self.suite_files.sort{|a,b| a.to_s <=> b.to_s}
end

#result_count_statementObject



139
140
141
# File 'lib/assert/view/helpers/common.rb', line 139

def result_count_statement
  "#{self.count(:results)} result#{'s' if self.count(:results) != 1}"
end

#result_details_for(tests, result_order = :normal) ⇒ Object

get all the result details for a set of tests



61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/assert/view/helpers/common.rb', line 61

def result_details_for(tests, result_order=:normal)
  test_index = 0
  tests.collect do |test|
    test_index += 1

    details = test.results.
      collect { |result| ResultDetails.new(result, test, test_index) }

    details.reverse! if result_order == :reversed

    details
  end.compact.flatten
end

#result_summary_msg(result_type) ⇒ Object

print a result summary message for a given result type



106
107
108
109
110
111
112
# File 'lib/assert/view/helpers/common.rb', line 106

def result_summary_msg(result_type)
  if result_type == :pass && self.all_pass?
    self.all_pass_result_summary_msg
  else
    "#{self.count(result_type)} #{result_type.to_s}"
  end
end

#results_summary_sentenceObject

generate a sentence fragment describing the breakdown of test results if a block is given, yield each msg in the breakdown for custom formatting



127
128
129
130
131
132
133
# File 'lib/assert/view/helpers/common.rb', line 127

def results_summary_sentence
  summaries = self.ocurring_result_types.collect do |result_sym|
    summary_msg = self.result_summary_msg(result_sym)
    block_given? ? yield(summary_msg, result_sym) : summary_msg
  end
  self.to_sentence(summaries)
end

#run_time(format = '%.6f') ⇒ Object

get the formatted suite run time



18
19
20
# File 'lib/assert/view/helpers/common.rb', line 18

def run_time(format='%.6f')
  format % self.suite.run_time
end

#runner_seedObject



22
23
24
# File 'lib/assert/view/helpers/common.rb', line 22

def runner_seed
  self.suite.runner_seed
end

#show_result_details?(result) ⇒ Boolean

only show result details for failed or errored results show result details if a skip or passed result was issues w/ a message

Returns:

  • (Boolean)


93
94
95
96
# File 'lib/assert/view/helpers/common.rb', line 93

def show_result_details?(result)
  ([:fail, :error].include?(result.to_sym)) ||
  ([:skip, :ignore].include?(result.to_sym) && result.message)
end

#suite_contextsObject

get a uniq list of contexts for the test suite



39
40
41
42
43
# File 'lib/assert/view/helpers/common.rb', line 39

def suite_contexts
  @suite_contexts ||= self.suite.tests.inject([]) do |contexts, test|
    contexts << test.context_info.klass
  end.uniq
end

#suite_filesObject

get a uniq list of files containing contexts for the test suite



50
51
52
53
54
# File 'lib/assert/view/helpers/common.rb', line 50

def suite_files
  @suite_files ||= self.suite.tests.inject([]) do |files, test|
    files << test.context_info.file
  end.uniq
end

#test_count_statementObject



135
136
137
# File 'lib/assert/view/helpers/common.rb', line 135

def test_count_statement
  "#{self.count(:tests)} test#{'s' if self.count(:tests) != 1}"
end

#tests?Boolean

Returns:

  • (Boolean)


30
31
32
# File 'lib/assert/view/helpers/common.rb', line 30

def tests?
  self.count(:tests) > 0
end

#to_sentence(things) ⇒ Object

generate a comma-seperated sentence fragment given a list of things



144
145
146
147
148
149
150
# File 'lib/assert/view/helpers/common.rb', line 144

def to_sentence(things)
  if things.size <= 2
    things.join(things.size == 2 ? ' and ' : '')
  else
    [things[0..-2].join(", "), things.last].join(", and ")
  end
end