Browse Source

feat: first pass at bulk upload duplicate log detection

cldc-1888-bulk-upload-duplicate-log-validation
Sam Seed 2 years ago
parent
commit
159d57d56e
  1. 12
      app/services/bulk_upload/lettings/validator.rb
  2. 14
      spec/services/bulk_upload/lettings/validator_spec.rb

12
app/services/bulk_upload/lettings/validator.rb

@ -176,6 +176,7 @@ class BulkUpload::Lettings::Validator
def create_logs? 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 over_column_error_threshold?
return false if duplicate_log_already_exists?
row_parsers.all? { |row_parser| row_parser.log.valid? } row_parsers.all? { |row_parser| row_parser.log.valid? }
end end
@ -203,6 +204,17 @@ private
end end
end end
def duplicate_log_already_exists?
fields = ["lettype"]
fields.any? do |field|
# binding.pry
count = row_parsers.count { |row_parser| LettingsLog.where("lettype": 7).present? }
count > 0
end
end
def csv_parser def csv_parser
@csv_parser ||= BulkUpload::Lettings::CsvParser.new(path:) @csv_parser ||= BulkUpload::Lettings::CsvParser.new(path:)
end end

14
spec/services/bulk_upload/lettings/validator_spec.rb

@ -255,5 +255,19 @@ RSpec.describe BulkUpload::Lettings::Validator do
end end
end end
end 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) }
before do
file.write(BulkUpload::LogToCsv.new(log: log_1, line_ending: "\r\n", col_offset: 0).to_csv_row)
file.close
end
it "returns true" do
validator.call
expect(validator).not_to be_create_logs
end
end
end end
end end

Loading…
Cancel
Save