Browse Source

CLDC-3898 Correctly route to manual address entry for new builds (#2974)

* Correclty set manual address entry for new builds

* Refactor

* Update BU tests

* Keep the UPRN for newbuilds if given
pull/2986/head
kosiakkatrina 1 month ago committed by GitHub
parent
commit
19eb437b61
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 9
      app/models/derived_variables/lettings_log_variables.rb
  2. 8
      app/models/lettings_log.rb
  3. 186
      spec/models/lettings_log_spec.rb

9
app/models/derived_variables/lettings_log_variables.rb

@ -83,12 +83,19 @@ module DerivedVariables::LettingsLogVariables
end
set_housingneeds_fields if housingneeds?
if form.start_year_2025_or_later? && is_general_needs?
if changed_to_newbuild? && uprn.nil?
self.manual_address_entry_selected = true
end
self.manual_address_entry_selected = address_answered_without_uprn? if changed_from_newbuild?
end
self.uprn_known = 0 if address_answered_without_uprn?
if uprn_known&.zero?
self.uprn = nil
if uprn_known_was == 1
if uprn_known_was == 1 && (rsnvac != 15 || !form.start_year_2025_or_later?)
self.address_line1 = nil
self.address_line2 = nil
self.town_or_city = nil

8
app/models/lettings_log.rb

@ -740,6 +740,14 @@ class LettingsLog < Log
"lettings_log"
end
def changed_to_newbuild?
rsnvac == 15 && rsnvac_was != 15
end
def changed_from_newbuild?
rsnvac != 15 && rsnvac_was == 15
end
private
def reset_invalid_unresolved_log_fields!

186
spec/models/lettings_log_spec.rb

@ -849,6 +849,192 @@ RSpec.describe LettingsLog do
expect(lettings_log.reload.is_la_inferred).to eq(false)
end
end
context "when the log changes from new build to not new build" do
before do
allow(FormHandler.instance).to receive(:current_lettings_form).and_call_original
Timecop.freeze(2025, 5, 1)
Singleton.__init__(FormHandler)
end
after do
Timecop.unfreeze
end
context "and the address is entered" do
let(:address_lettings_log) do
create(:lettings_log,
:setup_completed,
startdate: Time.zone.yesterday,
mrcdate: nil,
rsnvac: 15,
manual_address_entry_selected: true,
first_time_property_let_as_social_housing: 1,
address_line1: "Address line 1",
address_line2: "Address line 2",
town_or_city: "Town",
postcode_full: "AA1 1AA")
end
it "keeps the manually entered address" do
expect(address_lettings_log.manual_address_entry_selected).to eq(true)
expect(address_lettings_log.uprn_selection).to eq(nil)
expect(address_lettings_log.uprn_known).to eq(0)
expect(address_lettings_log.uprn).to eq(nil)
expect(address_lettings_log.address_line1).to eq("Address line 1")
expect(address_lettings_log.address_line2).to eq("Address line 2")
expect(address_lettings_log.town_or_city).to eq("Town")
expect(address_lettings_log.postcode_full).to eq("AA1 1AA")
address_lettings_log.update!(rsnvac: 16)
expect(address_lettings_log.manual_address_entry_selected).to eq(true)
expect(address_lettings_log.address_line1).to eq("Address line 1")
expect(address_lettings_log.address_line2).to eq("Address line 2")
expect(address_lettings_log.town_or_city).to eq("Town")
expect(address_lettings_log.postcode_full).to eq("AA1 1AA")
end
end
context "and the address is not entered" do
let(:address_lettings_log) do
create(:lettings_log,
:setup_completed,
startdate: Time.zone.yesterday,
mrcdate: nil,
rsnvac: 15,
manual_address_entry_selected: true,
first_time_property_let_as_social_housing: 1,
address_line1: nil,
address_line2: nil,
town_or_city: nil,
postcode_full: nil)
end
it "routes to the uprn question" do
expect(address_lettings_log.manual_address_entry_selected).to eq(true)
expect(address_lettings_log.uprn_selection).to eq(nil)
expect(address_lettings_log.uprn_known).to eq(0)
expect(address_lettings_log.uprn).to eq(nil)
expect(address_lettings_log.address_line1).to eq(nil)
expect(address_lettings_log.address_line2).to eq(nil)
expect(address_lettings_log.town_or_city).to eq(nil)
expect(address_lettings_log.postcode_full).to eq(nil)
address_lettings_log.update!(rsnvac: 16)
expect(address_lettings_log.manual_address_entry_selected).to eq(false)
expect(address_lettings_log.uprn_selection).to eq(nil)
expect(address_lettings_log.uprn_known).to eq(nil)
end
end
end
context "when the log changes from not new build to new build" do
before do
allow(FormHandler.instance).to receive(:current_lettings_form).and_call_original
Timecop.freeze(2025, 5, 1)
Singleton.__init__(FormHandler)
end
after do
Timecop.unfreeze
end
context "and the uprn is selected" do
let(:address_lettings_log) do
create(:lettings_log,
:setup_completed,
startdate: Time.zone.yesterday,
mrcdate: nil,
rsnvac: 17,
manual_address_entry_selected: false,
first_time_property_let_as_social_housing: 1,
uprn_selection: "1",
uprn_confirmed: "1",
uprn_known: "1",
uprn: "1")
end
it "keeps the uprn" do
expect(address_lettings_log.manual_address_entry_selected).to eq(false)
expect(address_lettings_log.uprn).to eq("1")
expect(address_lettings_log.address_line1).to eq("1, Test Street")
expect(address_lettings_log.town_or_city).to eq("Test Town")
expect(address_lettings_log.postcode_full).to eq("AA1 1AA")
address_lettings_log.update!(rsnvac: 15)
expect(address_lettings_log.manual_address_entry_selected).to eq(false)
expect(address_lettings_log.address_line1).to eq("1, Test Street")
expect(address_lettings_log.town_or_city).to eq("Test Town")
expect(address_lettings_log.postcode_full).to eq("AA1 1AA")
expect(address_lettings_log.uprn_selection).to eq("1")
expect(address_lettings_log.uprn).to eq("1")
expect(address_lettings_log.uprn_known).to eq(1)
end
end
context "and the address is manually entered" do
let(:address_lettings_log) do
create(:lettings_log,
:setup_completed,
startdate: Time.zone.yesterday,
mrcdate: nil,
rsnvac: 16,
manual_address_entry_selected: true,
first_time_property_let_as_social_housing: 1,
uprn_selection: "uprn_not_listed",
address_line1: "Address line 1",
address_line2: "Address line 2",
town_or_city: "Town",
postcode_full: "AA1 1AA")
end
it "keeps the manually entered address" do
expect(address_lettings_log.manual_address_entry_selected).to eq(true)
expect(address_lettings_log.address_line1).to eq("Address line 1")
expect(address_lettings_log.address_line2).to eq("Address line 2")
expect(address_lettings_log.town_or_city).to eq("Town")
expect(address_lettings_log.postcode_full).to eq("AA1 1AA")
address_lettings_log.update!(rsnvac: 15)
expect(address_lettings_log.manual_address_entry_selected).to eq(true)
expect(address_lettings_log.address_line1).to eq("Address line 1")
expect(address_lettings_log.address_line2).to eq("Address line 2")
expect(address_lettings_log.town_or_city).to eq("Town")
expect(address_lettings_log.postcode_full).to eq("AA1 1AA")
end
end
context "and the address is not entered" do
let(:address_lettings_log) do
create(:lettings_log,
:setup_completed,
startdate: Time.zone.yesterday,
mrcdate: nil,
rsnvac: 17,
manual_address_entry_selected: false,
first_time_property_let_as_social_housing: 1,
address_line1: nil,
address_line2: nil,
town_or_city: nil,
postcode_full: nil)
end
it "routes to the manual address questions" do
expect(address_lettings_log.manual_address_entry_selected).to eq(false)
expect(address_lettings_log.uprn_selection).to eq(nil)
expect(address_lettings_log.address_line1).to eq(nil)
expect(address_lettings_log.address_line2).to eq(nil)
expect(address_lettings_log.town_or_city).to eq(nil)
expect(address_lettings_log.postcode_full).to eq(nil)
address_lettings_log.update!(rsnvac: 15)
expect(address_lettings_log.manual_address_entry_selected).to eq(true)
expect(address_lettings_log.uprn_selection).to eq(nil)
expect(address_lettings_log.uprn).to eq(nil)
expect(address_lettings_log.uprn_known).to eq(0)
end
end
end
end
describe "optional fields" do

Loading…
Cancel
Save