class ApiMiniTester::TestFormatter
Constants
- RESULT_SECTIONS
- SECTION_TRANSLATE
Attributes
results[RW]
Public Class Methods
new(results)
click to toggle source
# File lib/api_mini_tester/test_formatter.rb, line 17 def initialize(results) @results = results end
Public Instance Methods
array_in(array)
click to toggle source
# File lib/api_mini_tester/test_formatter.rb, line 130 def array_in(array) list = '' array.each do |item| if item.instance_of?(Array) list << array_in(item) elsif item.instance_of?(Hash) list << hash_in(item) end end list end
clean_up_infinity()
click to toggle source
# File lib/api_mini_tester/test_formatter.rb, line 118 def clean_up_infinity res = results.dup res[:scenarios].each do |scenario| scenario[:steps].each do |step| step[:timing].each do |timing| timing[:exp] = "Not Specified" if timing.is_a?(Hash) && timing[:exp] && timing[:exp] == Float::INFINITY end end end res end
failed_in_scenario(scenario)
click to toggle source
# File lib/api_mini_tester/test_formatter.rb, line 96 def failed_in_scenario(scenario) count = 0 scenario[:steps].each do |step| [:status, :headers, :body, :timing].each do |section| count += step[section].map { |res| res[:result] }.select(&:!).size end end count end
hash_in(hash)
click to toggle source
# File lib/api_mini_tester/test_formatter.rb, line 142 def hash_in(hash) list = '' hash.each do |k, v| if v.instance_of?(Hash) list << hash_in(v) elsif v.instance_of?(Array) list << array_in(v) elsif k == :result list << (v ? '.' : 'E') end end list end
hostname()
click to toggle source
# File lib/api_mini_tester/test_formatter.rb, line 106 def hostname Socket.gethostname end
md_section_content(step, section)
click to toggle source
# File lib/api_mini_tester/test_formatter.rb, line 185 def md_section_content(step, section) output = [] output << md_section_header(SECTION_TRANSLATE[section], nil, 4) step[section].each do |status| output << "* `#{status[:result]}`: #{status[:desc]}" end output << "" output end
md_section_header(header, desc, level)
click to toggle source
# File lib/api_mini_tester/test_formatter.rb, line 160 def md_section_header(header, desc, level) output = [] output << "#{'#' * level} #{header}" output << "" if desc output << "Desc: #{desc}" output << "" end output end
md_step_header(step)
click to toggle source
# File lib/api_mini_tester/test_formatter.rb, line 171 def md_step_header(step) output = [] output.push(*md_section_header(step[:name], step[:desc], 3)) output.push(*md_section_header("Call", nil, 4)) step[:url].each do |url| output << "* #{url[:desc]}" end step[:method].each do |method| output << "* #{method[:desc]}" end output << "" output end
name_to_camelcase(name)
click to toggle source
# File lib/api_mini_tester/test_formatter.rb, line 110 def name_to_camelcase(name) name.gsub(/[[:space:]]+/, '_').downcase.gsub(/(?:^|_)([a-z])/) { $1.upcase } end
scenarios_count()
click to toggle source
# File lib/api_mini_tester/test_formatter.rb, line 64 def scenarios_count results[:scenarios].size end
step_timing(step)
click to toggle source
# File lib/api_mini_tester/test_formatter.rb, line 114 def step_timing(step) step[:timing].first ? step[:timing].first[:real] : 0 end
steps_count(scenario)
click to toggle source
# File lib/api_mini_tester/test_formatter.rb, line 68 def steps_count(scenario) scenario[:steps].size end
test_count(step)
click to toggle source
# File lib/api_mini_tester/test_formatter.rb, line 72 def test_count(step) count = 0 [:status, :headers, :body, :timing].each do |section| count += step[section].size end count end
tests_in_scenario(scenario)
click to toggle source
# File lib/api_mini_tester/test_formatter.rb, line 80 def tests_in_scenario(scenario) count = 0 scenario[:steps].each do |step| count += test_count(step) end count end
time_in_scenario(scenario)
click to toggle source
# File lib/api_mini_tester/test_formatter.rb, line 88 def time_in_scenario(scenario) time = 0.0 scenario[:steps].each do |step| time += step[:timing].first[:real] end time end
timestamp()
click to toggle source
# File lib/api_mini_tester/test_formatter.rb, line 60 def timestamp Time.now.strftime("%FT%T%:z") end
to_json()
click to toggle source
# File lib/api_mini_tester/test_formatter.rb, line 21 def to_json clean_up_infinity.to_json end
to_junit_xml()
click to toggle source
# File lib/api_mini_tester/test_formatter.rb, line 29 def to_junit_xml xml = Builder::XmlMarkup.new(indent: 2) xml.instruct! :xml, encoding: "UTF-8" xml.testsuites do results[:scenarios].each do |scenario| xml.testsuite name: scenario[:name], timestamp: timestamp, hostname: hostname, tests: tests_in_scenario(scenario), skipped: 0, failures: failed_in_scenario(scenario), errors: 0, time: time_in_scenario(scenario) do scenario[:steps].each do |step| classname = name_to_camelcase(step[:name]) RESULT_SECTIONS.each do |section| step[section].each do |s| xml.testcase classname: classname, name: s[:name], time: step_timing(step), file: "./#{classname}.rb" do s[:result] ? nil : xml.failure(message: s[:desc]) end end end end end end end end
to_markdown()
click to toggle source
# File lib/api_mini_tester/test_formatter.rb, line 195 def to_markdown output = [] output << md_section_header(results[:name], results[:desc], 1) results[:scenarios].each do |scenario| output << md_section_header(scenario[:name], scenario[:desc], 2) scenario[:steps].each do |step| output.push(*md_step_header(step)) RESULT_SECTIONS.each do |section| output.push(*md_section_content(step, section)) end end end output.join("\n") end
to_simple()
click to toggle source
# File lib/api_mini_tester/test_formatter.rb, line 156 def to_simple hash_in results end
to_yaml()
click to toggle source
# File lib/api_mini_tester/test_formatter.rb, line 25 def to_yaml clean_up_infinity.to_yaml end