Skip to content

Commit

Permalink
Set relevant address fields based on rsnvac
Browse files Browse the repository at this point in the history
  • Loading branch information
kosiakkatrina committed Feb 21, 2025
1 parent db403b7 commit 30a0727
Show file tree
Hide file tree
Showing 4 changed files with 166 additions and 2 deletions.
17 changes: 16 additions & 1 deletion app/models/derived_variables/lettings_log_variables.rb
Original file line number Diff line number Diff line change
Expand Up @@ -82,12 +82,27 @@ def set_derived_fields!
end

set_housingneeds_fields if housingneeds?
if form.start_year_2025_or_later? && is_general_needs?
if rsnvac == 15
self.uprn_selection = "uprn_not_listed"
self.uprn_known = nil
self.uprn = nil
self.address_line1_input = address_line1.to_s + address_line2.to_s
end

if rsnvac != 15 && rsnvac_was == 15
self.uprn_selection = nil
self.address_line1_input = address_line1.to_s + address_line2.to_s
self.postcode_full_input = postcode_full
self.uprn_selection = "uprn_not_listed" if address_answered_without_uprn?
end
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
Expand Down
8 changes: 8 additions & 0 deletions app/models/lettings_log.rb
Original file line number Diff line number Diff line change
Expand Up @@ -740,6 +740,14 @@ def log_type
"lettings_log"
end

def rsnvac_answered?
rsnvac.present?
end

def is_new_build?
rsnvac == 15
end

private

def reset_invalid_unresolved_log_fields!
Expand Down
2 changes: 1 addition & 1 deletion app/models/log.rb
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ def process_address_change!
self.address_line2 = nil
self.town_or_city = nil
self.county = nil
self.postcode_full = postcode_full_input if postcode_full_input.match(POSTCODE_REGEXP)
self.postcode_full = postcode_full_input if postcode_full_input&.match(POSTCODE_REGEXP)
process_postcode_changes!
else
self.uprn = uprn_selection
Expand Down
141 changes: 141 additions & 0 deletions spec/models/lettings_log_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -849,6 +849,147 @@ def previous_postcode_fields
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
context "and the address is entered" do
before do
lettings_log.update!(startdate: Time.zone.yesterday,
mrcdate: nil,
rsnvac: 15,
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(lettings_log.uprn_selection).to eq("uprn_not_listed")
expect(lettings_log.address_line1).to eq("Address line 1")
expect(lettings_log.address_line2).to eq("Address line 2")
expect(lettings_log.town_or_city).to eq("Town")
expect(lettings_log.postcode_full).to eq("AA1 1AA")

lettings_log.update!(rsnvac: 16)
expect(lettings_log.address_line1).to eq("Address line 1")
expect(lettings_log.address_line2).to eq("Address line 2")
expect(lettings_log.town_or_city).to eq("Town")
expect(lettings_log.postcode_full).to eq("AA1 1AA")
end
end

context "and the address is not entered" do
before do
lettings_log.update!(startdate: Time.zone.yesterday,
mrcdate: nil,
rsnvac: 15,
first_time_property_let_as_social_housing: 1,
# uprn_selection: "uprn_not_listed",
address_line1: nil,
address_line2: nil,
town_or_city: nil,
postcode_full: nil)
end

it "routes to the uprn question" do
expect(lettings_log.uprn_selection).to eq("uprn_not_listed")
expect(lettings_log.address_line1).to eq(nil)
expect(lettings_log.address_line2).to eq(nil)
expect(lettings_log.town_or_city).to eq(nil)
expect(lettings_log.postcode_full).to eq(nil)

lettings_log.update!(rsnvac: 16)
expect(lettings_log.uprn_selection).to eq(nil)
expect(lettings_log.uprn_known).to eq(nil)
end
end
end

context "when the log changes from not new build to new build" do
context "and the uprn is selected" do
before do
lettings_log.update!(startdate: Time.zone.yesterday,
mrcdate: nil,
rsnvac: 17,
first_time_property_let_as_social_housing: 1,
uprn_selection: "1",
uprn_confirmed: "1",
uprn_known: "1",
uprn: "1")
end

it "clears the uprn" do
expect(lettings_log.uprn).to eq("1")
expect(lettings_log.address_line1).to eq("1, Test Street")
expect(lettings_log.town_or_city).to eq("Test Town")
expect(lettings_log.postcode_full).to eq("AA1 1AA")

lettings_log.update!(rsnvac: 15)
expect(lettings_log.address_line1).to eq("1, Test Street")
expect(lettings_log.town_or_city).to eq("Test Town")
expect(lettings_log.postcode_full).to eq("AA1 1AA")
expect(lettings_log.uprn_selection).to eq("uprn_not_listed")
expect(lettings_log.uprn).to eq(nil)
expect(lettings_log.uprn_known).to eq(0)
end
end

context "and the address is manually entered" do
before do
lettings_log.update!(startdate: Time.zone.yesterday,
mrcdate: nil,
rsnvac: 16,
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(lettings_log.uprn_selection).to eq("uprn_not_listed")
expect(lettings_log.address_line1).to eq("Address line 1")
expect(lettings_log.address_line2).to eq("Address line 2")
expect(lettings_log.town_or_city).to eq("Town")
expect(lettings_log.postcode_full).to eq("AA1 1AA")

lettings_log.update!(rsnvac: 15)
expect(lettings_log.uprn_selection).to eq("uprn_not_listed")
expect(lettings_log.address_line1).to eq("Address line 1")
expect(lettings_log.address_line2).to eq("Address line 2")
expect(lettings_log.town_or_city).to eq("Town")
expect(lettings_log.postcode_full).to eq("AA1 1AA")
end
end

context "and the address is not entered" do
before do
lettings_log.update!(startdate: Time.zone.yesterday,
mrcdate: nil,
rsnvac: 17,
first_time_property_let_as_social_housing: 1,
# uprn_selection: "uprn_not_listed",
address_line1: nil,
address_line2: nil,
town_or_city: nil,
postcode_full: nil)
end

it "routes to the manual address questions" do
expect(lettings_log.uprn_selection).to eq(nil)
expect(lettings_log.address_line1).to eq(nil)
expect(lettings_log.address_line2).to eq(nil)
expect(lettings_log.town_or_city).to eq(nil)
expect(lettings_log.postcode_full).to eq(nil)

lettings_log.update!(rsnvac: 15)
expect(lettings_log.uprn_selection).to eq("uprn_not_listed")
expect(lettings_log.uprn_known).to eq(nil)
end
end
end
end

describe "optional fields" do
Expand Down

0 comments on commit 30a0727

Please sign in to comment.