From 1f0516217f7f6cbf34615373b511a5552c81a46e Mon Sep 17 00:00:00 2001 From: Phil Lee Date: Wed, 12 Apr 2023 16:20:16 +0100 Subject: [PATCH] bulk upload duplicates discounts hidden logs --- .../lettings/year2022/row_parser.rb | 4 +- .../lettings/year2023/row_parser.rb | 4 +- .../lettings/year2022/row_parser_spec.rb | 33 +++++++++++++++++ .../lettings/year2023/row_parser_spec.rb | 37 ++++++++++++++++++- 4 files changed, 75 insertions(+), 3 deletions(-) diff --git a/app/services/bulk_upload/lettings/year2022/row_parser.rb b/app/services/bulk_upload/lettings/year2022/row_parser.rb index a3fbbc5af..f84682579 100644 --- a/app/services/bulk_upload/lettings/year2022/row_parser.rb +++ b/app/services/bulk_upload/lettings/year2022/row_parser.rb @@ -396,7 +396,9 @@ class BulkUpload::Lettings::Year2022::RowParser end def log_already_exists? - @log_already_exists ||= LettingsLog.exists?(duplicate_check_fields.index_with { |field| log.public_send(field) }) + @log_already_exists ||= LettingsLog + .where(status: %w[not_started in_progress completed]) + .exists?(duplicate_check_fields.index_with { |field| log.public_send(field) }) end private diff --git a/app/services/bulk_upload/lettings/year2023/row_parser.rb b/app/services/bulk_upload/lettings/year2023/row_parser.rb index c2e21346b..440d8599f 100644 --- a/app/services/bulk_upload/lettings/year2023/row_parser.rb +++ b/app/services/bulk_upload/lettings/year2023/row_parser.rb @@ -401,7 +401,9 @@ class BulkUpload::Lettings::Year2023::RowParser end def log_already_exists? - LettingsLog.exists?(duplicate_check_fields.index_with { |field| log.public_send(field) }) + @log_already_exists ||= LettingsLog + .where(status: %w[not_started in_progress completed]) + .exists?(duplicate_check_fields.index_with { |field| log.public_send(field) }) end private diff --git a/spec/services/bulk_upload/lettings/year2022/row_parser_spec.rb b/spec/services/bulk_upload/lettings/year2022/row_parser_spec.rb index 962dfb723..05d1e74a9 100644 --- a/spec/services/bulk_upload/lettings/year2022/row_parser_spec.rb +++ b/spec/services/bulk_upload/lettings/year2022/row_parser_spec.rb @@ -252,6 +252,39 @@ RSpec.describe BulkUpload::Lettings::Year2022::RowParser do expect(parser.errors.as_json).to eq(expected_errors) end end + + context "when a hidden log already exists in db" do + before do + parser.log.status = "pending" + parser.log.skip_update_status = true + parser.log.save! + end + + it "is a valid row" do + expect(parser).to be_valid + end + + it "does not add duplicate errors" do + parser.valid? + + [ + :field_5, # location + :field_12, # age1 + :field_20, # sex1 + :field_35, # ecstat1 + :field_84, # tcharge + :field_96, # startdate + :field_97, # startdate + :field_98, # startdate + :field_100, # propcode + :field_108, # postcode_full + :field_109, # postcode_full + :field_111, # owning_organisation + ].each do |field| + expect(parser.errors[field]).to be_blank + end + end + end end end diff --git a/spec/services/bulk_upload/lettings/year2023/row_parser_spec.rb b/spec/services/bulk_upload/lettings/year2023/row_parser_spec.rb index c4fd4641a..7850011f7 100644 --- a/spec/services/bulk_upload/lettings/year2023/row_parser_spec.rb +++ b/spec/services/bulk_upload/lettings/year2023/row_parser_spec.rb @@ -70,6 +70,7 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do DPA: { "POSTCODE": "EC1N 2TD", "POST_TOWN": "Newcastle", + "ORGANISATION_NAME": "Some place", }, }, ], @@ -228,7 +229,7 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do } end - xit "returns true" do + it "returns true" do expect(parser).to be_valid end @@ -274,6 +275,40 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do end end end + + context "when a hidden log already exists in db" do + before do + parser.log.status = "pending" + parser.log.skip_update_status = true + parser.log.save! + end + + it "is a valid row" do + expect(parser).to be_valid + end + + it "does not add duplicate errors" do + parser.valid? + + [ + :field_1, # owning_organisation + :field_7, # startdate + :field_8, # startdate + :field_9, # startdate + :field_14, # propcode + :field_17, # location + :field_23, # postcode_full + :field_24, # postcode_full + :field_25, # postcode_full + :field_46, # age1 + :field_47, # sex1 + :field_50, # ecstat1 + :field_132, # tcharge + ].each do |field| + expect(parser.errors[field]).to be_blank + end + end + end end describe "#validate_nulls" do