Browse Source

Add logger for logs import

pull/1829/head
Kat 3 years ago
parent
commit
8f381066aa
  1. 16
      lib/tasks/full_import.rake
  2. 28
      spec/lib/tasks/full_import_spec.rb

16
lib/tasks/full_import.rake

@ -50,13 +50,15 @@ namespace :import do
s3_service = Storage::S3Service.new(Configuration::PaasConfigurationService.new, ENV["IMPORT_PAAS_INSTANCE"]) s3_service = Storage::S3Service.new(Configuration::PaasConfigurationService.new, ENV["IMPORT_PAAS_INSTANCE"])
csv = CSV.parse(s3_service.get_file_io(institutions_csv_name), headers: true) csv = CSV.parse(s3_service.get_file_io(institutions_csv_name), headers: true)
org_count = csv.length org_count = csv.length
logs_string = StringIO.new
logger = MultiLogger.new(Rails.logger, Logger.new(logs_string))
logs_import_list = [ logs_import_list = [
Import.new(Imports::LettingsLogsImportService, :create_logs, "logs"), Import.new(Imports::LettingsLogsImportService, :create_logs, "logs", logger),
Import.new(Imports::SalesLogsImportService, :create_logs, "logs"), Import.new(Imports::SalesLogsImportService, :create_logs, "logs", logger),
] ]
Rails.logger.info("Beginning log imports for #{org_count} organisations") logger.info("Beginning log imports for #{org_count} organisations")
csv.each do |row| csv.each do |row|
archive_path = row[1] archive_path = row[1]
@ -64,16 +66,18 @@ namespace :import do
archive_service = Storage::ArchiveService.new(archive_io) archive_service = Storage::ArchiveService.new(archive_io)
log_count = row[2].to_i + row[3].to_i + row[4].to_i + row[5].to_i log_count = row[2].to_i + row[3].to_i + row[4].to_i + row[5].to_i
Rails.logger.info("Importing logs for organisation #{row[0]}, expecting #{log_count} logs") logger.info("Importing logs for organisation #{row[0]}, expecting #{log_count} logs")
logs_import_list.each do |step| logs_import_list.each do |step|
if archive_service.folder_present?(step.folder) if archive_service.folder_present?(step.folder)
step.import_class.new(archive_service).send(step.import_method, step.folder) step.import_class.new(archive_service).send(step.import_method, step.folder, step.logger)
end end
end end
end end
Rails.logger.info("Log import complete") logger.info("Log import complete")
log_file = "#{File.basename(institutions_csv_name, File.extname(institutions_csv_name))}_logs.log"
s3_service.write_file(log_file, logs_string.string)
end end
desc "Trigger invite emails for imported users" desc "Trigger invite emails for imported users"

28
spec/lib/tasks/full_import_spec.rb

@ -73,4 +73,32 @@ describe "full import", type: :task do
end end
end end
end end
describe "import:logs" do
subject(:task) { Rake::Task["import:logs"] }
let(:archive_service) { instance_double(Storage::ArchiveService) }
before do
Rake.application.rake_require("tasks/full_import")
Rake::Task.define_task(:environment)
task.reenable
end
context "when calling the logs import" do
before do
allow(Storage::ArchiveService).to receive(:new).and_return(archive_service)
allow(archive_service).to receive(:folder_present?).and_return(false)
allow(Imports::LettingsLogsImportService).to receive(:new).and_return(instance_double(Imports::LettingsLogsImportService))
allow(Imports::SalesLogsImportService).to receive(:new).and_return(instance_double(Imports::SalesLogsImportService))
end
it "creates a report using given organisation csv" do
expect(Storage::S3Service).to receive(:new).with(paas_config_service, instance_name)
expect(storage_service).to receive(:write_file).with("some_name_logs.log", / INFO -- : Beginning log imports for 2 organisations/)
task.invoke("some_name.csv")
end
end
end
end end

Loading…
Cancel
Save