Browse Source

bulk upload supports 23/24 without headers

pull/1417/head
Phil Lee 3 years ago
parent
commit
e32204ba2b
  1. 7
      app/services/bulk_upload/lettings/year2023/csv_parser.rb
  2. 30
      spec/services/bulk_upload/lettings/year2023/csv_parser_spec.rb
  3. 8
      spec/support/bulk_upload/log_to_csv.rb

7
app/services/bulk_upload/lettings/year2023/csv_parser.rb

@ -43,8 +43,11 @@ private
end
def field_numbers
# TODO: handle if there are no headers
rows[row_offset - 1][col_offset..].map { |h| h.present? ? "field_#{h}" : "field_blank" }
if with_headers?
rows[row_offset - 1][col_offset..].map { |h| h.present? ? "field_#{h}" : "field_blank" }
else
default_field_numbers
end
end
def with_headers?

30
spec/services/bulk_upload/lettings/year2023/csv_parser_spec.rb

@ -55,25 +55,21 @@ RSpec.describe BulkUpload::Lettings::Year2023::CsvParser do
end
end
# context "when parsing csv without headers" do
# let(:file) { Tempfile.new }
# let(:path) { file.path }
# let(:log) { build(:lettings_log, :completed) }
# before do
# file.write(BulkUpload::LogToCsv.new(log:, col_offset: 0).to_2022_csv_row)
# file.rewind
# end
context "when parsing csv without headers" do
before do
file.write(BulkUpload::LogToCsv.new(log:, col_offset: 0).to_2023_csv_row)
file.rewind
end
# it "returns correct offsets" do
# expect(service.row_offset).to eq(0)
# expect(service.col_offset).to eq(0)
# end
it "returns correct offsets" do
expect(service.row_offset).to eq(0)
expect(service.col_offset).to eq(0)
end
# it "parses csv correctly" do
# expect(service.row_parsers[0].field_12.to_i).to eql(log.age1)
# end
# end
it "parses csv correctly" do
expect(service.row_parsers[0].field_13).to eql(log.tenancycode)
end
end
# context "when parsing with BOM aka byte order mark" do
# let(:file) { Tempfile.new }

8
spec/support/bulk_upload/log_to_csv.rb

@ -8,20 +8,20 @@ class BulkUpload::LogToCsv
@overrides = overrides
end
def prefix_offset
def row_prefix
[nil] * col_offset
end
def to_2022_csv_row
(prefix_offset + to_2022_row).flatten.join(",") + line_ending
(row_prefix + to_2022_row).flatten.join(",") + line_ending
end
def to_2023_csv_row(seed: nil)
if seed
row = to_2023_row.shuffle(random: Random.new(seed))
(prefix_offset + row).flatten.join(",") + line_ending
(row_prefix + row).flatten.join(",") + line_ending
else
(prefix_offset + to_2023_row).flatten.join(",") + line_ending
(row_prefix + to_2023_row).flatten.join(",") + line_ending
end
end

Loading…
Cancel
Save