Browse Source

test: simplify 2022/2023 logic and improve layout

pull/1588/head
Sam Seed 3 years ago
parent
commit
7d4456f9dc
  1. 54
      spec/services/bulk_upload/lettings/validator_spec.rb
  2. 4
      spec/services/bulk_upload/lettings/year2023/csv_parser_spec.rb
  3. 46
      spec/support/bulk_upload/log_to_csv.rb

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

@ -20,7 +20,8 @@ RSpec.describe BulkUpload::Lettings::Validator do
context "2022" do context "2022" do
let(:bulk_upload) { create(:bulk_upload, user:, year: 2022) } let(:bulk_upload) { create(:bulk_upload, user:, year: 2022) }
context "when file has no headers and too many columns" do context "when file has no headers" do
context "and too many columns" do
before do before do
file.write(("a" * 136).chars.join(",")) file.write(("a" * 136).chars.join(","))
file.write("\n") file.write("\n")
@ -33,7 +34,7 @@ RSpec.describe BulkUpload::Lettings::Validator do
end end
end end
context "when file has no headers and doesn't have too many columns" do context "and doesn't have too many columns" do
before do before do
file.write(("a" * 135).chars.join(",")) file.write(("a" * 135).chars.join(","))
file.write("\n") file.write("\n")
@ -44,16 +45,18 @@ RSpec.describe BulkUpload::Lettings::Validator do
expect(validator).to be_valid expect(validator).to be_valid
end end
end end
end
context "when file has extra invalid headers" do context "when file has headers" do
context "and file has extra invalid headers" do
let(:seed) { rand } let(:seed) { rand }
let(:log_to_csv) { BulkUpload::LogToCsv.new(log:) } let(:log_to_csv) { BulkUpload::LogToCsv.new(log:) }
let(:field_numbers) { log_to_csv.default_2022_field_numbers + %w[invalid_field_number] } let(:field_numbers) { log_to_csv.default_2022_field_numbers + %w[invalid_field_number] }
let(:field_values) { log_to_csv.to_2022_row + %w[value_for_invalid_field_number] } let(:field_values) { log_to_csv.to_2022_row + %w[value_for_invalid_field_number] }
before do before do
file.write(log_to_csv.custom_2022_field_numbers_row(seed:, field_numbers:)) file.write(log_to_csv.custom_field_numbers_row(seed:, field_numbers:))
file.write(log_to_csv.to_custom_2022_csv_row(seed:, field_values:)) file.write(log_to_csv.to_custom_csv_row(seed:, field_values:))
file.rewind file.rewind
end end
@ -62,7 +65,7 @@ RSpec.describe BulkUpload::Lettings::Validator do
end end
end end
context "when file has too few valid headers" do context "and file has too few valid headers" do
let(:seed) { rand } let(:seed) { rand }
let(:log_to_csv) { BulkUpload::LogToCsv.new(log:) } let(:log_to_csv) { BulkUpload::LogToCsv.new(log:) }
let(:field_numbers) { log_to_csv.default_2022_field_numbers } let(:field_numbers) { log_to_csv.default_2022_field_numbers }
@ -71,8 +74,8 @@ RSpec.describe BulkUpload::Lettings::Validator do
before do before do
field_numbers.delete_at(20) field_numbers.delete_at(20)
field_values.delete_at(20) field_values.delete_at(20)
file.write(log_to_csv.custom_2022_field_numbers_row(seed:, field_numbers:)) file.write(log_to_csv.custom_field_numbers_row(seed:, field_numbers:))
file.write(log_to_csv.to_custom_2022_csv_row(seed:, field_values:)) file.write(log_to_csv.to_custom_csv_row(seed:, field_values:))
file.rewind file.rewind
end end
@ -82,15 +85,15 @@ RSpec.describe BulkUpload::Lettings::Validator do
end end
end end
context "when file has too many valid headers" do context "and file has too many valid headers" do
let(:seed) { rand } let(:seed) { rand }
let(:log_to_csv) { BulkUpload::LogToCsv.new(log:) } let(:log_to_csv) { BulkUpload::LogToCsv.new(log:) }
let(:field_numbers) { log_to_csv.default_2022_field_numbers + %w[23] } let(:field_numbers) { log_to_csv.default_2022_field_numbers + %w[23] }
let(:field_values) { log_to_csv.to_2022_row + %w[value] } let(:field_values) { log_to_csv.to_2022_row + %w[value] }
before do before do
file.write(log_to_csv.custom_2022_field_numbers_row(seed:, field_numbers:)) file.write(log_to_csv.custom_field_numbers_row(seed:, field_numbers:))
file.write(log_to_csv.to_custom_2022_csv_row(seed:, field_values:)) file.write(log_to_csv.to_custom_csv_row(seed:, field_values:))
file.rewind file.rewind
end end
@ -100,11 +103,13 @@ RSpec.describe BulkUpload::Lettings::Validator do
end end
end end
end end
end
context "2023" do context "2023" do
let(:bulk_upload) { create(:bulk_upload, user:, year: 2023) } let(:bulk_upload) { create(:bulk_upload, user:, year: 2023) }
context "when file has no headers and too many columns" do context "when file has no headers" do
context "and too many columns" do
before do before do
file.write(("a" * 143).chars.join(",")) file.write(("a" * 143).chars.join(","))
file.write("\n") file.write("\n")
@ -117,7 +122,7 @@ RSpec.describe BulkUpload::Lettings::Validator do
end end
end end
context "when file has no headers and doesn't have too many columns" do context "and doesn't have too many columns" do
before do before do
file.write(("a" * 142).chars.join(",")) file.write(("a" * 142).chars.join(","))
file.write("\n") file.write("\n")
@ -128,16 +133,18 @@ RSpec.describe BulkUpload::Lettings::Validator do
expect(validator).to be_valid expect(validator).to be_valid
end end
end end
end
context "when file has extra invalid headers" do context "when file has headers" do
context "and file has extra invalid headers" do
let(:seed) { rand } let(:seed) { rand }
let(:log_to_csv) { BulkUpload::LogToCsv.new(log:) } let(:log_to_csv) { BulkUpload::LogToCsv.new(log:) }
let(:field_numbers) { log_to_csv.default_2023_field_numbers + %w[invalid_field_number] } let(:field_numbers) { log_to_csv.default_2023_field_numbers + %w[invalid_field_number] }
let(:field_values) { log_to_csv.to_2023_row + %w[value_for_invalid_field_number] } let(:field_values) { log_to_csv.to_2023_row + %w[value_for_invalid_field_number] }
before do before do
file.write(log_to_csv.custom_2023_field_numbers_row(seed:, field_numbers:)) file.write(log_to_csv.custom_field_numbers_row(seed:, field_numbers:))
file.write(log_to_csv.to_custom_2023_csv_row(seed:, field_values:)) file.write(log_to_csv.to_custom_csv_row(seed:, field_values:))
file.rewind file.rewind
end end
@ -146,7 +153,7 @@ RSpec.describe BulkUpload::Lettings::Validator do
end end
end end
context "when file has too few valid headers" do context "and file has too few valid headers" do
let(:seed) { rand } let(:seed) { rand }
let(:log_to_csv) { BulkUpload::LogToCsv.new(log:) } let(:log_to_csv) { BulkUpload::LogToCsv.new(log:) }
let(:field_numbers) { log_to_csv.default_2023_field_numbers } let(:field_numbers) { log_to_csv.default_2023_field_numbers }
@ -155,8 +162,8 @@ RSpec.describe BulkUpload::Lettings::Validator do
before do before do
field_numbers.delete_at(20) field_numbers.delete_at(20)
field_values.delete_at(20) field_values.delete_at(20)
file.write(log_to_csv.custom_2023_field_numbers_row(seed:, field_numbers:)) file.write(log_to_csv.custom_field_numbers_row(seed:, field_numbers:))
file.write(log_to_csv.to_custom_2023_csv_row(seed:, field_values:)) file.write(log_to_csv.to_custom_csv_row(seed:, field_values:))
file.rewind file.rewind
end end
@ -166,15 +173,15 @@ RSpec.describe BulkUpload::Lettings::Validator do
end end
end end
context "when file has too many valid headers" do context "and file has too many valid headers" do
let(:seed) { rand } let(:seed) { rand }
let(:log_to_csv) { BulkUpload::LogToCsv.new(log:) } let(:log_to_csv) { BulkUpload::LogToCsv.new(log:) }
let(:field_numbers) { log_to_csv.default_2023_field_numbers + %w[23] } let(:field_numbers) { log_to_csv.default_2023_field_numbers + %w[23] }
let(:field_values) { log_to_csv.to_2023_row + %w[value] } let(:field_values) { log_to_csv.to_2023_row + %w[value] }
before do before do
file.write(log_to_csv.custom_2023_field_numbers_row(seed:, field_numbers:)) file.write(log_to_csv.custom_field_numbers_row(seed:, field_numbers:))
file.write(log_to_csv.to_custom_2023_csv_row(seed:, field_values:)) file.write(log_to_csv.to_custom_csv_row(seed:, field_values:))
file.rewind file.rewind
end end
@ -184,8 +191,7 @@ RSpec.describe BulkUpload::Lettings::Validator do
end end
end end
end end
end
context "when incorrect headers"
end end
describe "#call" do describe "#call" do

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

