From 8f381066aa1dbf71eb914ba3f7954eb14590e467 Mon Sep 17 00:00:00 2001 From: Kat Date: Wed, 9 Aug 2023 12:44:48 +0100 Subject: [PATCH] Add logger for logs import --- lib/tasks/full_import.rake | 16 ++++++++++------ spec/lib/tasks/full_import_spec.rb | 28 ++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 6 deletions(-) diff --git a/lib/tasks/full_import.rake b/lib/tasks/full_import.rake index 1a4a32dd4..6539f3385 100644 --- a/lib/tasks/full_import.rake +++ b/lib/tasks/full_import.rake @@ -50,13 +50,15 @@ namespace :import do 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) org_count = csv.length + logs_string = StringIO.new + logger = MultiLogger.new(Rails.logger, Logger.new(logs_string)) logs_import_list = [ - Import.new(Imports::LettingsLogsImportService, :create_logs, "logs"), - Import.new(Imports::SalesLogsImportService, :create_logs, "logs"), + Import.new(Imports::LettingsLogsImportService, :create_logs, "logs", logger), + 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| archive_path = row[1] @@ -64,16 +66,18 @@ namespace :import do 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 - 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| 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 - 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 desc "Trigger invite emails for imported users" diff --git a/spec/lib/tasks/full_import_spec.rb b/spec/lib/tasks/full_import_spec.rb index 716956b99..d39c30f1e 100644 --- a/spec/lib/tasks/full_import_spec.rb +++ b/spec/lib/tasks/full_import_spec.rb @@ -73,4 +73,32 @@ describe "full import", type: :task do 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