Browse Source

Added exception handling to export

pull/581/head
Ted 3 years ago
parent
commit
d40f5a891d
  1. 4
      app/services/exports/case_log_export_service.rb
  2. 14
      spec/services/exports/case_log_export_service_spec.rb

4
app/services/exports/case_log_export_service.rb

@ -11,6 +11,9 @@ module Exports
export = save_export_run(current_time) export = save_export_run(current_time)
write_master_manifest(export) write_master_manifest(export)
write_export_data(case_logs) write_export_data(case_logs)
export.save!
rescue StandardError => e
@logger.error "#{e.class}: #{e.message}. Caller: #{e.backtrace.first}"
end end
def is_omitted_field?(field_name) def is_omitted_field?(field_name)
@ -31,7 +34,6 @@ module Exports
export = LogsExport.new export = LogsExport.new
export.daily_run_number = last_daily_run_number + 1 export.daily_run_number = last_daily_run_number + 1
export.started_at = current_time export.started_at = current_time
export.save!
export export
end end

14
spec/services/exports/case_log_export_service_spec.rb

@ -83,14 +83,14 @@ RSpec.describe Exports::CaseLogExportService do
export = LogsExport.new(started_at: start_time, daily_run_number: 1) export = LogsExport.new(started_at: start_time, daily_run_number: 1)
export.save! export.save!
params = { from: start_time, to: time_now } params = { from: start_time, to: time_now }
expect(CaseLog).to receive(:where).with("updated_at >= :from and updated_at <= :to", params).and_return([]) allow(CaseLog).to receive(:where).with("updated_at >= :from and updated_at <= :to", params).and_return([])
export_service.export_case_logs export_service.export_case_logs
end end
context "when this is the first export" do context "when this is the first export" do
it "gets the logs for the timeframe up until the current time" do it "gets the logs for the timeframe up until the current time" do
params = { to: time_now } params = { to: time_now }
expect(CaseLog).to receive(:where).with("updated_at <= :to", params).and_return([]) allow(CaseLog).to receive(:where).with("updated_at <= :to", params).and_return([])
export_service.export_case_logs export_service.export_case_logs
end end
end end
@ -106,5 +106,15 @@ RSpec.describe Exports::CaseLogExportService do
export_service.export_case_logs export_service.export_case_logs
end end
end end
context "when export has an error" do
it "does not save a record in the database" do
allow(storage_service).to receive(:write_file).and_raise(StandardError.new("This is an exception"))
export = LogsExport.new
allow(LogsExport).to receive(:new).and_return(export)
expect(export).not_to receive(:save!)
export_service.export_case_logs
end
end
end end
end end

Loading…
Cancel
Save