class FactoryTrace::Writers::ReportWriter

Constants

CODES
COLORS

Public Instance Methods

write(results) click to toggle source

@param [Array<Hash>] results

# File lib/factory_trace/writers/report_writer.rb, line 17
def write(results)
  total_color = results.any? { |result| result[:code] == :unused && !result.key?(:value) } ? :red : :green

  results.each do |result|
    io.puts(convert(result, total_color: total_color))
  end
end

Private Instance Methods

append_definition_path(result) { || ... } click to toggle source
# File lib/factory_trace/writers/report_writer.rb, line 48
def append_definition_path(result)
  msg = yield
  return msg unless configuration.trace_definition? && result[:definition_path]

  "#{msg} => #{result[:definition_path]}"
end
colorize(color, msg) click to toggle source
# File lib/factory_trace/writers/report_writer.rb, line 42
def colorize(color, msg)
  return msg unless configuration.color

  "#{COLORS[color]}#{msg}\e[0m"
end
convert(result, total_color:) click to toggle source

@param [Hash<Symbol, Object>] result @param [Symbol] total_color

# File lib/factory_trace/writers/report_writer.rb, line 29
def convert(result, total_color:)
  case
  when result[:value]
    colorize(total_color, "total number of unique #{humanize_code(result[:code])} factories & traits: #{result[:value]}")
  when result[:factory_names] && result[:trait_name]
    append_definition_path(result) { "#{humanize_code(result[:code])} trait #{colorize(:blue, result[:trait_name])} of factory #{list(result[:factory_names])}" }
  when result[:factory_names]
    append_definition_path(result) { "#{humanize_code(result[:code])} factory #{list(result[:factory_names])}" }
  else
    append_definition_path(result) { "#{humanize_code(result[:code])} global trait #{colorize(:blue, result[:trait_name])}" }
  end
end
humanize_code(code) click to toggle source
# File lib/factory_trace/writers/report_writer.rb, line 55
def humanize_code(code)
  CODES[code]
end
list(elements, color: :blue) click to toggle source
# File lib/factory_trace/writers/report_writer.rb, line 59
def list(elements, color: :blue)
  elements.map { |element| colorize(color, element) }.join(', ')
end