class ActiveMocker::DisplayErrors

Attributes

errors[R]
failed_models[RW]
model_count[R]
out[R]
success_count[RW]

Public Class Methods

new(model_count, out: STDERR) click to toggle source
# File lib/active_mocker/display_errors.rb, line 8
def initialize(model_count, out: STDERR)
  @errors        = []
  @success_count = 0
  @model_count   = model_count
  @failed_models = []
  @out           = out
end

Public Instance Methods

add(errors) click to toggle source
# File lib/active_mocker/display_errors.rb, line 16
def add(errors)
  @errors.concat([*errors])
end
any_errors?() click to toggle source
# File lib/active_mocker/display_errors.rb, line 32
def any_errors?
  uniq_errors.count > 0
end
display_errors() click to toggle source
# File lib/active_mocker/display_errors.rb, line 36
def display_errors
  uniq_errors.each do |e|
    next unless ENV["DEBUG"] || !(e.level == :debug)

    display_verbosity_three(e) || display_verbosity_two(e)
  end

  display_verbosity_one
end
error_summary() click to toggle source
# File lib/active_mocker/display_errors.rb, line 46
def error_summary
  display "errors: #{error_count}, warn: #{warn}, info: #{info}"
  display "Failed models: #{failed_models.join(", ")}" if failed_models.count > 0
end
number_models_mocked() click to toggle source
# File lib/active_mocker/display_errors.rb, line 51
def number_models_mocked
  if success_count < model_count || any_errors?
    display "Mocked #{success_count} ActiveRecord #{plural("Model", success_count)} out of #{model_count} #{plural("file", model_count)}."
  end
end
uniq_errors() click to toggle source
# File lib/active_mocker/display_errors.rb, line 28
def uniq_errors
  @uniq_errors ||= errors.flatten.compact.uniq.sort_by(&:class_name)
end
wrap_an_exception(e, model_name) click to toggle source
# File lib/active_mocker/display_errors.rb, line 24
def wrap_an_exception(e, model_name)
  add ErrorObject.build_from(exception: e, class_name: model_name)
end
wrap_errors(errors, model_name, type: nil) click to toggle source
# File lib/active_mocker/display_errors.rb, line 20
def wrap_errors(errors, model_name, type: nil)
  add errors.map { |e| ErrorObject.build_from(object: e, class_name: model_name, type: type ? type : e.try(:type)) }
end

Private Instance Methods

display(msg) click to toggle source
# File lib/active_mocker/display_errors.rb, line 63
def display(msg)
  out.puts(msg)
end
display_error_header(e) click to toggle source
# File lib/active_mocker/display_errors.rb, line 91
def display_error_header(e)
  display "#{e.class_name} has the following errors:"
  display e.message.colorize(e.level_color)
end
display_original_error(e) click to toggle source
# File lib/active_mocker/display_errors.rb, line 76
def display_original_error(e)
  original = e.original_error
  return unless original

  display original.message.colorize(e.level_color)
  display original.backtrace
  display original.class.name.colorize(e.level_color)
end
display_verbosity_one() click to toggle source
# File lib/active_mocker/display_errors.rb, line 96
def display_verbosity_one
  return unless ActiveMocker::Config.error_verbosity > 0

  error_summary if any_errors?

  number_models_mocked

  return unless any_errors?
  display "To see more/less detail set ERROR_VERBOSITY = 0, 1, 2, 3"
end
display_verbosity_three(error) click to toggle source
# File lib/active_mocker/display_errors.rb, line 67
def display_verbosity_three(error)
  return unless ActiveMocker::Config.error_verbosity == 3

  display_error_header(error)
  display error.level

  display_original_error(error)
end
display_verbosity_two(e) click to toggle source
# File lib/active_mocker/display_errors.rb, line 85
def display_verbosity_two(e)
  return unless ActiveMocker::Config.error_verbosity == 2

  display_error_header(e)
end
error_count() click to toggle source
# File lib/active_mocker/display_errors.rb, line 107
def error_count
  errors_for(:red)
end
errors_for(level) click to toggle source
# File lib/active_mocker/display_errors.rb, line 119
def errors_for(level)
  uniq_errors.count { |e| [level].include? e.level_color }
end
info() click to toggle source
# File lib/active_mocker/display_errors.rb, line 115
def info
  errors_for(:default)
end
plural(string, count, plural="s") click to toggle source
# File lib/active_mocker/display_errors.rb, line 59
def plural(string, count, plural="s")
  count > 1 || count.zero? ? "#{string}#{plural}" : string
end
warn() click to toggle source
# File lib/active_mocker/display_errors.rb, line 111
def warn
  errors_for(:yellow)
end