Browse Source

CLDC-3135 Infer beds for 24/25 bedsits (#2167)

* feat: for 24/25 onwards, infer beds = 1 for bedsits, change hint text and remove validation

* feat: add tests

* feat: update bulk upload inferral

* feat: update tests

* refactor: rename file

* refactor: nest 2024 changes for future DRYness

* refactor: lint
CLDC-3196-update-bu-resources-link
natdeanlewissoftwire 11 months ago committed by GitHub
parent
commit
39b6c4ddd8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 6
      app/models/derived_variables/lettings_log_variables.rb
  2. 2
      app/models/form/lettings/pages/property_number_of_bedrooms.rb
  3. 5
      app/models/form/lettings/questions/beds.rb
  4. 4
      app/models/lettings_log.rb
  5. 2
      app/models/validations/property_validations.rb
  6. 2
      app/services/bulk_upload/lettings/year2024/row_parser.rb
  7. 33
      spec/models/form/lettings/pages/property_number_of_bedrooms_spec.rb
  8. 65
      spec/models/form/lettings/questions/beds_spec.rb
  9. 18
      spec/services/bulk_upload/lettings/year2024/row_parser_spec.rb

6
app/models/derived_variables/lettings_log_variables.rb

@ -91,6 +91,9 @@ module DerivedVariables::LettingsLogVariables
self.prevten = 30 if owning_organisation&.provider_type == "LA"
end
end
if form.start_year_after_2024? && is_bedsit?
self.beds = 1
end
child_under_16_constraints!
@ -179,6 +182,9 @@ private
self.wchair = nil
self.location_id = nil
end
if form.start_year_after_2024? && (unittype_gn_changed? && unittype_gn_was == 2)
self.beds = nil
end
end
def get_totelder

2
app/models/form/lettings/pages/property_number_of_bedrooms.rb

@ -2,7 +2,7 @@ class Form::Lettings::Pages::PropertyNumberOfBedrooms < ::Form::Page
def initialize(id, hsh, subsection)
super
@id = "property_number_of_bedrooms"
@depends_on = [{ "is_general_needs?" => true }]
@depends_on = [{ "is_general_needs?" => true, "is_beds_inferred?" => false }]
end
def questions

5
app/models/form/lettings/questions/beds.rb

@ -9,8 +9,11 @@ class Form::Lettings::Questions::Beds < ::Form::Question
@check_answers_card_number = 0
@max = 12
@min = 1
@hint_text = "If shared accommodation, enter the number of bedrooms occupied by this household. A bedsit has 1 bedroom."
@step = 1
@question_number = 22
end
def hint_text
form.start_year_after_2024? ? "If shared accommodation, enter the number of bedrooms occupied by this household." : "If shared accommodation, enter the number of bedrooms occupied by this household. A bedsit has 1 bedroom."
end
end

4
app/models/lettings_log.rb

@ -356,6 +356,10 @@ class LettingsLog < Log
unittype_gn == 2
end
def is_beds_inferred?
form.start_year_after_2024? && is_bedsit?
end
def is_shared_housing?
# 4: Shared flat or maisonette
# 9: Shared house

2
app/models/validations/property_validations.rb

@ -34,7 +34,7 @@ module Validations::PropertyValidations
def validate_shared_housing_rooms(record)
unless record.unittype_gn.nil?
if record.is_bedsit? && record.beds != 1 && record.beds.present?
if record.is_bedsit? && record.beds != 1 && record.beds.present? && !record.form.start_year_after_2024?
record.errors.add :unittype_gn, I18n.t("validations.property.unittype_gn.one_bedroom_bedsit")
record.errors.add :beds, I18n.t("validations.property.unittype_gn.one_bedroom_bedsit")
end

2
app/services/bulk_upload/lettings/year2024/row_parser.rb

@ -1036,7 +1036,7 @@ private
attributes["unittype_gn"] = field_26
attributes["builtype"] = field_27
attributes["wchair"] = field_28
attributes["beds"] = field_29
attributes["beds"] = field_26 == 2 ? 1 : field_29
attributes["joint"] = field_36
attributes["startertenancy"] = field_37
attributes["tenancy"] = field_38

33
spec/models/form/lettings/pages/property_number_of_bedrooms_spec.rb

@ -0,0 +1,33 @@
require "rails_helper"
RSpec.describe Form::Lettings::Pages::PropertyNumberOfBedrooms, type: :model do
subject(:page) { described_class.new(page_id, page_definition, subsection) }
let(:page_id) { nil }
let(:page_definition) { nil }
let(:subsection) { instance_double(Form::Subsection) }
it "has correct subsection" do
expect(page.subsection).to eq(subsection)
end
it "has correct questions" do
expect(page.questions.map(&:id)).to eq(%w[beds])
end
it "has the correct id" do
expect(page.id).to eq("property_number_of_bedrooms")
end
it "has the correct header" do
expect(page.header).to be_nil
end
it "has the correct description" do
expect(page.description).to be_nil
end
it "has the correct depends_on" do
expect(page.depends_on).to eq([{ "is_general_needs?" => true, "is_beds_inferred?" => false }])
end
end

65
spec/models/form/lettings/questions/beds_spec.rb

@ -0,0 +1,65 @@
require "rails_helper"
RSpec.describe Form::Lettings::Questions::Beds, type: :model do
subject(:question) { described_class.new(question_id, question_definition, page) }
let(:question_id) { nil }
let(:question_definition) { nil }
let(:page) { instance_double(Form::Page) }
let(:subsection) { instance_double(Form::Subsection) }
let(:form) { instance_double(Form) }
before do
allow(form).to receive(:start_year_after_2024?).and_return(false)
allow(page).to receive(:subsection).and_return(subsection)
allow(subsection).to receive(:form).and_return(form)
end
it "has correct page" do
expect(question.page).to eq(page)
end
it "has the correct id" do
expect(question.id).to eq("beds")
end
it "has the correct header" do
expect(question.header).to eq("How many bedrooms does the property have?")
end
it "has the correct check_answer_label" do
expect(question.check_answer_label).to eq("Number of bedrooms")
end
it "has the correct type" do
expect(question.type).to eq("numeric")
end
it "is not marked as derived" do
expect(question.derived?).to be false
end
it "has the correct min" do
expect(question.min).to eq(1)
end
it "has the correct max" do
expect(question.max).to eq(12)
end
context "with 2023/24 form" do
it "has the correct hint_text" do
expect(question.hint_text).to eq("If shared accommodation, enter the number of bedrooms occupied by this household. A bedsit has 1 bedroom.")
end
end
context "with 2024/25 form" do
before do
allow(form).to receive(:start_year_after_2024?).and_return(true)
end
it "has the correct hint_text" do
expect(question.hint_text).to eq("If shared accommodation, enter the number of bedrooms occupied by this household.")
end
end
end

18
spec/services/bulk_upload/lettings/year2024/row_parser_spec.rb

@ -1816,6 +1816,24 @@ RSpec.describe BulkUpload::Lettings::Year2024::RowParser do
end
end
describe "#beds" do
context "when property is a bedsit" do
let(:attributes) { setup_section_params.merge({ field_26: 2, field_29: 2 }) }
it "sets value to 1 even if field_29 contradicts this" do
expect(parser.log.beds).to be(1)
end
end
context "when property is not a bedsit" do
let(:attributes) { setup_section_params.merge({ field_26: 1, field_29: 2 }) }
it "sets value to field_29" do
expect(parser.log.beds).to be(2)
end
end
end
describe "#cbl" do
context "when field_112 is yes ie 1" do
let(:attributes) { { bulk_upload:, field_112: 1 } }

Loading…
Cancel
Save