Browse Source

Update 2023 housingneeds validations

pull/1501/head
Kat 3 years ago
parent
commit
ec0bf6f0b0
  1. 24
      app/services/bulk_upload/lettings/year2023/row_parser.rb
  2. 98
      spec/services/bulk_upload/lettings/year2023/row_parser_spec.rb

24
app/services/bulk_upload/lettings/year2023/row_parser.rb

@ -431,22 +431,26 @@ private
end
def validate_dont_know_disabled_needs_conjunction
if field_88 == 1 && [field_83, field_84, field_85, field_86].compact.count.positive?
errors.add(:field_88, I18n.t("validations.household.housingneeds.dont_know_disabled_needs_conjunction"))
if field_88 == 1 && [field_83, field_84, field_85, field_86].count(1).positive?
%i[field_88 field_83 field_84 field_85 field_86].each do |field|
errors.add(field, I18n.t("validations.household.housingneeds.dont_know_disabled_needs_conjunction")) if send(field) == 1
end
end
end
def validate_no_disabled_needs_conjunction
if field_87 == 1 && [field_83, field_84, field_85, field_86].compact.count.positive?
errors.add(:field_87, I18n.t("validations.household.housingneeds.no_disabled_needs_conjunction"))
if field_87 == 1 && [field_83, field_84, field_85, field_86].count(1).positive?
%i[field_87 field_83 field_84 field_85 field_86].each do |field|
errors.add(field, I18n.t("validations.household.housingneeds.no_disabled_needs_conjunction")) if send(field) == 1
end
end
end
def validate_only_one_housing_needs_type
if [field_83, field_84, field_85].compact.count > 1
errors.add(:field_83, I18n.t("validations.household.housingneeds_type.only_one_option_permitted"))
errors.add(:field_84, I18n.t("validations.household.housingneeds_type.only_one_option_permitted"))
errors.add(:field_85, I18n.t("validations.household.housingneeds_type.only_one_option_permitted"))
if [field_83, field_84, field_85].count(1) > 1
%i[field_83 field_84 field_85].each do |field|
errors.add(field, I18n.t("validations.household.housingneeds_type.only_one_option_permitted")) if send(field) == 1
end
end
end
@ -1173,8 +1177,8 @@ private
2
elsif field_88 == 1
3
else
2
elsif field_87&.zero?
1
end
end

98
spec/services/bulk_upload/lettings/year2023/row_parser_spec.rb

@ -165,6 +165,12 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do
field_82: "1",
field_83: "1",
field_84: "0",
field_85: "0",
field_86: "1",
field_87: "0",
field_89: "2",
field_100: "5",
@ -517,7 +523,6 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do
it "is not permitted" do
expect(parser.errors[:field_83]).to be_present
expect(parser.errors[:field_84]).to be_present
expect(parser.errors[:field_85]).to be_present
end
end
end
@ -1452,6 +1457,97 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do
expect(parser.log.housingneeds).to eq(3)
end
end
context "when housingneeds are given" do
let(:attributes) { { bulk_upload:, field_87: "0", field_85: "1", field_86: "1" } }
it "sets correct housingneeds" do
expect(parser.log.housingneeds).to eq(1)
expect(parser.log.housingneeds_type).to eq(2)
expect(parser.log.housingneeds_other).to eq(1)
end
end
context "when housingneeds a and b are selected" do
let(:attributes) { { bulk_upload:, field_83: "1", field_84: "1" } }
it "sets error on housingneeds a and b" do
parser.valid?
expect(parser.errors[:field_83]).to include("Only one disabled access need: fully wheelchair-accessible housing, wheelchair access to essential rooms or level access housing, can be selected")
expect(parser.errors[:field_84]).to include("Only one disabled access need: fully wheelchair-accessible housing, wheelchair access to essential rooms or level access housing, can be selected")
expect(parser.errors[:field_85]).to be_blank
end
end
context "when housingneeds a and c are selected" do
let(:attributes) { { bulk_upload:, field_83: "1", field_85: "1" } }
it "sets error on housingneeds a and c" do
parser.valid?
expect(parser.errors[:field_83]).to include("Only one disabled access need: fully wheelchair-accessible housing, wheelchair access to essential rooms or level access housing, can be selected")
expect(parser.errors[:field_85]).to include("Only one disabled access need: fully wheelchair-accessible housing, wheelchair access to essential rooms or level access housing, can be selected")
expect(parser.errors[:field_84]).to be_blank
end
end
context "when housingneeds b and c are selected" do
let(:attributes) { { bulk_upload:, field_84: "1", field_85: "1" } }
it "sets error on housingneeds b and c" do
parser.valid?
expect(parser.errors[:field_84]).to include("Only one disabled access need: fully wheelchair-accessible housing, wheelchair access to essential rooms or level access housing, can be selected")
expect(parser.errors[:field_85]).to include("Only one disabled access need: fully wheelchair-accessible housing, wheelchair access to essential rooms or level access housing, can be selected")
expect(parser.errors[:field_83]).to be_blank
end
end
context "when housingneeds a and g are selected" do
let(:attributes) { { bulk_upload:, field_83: "1", field_87: "1" } }
it "sets error on housingneeds a and g" do
parser.valid?
expect(parser.errors[:field_87]).to include("No disabled access needs can’t be selected if you have selected fully wheelchair-accessible housing, wheelchair access to essential rooms, level access housing or other disabled access needs")
expect(parser.errors[:field_83]).to include("No disabled access needs can’t be selected if you have selected fully wheelchair-accessible housing, wheelchair access to essential rooms, level access housing or other disabled access needs")
expect(parser.errors[:field_84]).to be_blank
expect(parser.errors[:field_85]).to be_blank
end
end
context "when only housingneeds g is selected" do
let(:attributes) { { bulk_upload:, field_83: "0", field_87: "1" } }
it "does not add any housingneeds errors" do
parser.valid?
expect(parser.errors[:field_59]).to be_blank
expect(parser.errors[:field_83]).to be_blank
expect(parser.errors[:field_84]).to be_blank
expect(parser.errors[:field_85]).to be_blank
end
end
context "when housingneeds a and h are selected" do
let(:attributes) { { bulk_upload:, field_83: "1", field_88: "1" } }
it "sets error on housingneeds a and h" do
parser.valid?
expect(parser.errors[:field_88]).to include("Don’t know disabled access needs can’t be selected if you have selected fully wheelchair-accessible housing, wheelchair access to essential rooms, level access housing or other disabled access needs")
expect(parser.errors[:field_83]).to include("Don’t know disabled access needs can’t be selected if you have selected fully wheelchair-accessible housing, wheelchair access to essential rooms, level access housing or other disabled access needs")
expect(parser.errors[:field_84]).to be_blank
expect(parser.errors[:field_85]).to be_blank
end
end
context "when only housingneeds h is selected" do
let(:attributes) { { bulk_upload:, field_83: "0", field_88: "1" } }
it "does not add any housingneeds errors" do
parser.valid?
expect(parser.errors[:field_88]).to be_blank
expect(parser.errors[:field_83]).to be_blank
expect(parser.errors[:field_84]).to be_blank
expect(parser.errors[:field_85]).to be_blank
end
end
end
describe "#housingneeds_type" do

Loading…
Cancel
Save