From 0f1d2e69b5bb9f6ad6984da5b212a00eed3bffd7 Mon Sep 17 00:00:00 2001 From: Phil Lee Date: Thu, 9 Feb 2023 12:37:52 +0000 Subject: [PATCH] bulk upload validate LA and local housing referral --- app/models/organisation.rb | 2 ++ app/services/bulk_upload/lettings/row_parser.rb | 13 ++++++++++++- .../bulk_upload/lettings/row_parser_spec.rb | 14 ++++++++++++-- 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/app/models/organisation.rb b/app/models/organisation.rb index 69e4134d8..89d7d1f34 100644 --- a/app/models/organisation.rb +++ b/app/models/organisation.rb @@ -30,6 +30,8 @@ class Organisation < ApplicationRecord enum provider_type: PROVIDER_TYPE + alias_method :la?, :LA? + validates :name, presence: { message: I18n.t("validations.organisation.name_missing") } validates :provider_type, presence: { message: I18n.t("validations.organisation.provider_type_missing") } diff --git a/app/services/bulk_upload/lettings/row_parser.rb b/app/services/bulk_upload/lettings/row_parser.rb index 0ef0ab385..e1f60d22f 100644 --- a/app/services/bulk_upload/lettings/row_parser.rb +++ b/app/services/bulk_upload/lettings/row_parser.rb @@ -146,6 +146,7 @@ class BulkUpload::Lettings::RowParser validate :validate_data_types validate :validate_nulls validate :validate_relevant_collection_window + validate :validate_la_with_local_housing_referral def valid? errors.clear @@ -168,6 +169,12 @@ class BulkUpload::Lettings::RowParser private + def validate_la_with_local_housing_referral + if field_78 == 3 && owning_organisation && owning_organisation.la? + errors.add(:field_78, "The source of the referral cannot be Nominated by local housing authority as your organisation is a local authority") + end + end + def validate_relevant_collection_window return unless start_date && bulk_upload.form @@ -413,8 +420,12 @@ private end end + def owning_organisation + Organisation.find_by(old_visible_id: field_111) + end + def owning_organisation_id - Organisation.find_by(old_visible_id: field_111)&.id + owning_organisation&.id end def managing_organisation_id diff --git a/spec/services/bulk_upload/lettings/row_parser_spec.rb b/spec/services/bulk_upload/lettings/row_parser_spec.rb index f104afb85..9e7c39f40 100644 --- a/spec/services/bulk_upload/lettings/row_parser_spec.rb +++ b/spec/services/bulk_upload/lettings/row_parser_spec.rb @@ -8,8 +8,8 @@ RSpec.describe BulkUpload::Lettings::RowParser do let(:attributes) { { bulk_upload: } } let(:bulk_upload) { create(:bulk_upload, :lettings, user:) } let(:user) { create(:user, organisation: owning_org) } - let(:owning_org) { create(:organisation) } - let(:managing_org) { create(:organisation) } + let(:owning_org) { create(:organisation, :with_old_visible_id) } + let(:managing_org) { create(:organisation, :with_old_visible_id) } let(:setup_section_params) do { bulk_upload:, @@ -250,6 +250,16 @@ RSpec.describe BulkUpload::Lettings::RowParser do end end + describe "#field_78" do + context "when 3 ie PRP nominated by LA and owning org is LA" do + let(:attributes) { { bulk_upload:, field_78: "3", field_111: owning_org.old_visible_id } } + + it "is not permitted" do + expect(parser.errors[:field_78]).to be_present + end + end + end + describe "fields 96, 97, 98 => startdate" do context "when any one of these fields is blank" do let(:attributes) { { bulk_upload:, field_96: nil, field_97: nil, field_98: nil } }