From 877ae74236f6773c6fa25f907ebe2fac65615a7e Mon Sep 17 00:00:00 2001 From: Phil Lee Date: Mon, 30 Jan 2023 12:10:47 +0000 Subject: [PATCH] create logs iff the log itself is valid --- .../bulk_upload/lettings/validator.rb | 2 +- .../bulk_upload/lettings/validator_spec.rb | 34 ++++++++++++++++++- spec/support/bulk_upload/log_to_csv.rb | 7 ++-- 3 files changed, 38 insertions(+), 5 deletions(-) diff --git a/app/services/bulk_upload/lettings/validator.rb b/app/services/bulk_upload/lettings/validator.rb index b96739836..18412f78b 100644 --- a/app/services/bulk_upload/lettings/validator.rb +++ b/app/services/bulk_upload/lettings/validator.rb @@ -171,7 +171,7 @@ class BulkUpload::Lettings::Validator end def create_logs? - row_parsers.all?(&:valid?) + row_parsers.all? { |row_parser| row_parser.log.valid? } end def self.question_for_field(field) diff --git a/spec/services/bulk_upload/lettings/validator_spec.rb b/spec/services/bulk_upload/lettings/validator_spec.rb index 661119448..ebd3fcc80 100644 --- a/spec/services/bulk_upload/lettings/validator_spec.rb +++ b/spec/services/bulk_upload/lettings/validator_spec.rb @@ -78,7 +78,7 @@ RSpec.describe BulkUpload::Lettings::Validator do before do file.write(BulkUpload::LogToCsv.new(log:, line_ending: "\r\n", col_offset: 0).to_csv_row) - file.rewind + file.close end it "creates validation errors" do @@ -112,4 +112,36 @@ RSpec.describe BulkUpload::Lettings::Validator do end end end + + describe "#create_logs?" do + context "when a log is not valid?" do + let(:log_1) { build(:lettings_log, :completed, created_by: user) } + let(:log_2) { build(:lettings_log, :completed, created_by: user) } + + before do + file.write(BulkUpload::LogToCsv.new(log: log_1, line_ending: "\r\n", col_offset: 0).to_csv_row) + file.write(BulkUpload::LogToCsv.new(log: log_2, line_ending: "\r\n", col_offset: 0, overrides: { illness: 100 }).to_csv_row) + file.close + end + + it "returns false" do + expect(validator).not_to be_create_logs + end + end + + context "when all logs valid?" do + let(:log_1) { build(:lettings_log, :completed, created_by: user) } + let(:log_2) { build(:lettings_log, :completed, created_by: user) } + + before do + file.write(BulkUpload::LogToCsv.new(log: log_1, line_ending: "\r\n", col_offset: 0).to_csv_row) + file.write(BulkUpload::LogToCsv.new(log: log_2, line_ending: "\r\n", col_offset: 0).to_csv_row) + file.close + end + + it "returns true" do + expect(validator).to be_create_logs + end + end + end end diff --git a/spec/support/bulk_upload/log_to_csv.rb b/spec/support/bulk_upload/log_to_csv.rb index 7734d9fe2..628ee14b8 100644 --- a/spec/support/bulk_upload/log_to_csv.rb +++ b/spec/support/bulk_upload/log_to_csv.rb @@ -1,10 +1,11 @@ class BulkUpload::LogToCsv - attr_reader :log, :line_ending, :col_offset + attr_reader :log, :line_ending, :col_offset, :overrides - def initialize(log:, line_ending: "\n", col_offset: 1) + def initialize(log:, line_ending: "\n", col_offset: 1, overrides: {}) @log = log @line_ending = line_ending @col_offset = col_offset + @overrides = overrides end def to_csv_row @@ -135,7 +136,7 @@ class BulkUpload::LogToCsv nil, log.incfreq, log.sheltered, - log.illness, + overrides[:illness] || log.illness, log.illness_type_1, log.illness_type_2, # 120