diff --git a/spec/services/bulk_upload/lettings/year2023/row_parser_spec.rb b/spec/services/bulk_upload/lettings/year2023/row_parser_spec.rb index ee8675bd3..bbf59b081 100644 --- a/spec/services/bulk_upload/lettings/year2023/row_parser_spec.rb +++ b/spec/services/bulk_upload/lettings/year2023/row_parser_spec.rb @@ -86,8 +86,6 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do before do stub_request(:get, /api\.postcodes\.io/) .to_return(status: 200, body: "{\"status\":200,\"result\":{\"admin_district\":\"Manchester\", \"codes\":{\"admin_district\": \"E08000003\"}}}", headers: {}) - - parser.valid? end describe "#valid?" do @@ -103,6 +101,7 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_134: 2 } } it "does not add keep adding errors to the pile" do + parser.valid? expect { parser.valid? }.not_to change(parser.errors, :count) end end @@ -258,7 +257,6 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do before do parser.log.save! - parser.instance_variable_set(:@valid, nil) end it "is not a valid row" do @@ -296,7 +294,6 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do before do parser.log.save! - parser.instance_variable_set(:@valid, nil) end it "is not a valid row" do @@ -335,7 +332,6 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do before do parser.log.save! - parser.instance_variable_set(:@valid, nil) end it "is not a valid row" do @@ -383,7 +379,6 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do before do parser.log.save! - parser.instance_variable_set(:@valid, nil) end it "is not a valid row" do @@ -443,7 +438,6 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do before do parser.log.save! - parser.instance_variable_set(:@valid, nil) end it "is a valid row" do @@ -479,7 +473,6 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do before do parser.log.save! - parser.instance_variable_set(:@valid, nil) end it "is not a valid row" do @@ -527,7 +520,6 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do before do parser.log.save! - parser.instance_variable_set(:@valid, nil) end it "is not a valid row" do @@ -587,7 +579,6 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do before do parser.log.save! - parser.instance_variable_set(:@valid, nil) end it "is a valid row" do @@ -697,6 +688,7 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { valid_attributes.merge({ field_45: nil }) } it "cannot be nulled" do + parser.valid? expect(parser.errors[:field_45]).to eq(["You must show the DLUHC privacy notice to the tenant before you can submit this log."]) end end @@ -719,8 +711,9 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_13: "123" } } it "has errors on setup fields" do - errors = parser.errors.select { |e| e.options[:category] == :setup }.map(&:attribute).sort + parser.valid? + errors = parser.errors.select { |e| e.options[:category] == :setup }.map(&:attribute).sort expect(errors).to eql(%i[field_1 field_2 field_4 field_45 field_5 field_6 field_7 field_8 field_9]) end end @@ -730,14 +723,17 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_3: "", field_4: 1 } } it "is permitted" do + parser.valid? expect(parser.errors[:field_3]).to be_blank end it "sets assigned to to bulk upload user" do + parser.valid? expect(parser.log.assigned_to).to eq(bulk_upload.user) end it "sets created by to bulk upload user" do + parser.valid? expect(parser.log.created_by).to eq(bulk_upload.user) end end @@ -746,6 +742,7 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_3: "idonotexist@example.com" } } it "is not permitted" do + parser.valid? expect(parser.errors[:field_3]).to be_present end end @@ -756,10 +753,12 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_1: owning_org.old_visible_id, field_3: other_user.email, field_2: managing_org.old_visible_id } } it "is not permitted" do + parser.valid? expect(parser.errors[:field_3]).to be_present end it "blocks log creation" do + parser.valid? expect(parser).to be_block_log_creation end end @@ -770,6 +769,7 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_1: owning_org.old_visible_id, field_3: other_user.email, field_2: managing_org.old_visible_id } } it "is permitted" do + parser.valid? expect(parser.errors[:field_3]).to be_blank end @@ -788,6 +788,7 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_1: owning_org.old_visible_id, field_3: other_user.email.upcase!, field_2: managing_org.old_visible_id } } it "is permitted" do + parser.valid? expect(parser.errors[:field_3]).to be_blank end end @@ -798,6 +799,7 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_1: owning_org.old_visible_id, field_3: other_user.email, field_2: managing_org.old_visible_id } } it "is permitted" do + parser.valid? expect(parser.errors[:field_3]).to be_blank end end @@ -808,6 +810,7 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_5: nil, field_15: "1" } } it "returns an error" do + parser.valid? expect(parser.errors[:field_5]).to be_present end end @@ -816,6 +819,7 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_5: "foo" } } it "returns an error" do + parser.valid? expect(parser.errors[:field_5]).to be_present end end @@ -824,6 +828,7 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_5: "101" } } it "returns an error" do + parser.valid? expect(parser.errors[:field_5]).to be_present end end @@ -832,6 +837,7 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_5: "1", field_4: "1" } } it "does not return any errors" do + parser.valid? expect(parser.errors[:field_5]).to be_blank end end @@ -840,6 +846,8 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_5: "9", field_11: nil } } it "adds error on field_11" do + parser.valid? + expect(parser.errors[:field_5]).to be_present expect(parser.errors[:field_11]).to eq(["You must answer intermediate rent type"]) end @@ -849,6 +857,8 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_5: "9", field_11: "Intermediate rent" } } it "adds error on field_11" do + parser.valid? + expect(parser.errors[:field_5]).to be_present expect(parser.errors[:field_11]).to eq(["You must answer intermediate rent type"]) end @@ -858,6 +868,8 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_5: "5", field_10: nil } } it "adds error on field_10" do + parser.valid? + expect(parser.errors[:field_5]).to be_present expect(parser.errors[:field_10]).to eq(["You must answer is this a London Affordable Rent letting"]) end @@ -867,6 +879,8 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_5: "5", field_10: "Intermediate rent" } } it "adds error on field_10" do + parser.valid? + expect(parser.errors[:field_5]).to be_present expect(parser.errors[:field_10]).to eq(["You must answer is this a London Affordable Rent letting"]) end @@ -876,6 +890,7 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_5: "9", field_11: "3", field_12: nil } } it "adds error on field_12" do + parser.valid? expect(parser.errors[:field_12]).to eq(["You must answer product name"]) end end @@ -885,6 +900,8 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_5: "1", field_4: "1" } } it "is permitted" do + parser.valid? + expect(parser.errors[:field_4]).to be_blank expect(parser.errors[:field_5]).to be_blank end @@ -894,6 +911,8 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_5: "2", field_4: "1" } } it "is not permitted" do + parser.valid? + expect(parser.errors[:field_4]).to include("This letting type is supported housing, but the needs type is general needs. Change either the needs type or the letting type.") expect(parser.errors[:field_5]).to include("This needs type is general needs, but the letting type is supported housing. Change either the needs type or the letting type.") end @@ -907,6 +926,8 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_5: "1", field_4: "2" } } it "is not permitted" do + parser.valid? + expect(parser.errors[:field_4]).to include("This letting type is general needs, but the needs type is supported housing. Change either the needs type or the letting type.") expect(parser.errors[:field_5]).to include("This needs type is supported housing, but the letting type is general needs. Change either the needs type or the letting type.") end @@ -916,6 +937,8 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_5: "2", field_4: "2" } } it "is permitted" do + parser.valid? + expect(parser.errors[:field_4]).to be_blank expect(parser.errors[:field_5]).to be_blank end @@ -928,6 +951,8 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_4: "2", field_5: "2", field_15: nil, field_16: nil, field_17: nil } } it "cannot be nulled" do + parser.valid? + expect(parser.errors[:field_15]).to be_blank expect(parser.errors[:field_16]).to eq(["You must answer scheme code"]) expect(parser.errors[:field_17]).to be_blank @@ -938,6 +963,8 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_4: "1", field_5: "1", field_15: nil, field_16: nil, field_17: nil } } it "can be nulled" do + parser.valid? + expect(parser.errors[:field_15]).to be_blank expect(parser.errors[:field_16]).to be_blank expect(parser.errors[:field_17]).to be_blank @@ -948,14 +975,12 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:scheme) { create(:scheme, :with_old_visible_id, owning_organisation: owning_org) } let!(:location) { create(:location, :with_old_visible_id, scheme:) } - before do - parser.valid? - end - context "when matching scheme cannot be found" do let(:attributes) { { bulk_upload:, field_1: owning_org.old_visible_id, field_2: owning_org.old_visible_id, field_4: "2", field_5: "2", field_16: "S123", field_17: location.id } } it "returns a setup error" do + parser.valid? + expect(parser.errors[:field_15]).to be_blank expect(parser.errors.where(:field_16, category: :setup).map(&:message)).to eq(["This scheme code does not belong to the owning organisation or managing organisation"]) expect(parser.errors[:field_17]).to be_blank @@ -966,6 +991,8 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_1: owning_org.old_visible_id, field_2: owning_org.old_visible_id, field_4: "2", field_5: "2", field_16: "S#{scheme.id}", field_17: nil } } it "returns a setup error" do + parser.valid? + expect(parser.errors[:field_15]).to be_blank expect(parser.errors[:field_16]).to be_blank expect(parser.errors.where(:field_17, category: :setup).map(&:message)).to eq(["You must answer location code"]) @@ -977,6 +1004,8 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_1: owning_org.old_visible_id, field_2: owning_org.old_visible_id, field_4: "2", field_5: "2", field_16: scheme.old_visible_id.to_s, field_15: nil, field_17: nil } } it "returns a setup error" do + parser.valid? + expect(parser.errors[:field_16]).to be_blank expect(parser.errors[:field_17]).to be_blank expect(parser.errors.where(:field_15, category: :setup).map(&:message)).to eq(["You must answer management group code"]) @@ -988,6 +1017,8 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_1: owning_org.old_visible_id, field_2: owning_org.old_visible_id, field_4: "2", field_5: "2", field_16: "S#{scheme.id}", field_17: "123" } } it "returns a setup error" do + parser.valid? + expect(parser.errors[:field_15]).to be_blank expect(parser.errors[:field_16]).to be_blank expect(parser.errors.where(:field_17, category: :setup).map(&:message)).to eq(["Location code must relate to a location that is owned by the owning organisation or managing organisation"]) @@ -998,6 +1029,8 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_1: owning_org.old_visible_id, field_2: owning_org.old_visible_id, field_4: "2", field_5: "2", field_16: "S#{scheme.id}", field_17: location.id } } it "does not return an error" do + parser.valid? + expect(parser.errors[:field_15]).to be_blank expect(parser.errors[:field_16]).to be_blank expect(parser.errors[:field_17]).to be_blank @@ -1010,6 +1043,8 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_1: owning_org.old_visible_id, field_2: owning_org.old_visible_id, field_4: "2", field_5: "2", field_16: "S#{scheme.id}", field_17: other_location.id } } it "returns a setup error" do + parser.valid? + expect(parser.errors[:field_15]).to be_blank expect(parser.errors[:field_16]).to be_blank expect(parser.errors.where(:field_17, category: :setup).map(&:message)).to eq(["Location code must relate to a location that is owned by the owning organisation or managing organisation"]) @@ -1022,6 +1057,8 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_4: "2", field_5: "2", field_16: "S#{other_scheme.id}", field_17: other_location.id, field_1: owning_org.old_visible_id, field_2: owning_org.old_visible_id } } it "returns a setup error" do + parser.valid? + expect(parser.errors[:field_15]).to be_blank expect(parser.errors.where(:field_16, category: :setup).map(&:message)).to eq(["This scheme code does not belong to the owning organisation or managing organisation"]) expect(parser.errors[:field_17]).to be_blank @@ -1032,6 +1069,8 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_4: "2", field_5: "2", field_16: "S#{scheme.id}", field_17: location.id, field_1: owning_org.old_visible_id, field_2: owning_org.old_visible_id } } it "does not return an error" do + parser.valid? + expect(parser.errors[:field_15]).to be_blank expect(parser.errors[:field_16]).to be_blank expect(parser.errors[:field_17]).to be_blank @@ -1044,6 +1083,8 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_4: "2", field_5: "2", field_16: "S#{managing_org_scheme.id}", field_17: managing_org_location.id, field_2: managing_org.old_visible_id } } it "clears the scheme answer" do + parser.valid? + expect(parser.errors[:field_15]).to be_blank expect(parser.errors[:field_16]).to include("You must answer scheme name") expect(parser.errors[:field_17]).to be_blank @@ -1055,6 +1096,8 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_1: owning_org.old_visible_id, field_2: owning_org.old_visible_id, field_4: "2", field_5: "2", field_16: "S#{scheme.id}", field_17: incomplete_location.id } } it "returns a setup error for scheme" do + parser.valid? + expect(parser.errors[:field_15]).to be_blank expect(parser.errors.where(:field_16).map(&:message)).to eq(["This location is incomplete. Select another location or update this one"]) expect(parser.errors.where(:field_17).map(&:message)).to eq(["This location is incomplete. Select another location or update this one"]) @@ -1066,14 +1109,12 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:scheme) { create(:scheme, :with_old_visible_id, owning_organisation: owning_org) } let!(:location) { create(:location, :with_old_visible_id, scheme:) } - before do - parser.valid? - end - context "when matching scheme cannot be found" do let(:attributes) { { bulk_upload:, field_1: owning_org.old_visible_id, field_2: owning_org.old_visible_id, field_4: "2", field_5: "2", field_15: "123", field_16: location.old_visible_id } } it "returns a setup error" do + parser.valid? + expect(parser.errors.where(:field_15, category: :setup).map(&:message)).to eq(["This management group code does not belong to the owning organisation or managing organisation"]) expect(parser.errors[:field_16]).to be_blank expect(parser.errors[:field_17]).to be_blank @@ -1084,6 +1125,8 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_1: owning_org.old_visible_id, field_2: owning_org.old_visible_id, field_4: "2", field_5: "2", field_15: scheme.old_visible_id, field_16: nil } } it "returns a setup error" do + parser.valid? + expect(parser.errors[:field_15]).to be_blank expect(parser.errors.where(:field_16, category: :setup).map(&:message)).to eq(["You must answer scheme code"]) expect(parser.errors[:field_17]).to be_blank @@ -1094,6 +1137,8 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_1: owning_org.old_visible_id, field_2: owning_org.old_visible_id, field_4: "2", field_5: "2", field_15: scheme.old_visible_id, field_16: "123" } } it "returns a setup error" do + parser.valid? + expect(parser.errors[:field_15]).to be_blank expect(parser.errors.where(:field_16, category: :setup).map(&:message)).to eq(["Scheme code must relate to a scheme that is owned by the owning organisation or managing organisation"]) expect(parser.errors[:field_17]).to be_blank @@ -1104,6 +1149,8 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_1: owning_org.old_visible_id, field_2: owning_org.old_visible_id, field_4: "2", field_5: "2", field_15: scheme.old_visible_id, field_16: location.old_visible_id } } it "does not return an error" do + parser.valid? + expect(parser.errors[:field_15]).to be_blank expect(parser.errors[:field_16]).to be_blank expect(parser.errors[:field_17]).to be_blank @@ -1116,6 +1163,8 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_1: owning_org.old_visible_id, field_2: owning_org.old_visible_id, field_4: "2", field_5: "2", field_15: scheme.old_visible_id, field_16: other_location.old_visible_id } } it "returns a setup error" do + parser.valid? + expect(parser.errors[:field_15]).to be_blank expect(parser.errors.where(:field_16, category: :setup).map(&:message)).to eq(["Scheme code must relate to a scheme that is owned by the owning organisation or managing organisation"]) expect(parser.errors[:field_17]).to be_blank @@ -1128,6 +1177,8 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_4: "2", field_5: "2", field_15: other_scheme.old_visible_id, field_16: other_location.old_visible_id, field_1: owning_org.old_visible_id, field_2: owning_org.old_visible_id } } it "returns a setup error" do + parser.valid? + expect(parser.errors.where(:field_15, category: :setup).map(&:message)).to eq(["This management group code does not belong to the owning organisation or managing organisation"]) expect(parser.errors[:field_16]).to be_blank expect(parser.errors[:field_17]).to be_blank @@ -1138,6 +1189,8 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_4: "2", field_5: "2", field_15: scheme.old_visible_id, field_16: location.old_visible_id, field_1: owning_org.old_visible_id, field_2: owning_org.old_visible_id } } it "does not return an error" do + parser.valid? + expect(parser.errors[:field_15]).to be_blank expect(parser.errors[:field_16]).to be_blank expect(parser.errors[:field_17]).to be_blank @@ -1150,6 +1203,8 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_4: "2", field_5: "2", field_15: managing_org_scheme.old_visible_id, field_16: managing_org_location.old_visible_id, field_2: managing_org.old_visible_id } } it "clears the scheme answer" do + parser.valid? + expect(parser.errors[:field_15]).to include("You must answer scheme name") expect(parser.errors[:field_16]).to be_blank expect(parser.errors[:field_17]).to be_blank @@ -1164,6 +1219,7 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_102: "40", field_6: "1" } } it "is permitted" do + parser.valid? expect(parser.errors[:field_102]).to be_blank end end @@ -1172,6 +1228,7 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_102: "42", field_6: "1" } } it "is permitted" do + parser.valid? expect(parser.errors[:field_102]).to be_blank end end @@ -1180,6 +1237,7 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_102: "1", field_6: "1" } } it "is not permitted" do + parser.valid? expect(parser.errors[:field_102]).to be_present end end @@ -1189,6 +1247,7 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { setup_section_params.merge({ field_102: "7" }) } it "returns an error" do + parser.valid? expect(parser.errors[:field_102]).to include("Enter a valid value for What is the tenant’s main reason for the household leaving their last settled home?") end end @@ -1199,6 +1258,8 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_83: "1" } } it "is permitted" do + parser.valid? + expect(parser.errors[:field_83]).to be_blank expect(parser.errors[:field_84]).to be_blank expect(parser.errors[:field_85]).to be_blank @@ -1209,6 +1270,8 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_83: "1", field_84: "1" } } it "is not permitted" do + parser.valid? + expect(parser.errors[:field_83]).to be_present expect(parser.errors[:field_84]).to be_present end @@ -1220,6 +1283,7 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_87: "1", field_86: "1" } } it "is not permitted" do + parser.valid? expect(parser.errors[:field_87]).to be_present end end @@ -1230,6 +1294,7 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_88: "1", field_86: "1" } } it "is not permitted" do + parser.valid? expect(parser.errors[:field_88]).to be_present end end @@ -1240,6 +1305,8 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_87: "1", field_88: "1" } } it "is not permitted" do + parser.valid? + expect(parser.errors[:field_87]).to be_present expect(parser.errors[:field_88]).to be_present end @@ -1251,6 +1318,8 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { setup_section_params.merge({ field_83: nil, field_84: nil, field_85: nil, field_86: nil, field_87: nil, field_88: nil }) } it "adds errors to correct fields" do + parser.valid? + expect(parser.errors[:field_83]).to be_present expect(parser.errors[:field_84]).to be_present expect(parser.errors[:field_85]).to be_present @@ -1263,6 +1332,8 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { setup_section_params.merge({ field_83: "1", field_86: nil }) } it "sets other disabled access needs as no" do + parser.valid? + expect(parser.errors[:field_83]).to be_blank expect(parser.errors[:field_86]).to be_blank expect(parser.log.housingneeds_other).to eq(0) @@ -1275,6 +1346,8 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_89: "2", field_90: "1", field_91: "1", field_92: "1" } } it "errors added to correct fields" do + parser.valid? + expect(parser.errors[:field_90]).to be_present expect(parser.errors[:field_91]).to be_present expect(parser.errors[:field_92]).to be_present @@ -1292,6 +1365,8 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_89: "1", field_90: nil, field_91: nil, field_92: nil, field_93: nil, field_94: nil, field_95: nil, field_96: nil, field_97: nil, field_98: nil, field_99: nil } } it "errors added to correct fields" do + parser.valid? + expect(parser.errors[:field_90]).to be_present expect(parser.errors[:field_91]).to be_present expect(parser.errors[:field_92]).to be_present @@ -1316,6 +1391,7 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do end it "adds an error to #{field}" do + parser.valid? expect(parser.errors[field]).to be_present end end @@ -1327,6 +1403,8 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_110: "1", field_111: nil, field_112: nil, field_113: nil, field_114: nil, field_115: nil } } it "is not permitted" do + parser.valid? + expect(parser.errors[:field_111]).to be_present expect(parser.errors[:field_112]).to be_present expect(parser.errors[:field_113]).to be_present @@ -1341,6 +1419,7 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_119: "3", field_1: owning_org.old_visible_id, field_2: owning_org.old_visible_id } } it "is not permitted" do + parser.valid? expect(parser.errors[:field_119]).to be_present end end @@ -1349,6 +1428,7 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_119: "4", field_1: owning_org.old_visible_id, field_2: owning_org.old_visible_id, field_4: "1" } } it "is not permitted" do + parser.valid? expect(parser.errors[:field_119]).to be_present end end @@ -1359,6 +1439,7 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_119: "4", field_1: owning_org.old_visible_id, field_2: owning_org.old_visible_id } } it "is permitted" do + parser.valid? expect(parser.errors[:field_119]).to be_blank end end @@ -1368,6 +1449,7 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_119: "4", field_4: "2" } } it "is permitted" do + parser.valid? expect(parser.errors[:field_119]).to be_blank end end @@ -1378,6 +1460,8 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_5: "1", field_7: nil, field_8: nil, field_9: nil } } it "returns an error" do + parser.valid? + expect(parser.errors[:field_7]).to be_present expect(parser.errors[:field_8]).to be_present expect(parser.errors[:field_9]).to be_present @@ -1388,6 +1472,7 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_9: "2022" } } it "returns an error" do + parser.valid? expect(parser.errors[:field_9]).to include("Tenancy start year must be 2 digits") end end @@ -1406,6 +1491,8 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:bulk_upload) { create(:bulk_upload, :lettings, user:, year: 2022) } it "does not return errors" do + parser.valid? + expect(parser.errors[:field_7]).not_to be_present expect(parser.errors[:field_8]).not_to be_present expect(parser.errors[:field_9]).not_to be_present @@ -1424,6 +1511,8 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:bulk_upload) { create(:bulk_upload, :lettings, user:, year: 2022) } it "returns setup errors" do + parser.valid? + expect(parser.errors.where(:field_7, category: :setup)).to be_present expect(parser.errors.where(:field_8, category: :setup)).to be_present expect(parser.errors.where(:field_9, category: :setup)).to be_present @@ -1436,10 +1525,12 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_1: "", field_4: 1 } } it "is not permitted as setup error" do + parser.valid? expect(parser.errors.where(:field_1, category: :setup).map(&:message)).to eql(["You must answer owning organisation"]) end it "blocks log creation" do + parser.valid? expect(parser).to be_block_log_creation end end @@ -1448,12 +1539,14 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_1: "donotexist" } } it "is not permitted as setup error" do - setup_errors = parser.errors.select { |e| e.options[:category] == :setup } + parser.valid? + setup_errors = parser.errors.select { |e| e.options[:category] == :setup } expect(setup_errors.find { |e| e.attribute == :field_1 }.message).to eql("The owning organisation code is incorrect") end it "blocks log creation" do + parser.valid? expect(parser).to be_block_log_creation end end @@ -1464,12 +1557,14 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_1: owning_org.old_visible_id, field_2: owning_org.old_visible_id } } it "is not permitted as setup error" do - setup_errors = parser.errors.select { |e| e.options[:category] == :setup } + parser.valid? + setup_errors = parser.errors.select { |e| e.options[:category] == :setup } expect(setup_errors.find { |e| e.attribute == :field_1 }.message).to eql("The owning organisation code provided is for an organisation that does not own stock") end it "blocks log creation" do + parser.valid? expect(parser).to be_block_log_creation end end @@ -1480,12 +1575,14 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_1: unaffiliated_org.old_visible_id } } it "is not permitted as setup error" do - setup_errors = parser.errors.select { |e| e.options[:category] == :setup } + parser.valid? + setup_errors = parser.errors.select { |e| e.options[:category] == :setup } expect(setup_errors.find { |e| e.attribute == :field_1 }.message).to eql("You do not have permission to add logs for this owning organisation") end it "blocks log creation" do + parser.valid? expect(parser).to be_block_log_creation end end @@ -1541,12 +1638,14 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_2: "", field_4: 1 } } it "is not permitted as setup error" do - setup_errors = parser.errors.select { |e| e.options[:category] == :setup } + parser.valid? + setup_errors = parser.errors.select { |e| e.options[:category] == :setup } expect(setup_errors.find { |e| e.attribute == :field_2 }.message).to eql("The managing organisation code is incorrect") end it "blocks log creation" do + parser.valid? expect(parser).to be_block_log_creation end end @@ -1555,12 +1654,14 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_2: "donotexist" } } it "is not permitted as setup error" do - setup_errors = parser.errors.select { |e| e.options[:category] == :setup } + parser.valid? + setup_errors = parser.errors.select { |e| e.options[:category] == :setup } expect(setup_errors.find { |e| e.attribute == :field_2 }.message).to eql("The managing organisation code is incorrect") end it "blocks log creation" do + parser.valid? expect(parser).to be_block_log_creation end end @@ -1571,12 +1672,14 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_1: owning_org.old_visible_id, field_2: unaffiliated_org.old_visible_id } } it "is not permitted as setup error" do - setup_errors = parser.errors.select { |e| e.options[:category] == :setup } + parser.valid? + setup_errors = parser.errors.select { |e| e.options[:category] == :setup } expect(setup_errors.find { |e| e.attribute == :field_2 }.message).to eql("This managing organisation does not have a relationship with the owning organisation") end it "blocks log creation" do + parser.valid? expect(parser).to be_block_log_creation end end @@ -1587,6 +1690,7 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_4: nil, field_13: "123" } } it "is reported as a setup error" do + parser.valid? expect(parser.errors.where(:field_4, category: :setup).map(&:message)).to eql(["You must answer needs type"]) end end @@ -1597,6 +1701,7 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { { bulk_upload:, field_1: owning_org.old_visible_id, field_2: owning_org.old_visible_id, field_6: "" } } it "has setup errors on the field" do + parser.valid? expect(parser.errors.where(:field_6, category: :setup).map(&:message)).to eql(["You must answer property renewal"]) end end @@ -1605,6 +1710,7 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { setup_section_params.merge({ field_6: "101" }) } it "adds a setup error" do + parser.valid? expect(parser.errors.where(:field_6, category: :setup).map(&:message)).to include("Enter a valid value for Is this letting a renewal?") end end @@ -1615,6 +1721,7 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { setup_section_params.merge({ field_18: "1234567890123" }) } it "adds an appropriate error" do + parser.valid? expect(parser.errors[:field_18]).to eql(["UPRN is not recognised. Check the number, or enter the address"]) end end @@ -1623,6 +1730,8 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { setup_section_params } it "adds appropriate errors" do + parser.valid? + expect(parser.errors[:field_18]).to eql(["You must answer UPRN"]) expect(parser.errors[:field_19]).to eql(["You must answer address line 1"]) expect(parser.errors[:field_21]).to eql(["You must answer town or city"]) @@ -1641,6 +1750,8 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do end it "does not add UPRN errors" do + parser.valid? + expect(parser.errors[:field_18]).to be_empty expect(parser.errors[:field_19]).to be_empty expect(parser.errors[:field_21]).to be_empty @@ -1656,6 +1767,7 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do end it "doesn't add an error" do + parser.valid? expect(parser.errors[:field_18]).to be_empty end end @@ -1670,6 +1782,7 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do end it "doesn't add an error" do + parser.valid? expect(parser.errors[:field_18]).to be_empty end end @@ -1680,6 +1793,7 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { setup_section_params.merge({ field_26: "4" }) } it "returns an error" do + parser.valid? expect(parser.errors[:field_26]).to be_present end end @@ -1690,10 +1804,12 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { setup_section_params.merge({ field_30: nil }) } it "returns an error" do + parser.valid? expect(parser.errors[:field_30]).to be_present end it "populates with correct error message" do + parser.valid? expect(parser.errors[:field_30]).to eql(["You must answer type of building"]) end end @@ -1704,6 +1820,7 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { setup_section_params.merge({ field_52: "", field_53: "F" }) } it "returns an error" do + parser.valid? expect(parser.errors[:field_52]).to be_present end end @@ -1714,11 +1831,15 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { setup_section_params.merge({ field_46: 22, field_50: 5 }) } it "adds an error to the relevant fields" do + parser.valid? + expect(parser.errors.where(:field_46, category: :soft_validation)).to be_present expect(parser.errors.where(:field_50, category: :soft_validation)).to be_present end it "populates with correct error message" do + parser.valid? + expect(parser.errors.where(:field_46, category: :soft_validation).first.message).to eql("You told us this person is aged 22 years and retired.") expect(parser.errors.where(:field_50, category: :soft_validation).first.message).to eql("You told us this person is aged 22 years and retired.") end @@ -1728,11 +1849,15 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { setup_section_params.merge({ field_82: "1", field_47: "M", field_53: "M", field_57: "M" }) } it "adds errors to fields that are routed to" do + parser.valid? + expect(parser.errors.where(:field_53, category: :soft_validation)).to be_present expect(parser.errors.where(:field_57, category: :soft_validation)).to be_present end it "does not add errors to fields that are not routed to" do + parser.valid? + expect(parser.errors.where(:field_61, category: :soft_validation)).not_to be_present expect(parser.errors.where(:field_65, category: :soft_validation)).not_to be_present end @@ -1742,10 +1867,13 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do let(:attributes) { setup_section_params.merge({ field_128: 120, field_126: 1, field_32: 1, field_4: 1, field_5: "3", field_25: "E09000008" }) } it "adds an error to the relevant fields" do + parser.valid? expect(parser.errors.where(:field_128, category: :soft_validation)).to be_present end it "populates with correct error message" do + parser.valid? + expect(parser.errors.where(:field_128, category: :soft_validation).count).to be(1) expect(parser.errors.where(:field_128, category: :soft_validation).first.message).to eql("You told us the rent is £120.00 every week. This is higher than we would expect.") end