@ -92,8 +92,8 @@ RSpec.describe BulkUpload::Lettings::Year2023::CsvParser do
file.write("Can be empty?\n") file.write("Can be empty?\n")
file.write("Type of letting the question applies to\n") file.write("Type of letting the question applies to\n")
file.write("Duplicate check field?\n") file.write("Duplicate check field?\n")
file.write(log_to_csv.custom_2023_field_numbers_row(seed:, field_numbers:)) file.write(log_to_csv.custom_field_numbers_row(seed:, field_numbers:))
file.write(log_to_csv.to_custom_2023_csv_row(seed:, field_values:)) file.write(log_to_csv.to_custom_csv_row(seed:, field_values:))
file.rewind file.rewind
end end

46
spec/support/bulk_upload/log_to_csv.rb

@ -16,26 +16,10 @@ class BulkUpload::LogToCsv
(row_prefix + to_2022_row).flatten.join(",") + line_ending (row_prefix + to_2022_row).flatten.join(",") + line_ending
end end
def to_custom_2022_csv_row(seed: nil, field_values: to_2022_row)
if seed
row = field_values.shuffle(random: Random.new(seed))
end
(row_prefix + row).flatten.join(",") + line_ending
end
def default_2022_field_numbers def default_2022_field_numbers
(1..134).to_a (1..134).to_a
end end
def custom_2022_field_numbers_row(seed: nil, field_numbers: default_2022_field_numbers)
if seed
["Bulk upload field number"] + field_numbers.shuffle(random: Random.new(seed))
else
["Bulk upload field number"] + field_numbers
end.flatten.join(",") + line_ending
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))
@ -57,13 +41,6 @@ class BulkUpload::LogToCsv
] ]
end end
def to_custom_2023_csv_row(seed: nil, field_values: to_2023_row)
if seed
row = field_values.shuffle(random: Random.new(seed))
end
(row_prefix + row).flatten.join(",") + line_ending
end
def default_2023_field_numbers_row(seed: nil) def default_2023_field_numbers_row(seed: nil)
if seed if seed
["Bulk upload field number"] + default_2023_field_numbers.shuffle(random: Random.new(seed)) ["Bulk upload field number"] + default_2023_field_numbers.shuffle(random: Random.new(seed))
@ -72,14 +49,6 @@ class BulkUpload::LogToCsv
end.flatten.join(",") + line_ending end.flatten.join(",") + line_ending
end end
def custom_2023_field_numbers_row(seed: nil, field_numbers: default_2023_field_numbers)
if seed
["Bulk upload field number"] + field_numbers.shuffle(random: Random.new(seed))
else
["Bulk upload field number"] + field_numbers
end.flatten.join(",") + line_ending
end
def default_2023_field_numbers def default_2023_field_numbers
[5, nil, nil, 15, 16, nil, 13, 40, 41, 42, 43, 46, 52, 56, 60, 64, 68, 72, 76, 47, 53, 57, 61, 65, 69, 73, 77, 51, 55, 59, 63, 67, 71, 75, 50, 54, 58, 62, 66, 70, 74, 78, 48, 49, 79, 81, 82, 123, 124, 122, 120, 102, 103, nil, 83, 84, 85, 86, 87, 88, 104, 109, 107, 108, 106, 100, 101, 105, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 126, 128, 129, 130, 131, 132, 127, 125, 133, 134, 33, 34, 35, 36, 37, 38, nil, 7, 8, 9, 28, 14, 32, 29, 30, 31, 26, 27, 25, 23, 24, nil, 1, 3, 2, 80, nil, 121, 44, 89, 98, 92, 95, 90, 91, 93, 94, 97, 96, 99, 10, 11, 12, 45, 39, 6, 4, 17, 18, 19, 20, 21, 22] [5, nil, nil, 15, 16, nil, 13, 40, 41, 42, 43, 46, 52, 56, 60, 64, 68, 72, 76, 47, 53, 57, 61, 65, 69, 73, 77, 51, 55, 59, 63, 67, 71, 75, 50, 54, 58, 62, 66, 70, 74, 78, 48, 49, 79, 81, 82, 123, 124, 122, 120, 102, 103, nil, 83, 84, 85, 86, 87, 88, 104, 109, 107, 108, 106, 100, 101, 105, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 126, 128, 129, 130, 131, 132, 127, 125, 133, 134, 33, 34, 35, 36, 37, 38, nil, 7, 8, 9, 28, 14, 32, 29, 30, 31, 26, 27, 25, 23, 24, nil, 1, 3, 2, 80, nil, 121, 44, 89, 98, 92, 95, 90, 91, 93, 94, 97, 96, 99, 10, 11, 12, 45, 39, 6, 4, 17, 18, 19, 20, 21, 22]
end end
@ -233,6 +202,21 @@ class BulkUpload::LogToCsv
] ]
end end
def custom_field_numbers_row(seed: nil, field_numbers: nil)
if seed
["Bulk upload field number"] + field_numbers.shuffle(random: Random.new(seed))
else
["Bulk upload field number"] + field_numbers
end.flatten.join(",") + line_ending
end
def to_custom_csv_row(seed: nil, field_values: nil)
if seed
row = field_values.shuffle(random: Random.new(seed))
end
(row_prefix + row).flatten.join(",") + line_ending
end
private private
def renewal def renewal

Loading…
Cancel
Save