From 34cd70f2ea97afeb276334dd610865bf45a56980 Mon Sep 17 00:00:00 2001 From: samyou-softwire Date: Wed, 11 Mar 2026 12:21:31 +0000 Subject: [PATCH] CLDC-4270: Add tests --- .../lettings/year2026/csv_parser_spec.rb | 20 +++++++++++++++++++ .../lettings/year2026/row_parser_spec.rb | 16 +++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/spec/services/bulk_upload/lettings/year2026/csv_parser_spec.rb b/spec/services/bulk_upload/lettings/year2026/csv_parser_spec.rb index 0452116be..0b74cdde2 100644 --- a/spec/services/bulk_upload/lettings/year2026/csv_parser_spec.rb +++ b/spec/services/bulk_upload/lettings/year2026/csv_parser_spec.rb @@ -251,4 +251,24 @@ RSpec.describe BulkUpload::Lettings::Year2026::CsvParser do end end end + + context "when parsing csv with data of the wrong type" do + let(:seed) { rand } + let(:log_to_csv) { BulkUpload::LettingsLogToCsv.new(log:) } + let(:field_numbers) { log_to_csv.default_2026_field_numbers } + let(:field_values) { log_to_csv.to_2026_row } + + before do + field_46_index = field_numbers.index(46) + field_values[field_46_index] = "GBR" # should be a 3 digit code + + file.write(log_to_csv.custom_field_numbers_row(seed:, field_numbers:)) + file.write(log_to_csv.to_custom_csv_row(seed:, field_values:)) + file.rewind + end + + it "sets the invalid data to nil" do + expect(service.row_parsers[0].field_46).to be_nil + end + end end diff --git a/spec/services/bulk_upload/lettings/year2026/row_parser_spec.rb b/spec/services/bulk_upload/lettings/year2026/row_parser_spec.rb index 27c8b7672..b312f0b5e 100644 --- a/spec/services/bulk_upload/lettings/year2026/row_parser_spec.rb +++ b/spec/services/bulk_upload/lettings/year2026/row_parser_spec.rb @@ -536,6 +536,22 @@ RSpec.describe BulkUpload::Lettings::Year2026::RowParser do end end end + + describe "invalid fields" do + let(:attributes) { setup_section_params.merge({ field_46: 0 }) } + + context "when a field has been marked as invalid" do + before do + parser.add_invalid_field("field_46") + end + + it "sets a single error on that field" do + parser.valid? + expect(parser.errors[:field_46].size).to eq(1) + expect(parser.errors[:field_46]).to include(match(I18n.t("validations.lettings.2026.bulk_upload.invalid_option", question: "What is the lead tenant’s nationality?"))) + end + end + end end context "when setup section not complete" do