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 end
def field_numbers def field_numbers
# TODO: handle if there are no headers if with_headers?
rows[row_offset - 1][col_offset..].map { |h| h.present? ? "field_#{h}" : "field_blank" } rows[row_offset - 1][col_offset..].map { |h| h.present? ? "field_#{h}" : "field_blank" }
else
default_field_numbers
end
end end
def with_headers? 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
end end
# context "when parsing csv without headers" do context "when parsing csv without headers" do
# let(:file) { Tempfile.new } before do
# let(:path) { file.path } file.write(BulkUpload::LogToCsv.new(log:, col_offset: 0).to_2023_csv_row)
# let(:log) { build(:lettings_log, :completed) } file.rewind
end
# before do
# file.write(BulkUpload::LogToCsv.new(log:, col_offset: 0).to_2022_csv_row)
# file.rewind
# end
# it "returns correct offsets" do it "returns correct offsets" do
# expect(service.row_offset).to eq(0) expect(service.row_offset).to eq(0)
# expect(service.col_offset).to eq(0) expect(service.col_offset).to eq(0)
# end end
# it "parses csv correctly" do it "parses csv correctly" do
# expect(service.row_parsers[0].field_12.to_i).to eql(log.age1) expect(service.row_parsers[0].field_13).to eql(log.tenancycode)
# end end
# end end
# context "when parsing with BOM aka byte order mark" do # context "when parsing with BOM aka byte order mark" do
# let(:file) { Tempfile.new } # let(:file) { Tempfile.new }

8
spec/support/bulk_upload/log_to_csv.rb

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

Loading…
Cancel
Save