class ActiveMocker::FileWriter

Constants

OtherErrors

Public Instance Methods

write!() click to toggle source
# File lib/active_mocker/file_writer.rb, line 12
def write!
  assure_dir_path_exists!

  safe_write { |f| process!(f) }
end

Private Instance Methods

add_error(error, type) click to toggle source
# File lib/active_mocker/file_writer.rb, line 95
def add_error(error, type)
  display_errors.wrap_errors(error, model_name, type: type)
end
add_errors!() click to toggle source
# File lib/active_mocker/file_writer.rb, line 90
def add_errors!
  add_error(schema.association_errors, :associations)
  add_error(schema.attribute_errors, :attributes)
end
assure_dir_path_exists!() click to toggle source
# File lib/active_mocker/file_writer.rb, line 59
def assure_dir_path_exists!
  unless File.exist?(File.dirname(mock_file_path))
    FileUtils.mkdir_p(File.dirname(mock_file_path))
  end
end
collect_errors(create_mock_errors) click to toggle source
# File lib/active_mocker/file_writer.rb, line 77
def collect_errors(create_mock_errors)
  add_errors!

  if create_mock_errors.present? || schema.attribute_errors?
    display_errors.failed_models << model_name
    File.delete(mock_file_path) if File.exist?(mock_file_path)
    display_errors.add(create_mock_errors)
    OtherErrors.new(false)
  else
    OtherErrors.new(true)
  end
end
create_mock(file_out, model) click to toggle source
# File lib/active_mocker/file_writer.rb, line 65
def create_mock(file_out, model)
  MockCreator.new(file:                 File.open(file),
                  file_out:             file_out,
                  schema_scrapper:      scrapper,
                  klasses_to_be_mocked: model_names,
                  enabled_partials:     enabled_partials,
                  mock_append_name:     config.mock_append_name,
                  active_record_model:  model).create
end
enabled_partials() click to toggle source
# File lib/active_mocker/file_writer.rb, line 99
def enabled_partials
  if config.disable_modules_and_constants
    MockCreator::ENABLED_PARTIALS_DEFAULT - [*:modules_constants]
  else
    MockCreator::ENABLED_PARTIALS_DEFAULT
  end
end
mock_file_name() click to toggle source
# File lib/active_mocker/file_writer.rb, line 55
def mock_file_name
  "#{model_name.underscore}_#{config.mock_append_name.underscore}.rb"
end
mock_file_path() click to toggle source
# File lib/active_mocker/file_writer.rb, line 51
def mock_file_path
  File.join(Config.mock_dir, mock_file_name)
end
process!(file_out) click to toggle source
# File lib/active_mocker/file_writer.rb, line 20
def process!(file_out)
  result = create_mock(file_out, model)
  status = collect_errors(result.errors)

  ok = result.completed? && status.successful?
  return unless ok

  display_errors.success_count += 1
end
rescue_clean_up(e, file_out) click to toggle source
# File lib/active_mocker/file_writer.rb, line 40
def rescue_clean_up(e, file_out)
  display_errors.failed_models << model_name
  file_out.close unless file_out.closed?
  File.delete(file_out.path) if File.exist?(file_out.path)
  display_errors.wrap_an_exception(e, model_name)
end
safe_write() { |file_out| ... } click to toggle source
# File lib/active_mocker/file_writer.rb, line 30
def safe_write
  File.open(mock_file_path, "w") do |file_out|
    begin
      yield file_out
    rescue StandardError => e
      rescue_clean_up(e, file_out)
    end
  end
end
schema() click to toggle source
# File lib/active_mocker/file_writer.rb, line 107
def schema
  @schema ||= Schema.new(ActiveRecordSchemaScrapper.new(model: model))
end
scrapper() click to toggle source
# File lib/active_mocker/file_writer.rb, line 47
def scrapper
  @scrapper ||= ActiveRecordSchemaScrapper.new(model: model)
end