diff --git a/app/services/bulk_upload/lettings/validator.rb b/app/services/bulk_upload/lettings/validator.rb index d2a75725a..e76f973aa 100644 --- a/app/services/bulk_upload/lettings/validator.rb +++ b/app/services/bulk_upload/lettings/validator.rb @@ -174,7 +174,7 @@ class BulkUpload::Lettings::Validator end def create_logs? - return false if any_setup_sections_incomplete? + # return false if any_setup_sections_incomplete? return false if over_column_error_threshold? return false if duplicate_log_already_exists? @@ -205,11 +205,10 @@ private end def duplicate_log_already_exists? - fields = ["lettype"] + fields = ["lettype", "beds"] - fields.any? do |field| - # binding.pry - count = row_parsers.count { |row_parser| LettingsLog.where("lettype": 7).present? } + fields.all? do |field| + count = row_parsers.count { |row_parser| LettingsLog.where("#{field}": row_parser.attributes[field]).present? } count > 0 end diff --git a/spec/services/bulk_upload/lettings/validator_spec.rb b/spec/services/bulk_upload/lettings/validator_spec.rb index 1a7da8803..19deb5731 100644 --- a/spec/services/bulk_upload/lettings/validator_spec.rb +++ b/spec/services/bulk_upload/lettings/validator_spec.rb @@ -257,17 +257,24 @@ RSpec.describe BulkUpload::Lettings::Validator do end context "when the file contains a log which already exists in the db" do - let(:log_1) { create(:lettings_log, :completed, lettype: 7, created_by: user) } + let(:log_1) { create(:lettings_log, :completed, lettype: 7, beds: 3, created_by: user) } # DB + let(:log_2) { build(:lettings_log, :completed, lettype: 7, beds: 3, created_by: user) } # Bulk upload 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 + it "prevents log creation if there is a duplicate log" do validator.call expect(validator).not_to be_create_logs end + + it "allows log creation if there are no duplicate logs" do + log_1.update!(beds: 2) + validator.call + expect(validator).to be_create_logs + end end end end