From 0e23fa160c156791eb8e24a127c6f9175da30038 Mon Sep 17 00:00:00 2001 From: kosiakkatrina <54268893+kosiakkatrina@users.noreply.github.com> Date: Tue, 26 Mar 2024 07:59:26 +0000 Subject: [PATCH 1/3] Log unsuccessful updates (#2350) --- lib/tasks/correct_renewal_postcodes.rake | 4 +++- .../tasks/correct_renewal_postcodes_spec.rb | 23 +++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/lib/tasks/correct_renewal_postcodes.rake b/lib/tasks/correct_renewal_postcodes.rake index 09dd383a2..25dbadc89 100644 --- a/lib/tasks/correct_renewal_postcodes.rake +++ b/lib/tasks/correct_renewal_postcodes.rake @@ -19,6 +19,8 @@ task correct_renewal_postcodes: :environment do log.previous_la_known = log.la.present? ? 1 : 0 log.prevloc = log.la log.values_updated_at = Time.zone.now - log.save! + unless log.save + Rails.logger.info("Failed to save log #{log.id}: #{log.errors.full_messages}") + end end end diff --git a/spec/lib/tasks/correct_renewal_postcodes_spec.rb b/spec/lib/tasks/correct_renewal_postcodes_spec.rb index 4319f7f70..2374e82e8 100644 --- a/spec/lib/tasks/correct_renewal_postcodes_spec.rb +++ b/spec/lib/tasks/correct_renewal_postcodes_spec.rb @@ -213,6 +213,29 @@ RSpec.describe "correct_renewal_postcodes" do expect(log.values_updated_at).to eq(nil) end end + + context "and there there is a different validation error" do + let(:log) { create(:lettings_log, :completed, postcode_full: "SW1A 1AA", ppostcode_full: "AA1 1AA") } + let(:not_related_user) { create(:user) } + + before do + log.renewal = 1 + log.values_updated_at = nil + log.created_by = not_related_user + log.save!(validate: false) + end + + it "does not updaate the log and logs the errors" do + expect(log.ppostcode_full).to eq("AA1 1AA") + expect(Rails.logger).to receive(:info).with(/Failed to save log #{log.id}:/) + + task.invoke + log.reload + + expect(log.ppostcode_full).to eq("AA1 1AA") + expect(log.values_updated_at).to eq(nil) + end + end end end end From 81d0363a60a0ba8bbaeea3a55ac74a0946e1a4a0 Mon Sep 17 00:00:00 2001 From: kosiakkatrina <54268893+kosiakkatrina@users.noreply.github.com> Date: Tue, 26 Mar 2024 09:13:39 +0000 Subject: [PATCH 2/3] Fix some timezones in tests (#2351) --- .../merge/merge_organisations_service_spec.rb | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/spec/services/merge/merge_organisations_service_spec.rb b/spec/services/merge/merge_organisations_service_spec.rb index 44fce4a1c..8d4463a38 100644 --- a/spec/services/merge/merge_organisations_service_spec.rb +++ b/spec/services/merge/merge_organisations_service_spec.rb @@ -334,26 +334,30 @@ RSpec.describe Merge::MergeOrganisationsService do end it "moves the deactivations to absorbing organisation and removes them from merging organisations" do + expected_startdate = (Time.zone.today - 6.years).in_time_zone + expect(absorbing_organisation.owned_schemes.count).to eq(1) absorbed_scheme = absorbing_organisation.owned_schemes.first expect(absorbed_scheme.locations.count).to eq(1) absorbed_location = absorbed_scheme.locations.first - expect(absorbed_scheme.startdate).to eq(Time.zone.today - 6.years) + expect(absorbed_scheme.startdate).to eq(expected_startdate) expect(absorbed_scheme.scheme_deactivation_periods.count).to eq(1) - expect(absorbed_location.startdate).to eq(Time.zone.today - 6.years) + expect(absorbed_location.startdate).to eq(expected_startdate) expect(absorbed_location.location_deactivation_periods.count).to eq(1) end it "deactivates schemes and locations on the merged organisation" do + expected_deactivation_date = (Time.zone.today - 6.years).in_time_zone + expect(scheme.owning_organisation).to eq(merging_organisation) expect(location.scheme).to eq(scheme) expect(scheme.scheme_deactivation_periods.count).to eq(1) - expect(scheme.scheme_deactivation_periods.last.deactivation_date).to eq(Time.zone.today - 6.years) + expect(scheme.scheme_deactivation_periods.last.deactivation_date).to eq(expected_deactivation_date) expect(location.location_deactivation_periods.count).to eq(1) - expect(location.location_deactivation_periods.last.deactivation_date).to eq(Time.zone.today - 6.years) + expect(location.location_deactivation_periods.last.deactivation_date).to eq(expected_deactivation_date) end end From 826b803e4e391045d9f538123e3cafb7f5101a06 Mon Sep 17 00:00:00 2001 From: kosiakkatrina <54268893+kosiakkatrina@users.noreply.github.com> Date: Tue, 26 Mar 2024 10:42:06 +0000 Subject: [PATCH 3/3] CLDC-3305 Update previous postcode routing for renewals (#2325) * Derive previous postcode for renewals * Do not route renewals to previous postcode * Update test --- .../lettings_log_variables.rb | 10 +++++ .../pages/previous_local_authority.rb | 2 +- .../form/lettings/pages/previous_postcode.rb | 5 +++ .../form/accessible_autocomplete_spec.rb | 1 + .../pages/previous_local_authority_spec.rb | 38 +++++++++++++++++++ .../lettings/pages/previous_postcode_spec.rb | 38 +++++++++++++++++++ spec/models/lettings_log_spec.rb | 9 +++++ 7 files changed, 102 insertions(+), 1 deletion(-) create mode 100644 spec/models/form/lettings/pages/previous_local_authority_spec.rb create mode 100644 spec/models/form/lettings/pages/previous_postcode_spec.rb diff --git a/app/models/derived_variables/lettings_log_variables.rb b/app/models/derived_variables/lettings_log_variables.rb index 1de14c866..53e9d9c01 100644 --- a/app/models/derived_variables/lettings_log_variables.rb +++ b/app/models/derived_variables/lettings_log_variables.rb @@ -90,6 +90,16 @@ module DerivedVariables::LettingsLogVariables self.prevten = 32 if owning_organisation&.provider_type == "PRP" self.prevten = 30 if owning_organisation&.provider_type == "LA" end + self.ppostcode_full = postcode_full + self.ppcodenk = case postcode_known + when 0 + 1 + when 1 + 0 + end + self.is_previous_la_inferred = is_la_inferred + self.previous_la_known = 1 if la.present? + self.prevloc = la end if form.start_year_after_2024? && is_bedsit? self.beds = 1 diff --git a/app/models/form/lettings/pages/previous_local_authority.rb b/app/models/form/lettings/pages/previous_local_authority.rb index 540857282..48233e64a 100644 --- a/app/models/form/lettings/pages/previous_local_authority.rb +++ b/app/models/form/lettings/pages/previous_local_authority.rb @@ -2,7 +2,7 @@ class Form::Lettings::Pages::PreviousLocalAuthority < ::Form::Page def initialize(id, hsh, subsection) super @id = "previous_local_authority" - @depends_on = [{ "is_previous_la_inferred" => false }] + @depends_on = [{ "is_previous_la_inferred" => false, "renewal" => 0 }] end def questions diff --git a/app/models/form/lettings/pages/previous_postcode.rb b/app/models/form/lettings/pages/previous_postcode.rb index 38be3ccbe..61d08f3a9 100644 --- a/app/models/form/lettings/pages/previous_postcode.rb +++ b/app/models/form/lettings/pages/previous_postcode.rb @@ -1,4 +1,9 @@ class Form::Lettings::Pages::PreviousPostcode < ::Form::Page + def initialize(id, hsh, page) + super + @depends_on = [{ "renewal" => 0 }] + end + def questions @questions ||= [ Form::Lettings::Questions::Ppcodenk.new(nil, nil, self), diff --git a/spec/features/form/accessible_autocomplete_spec.rb b/spec/features/form/accessible_autocomplete_spec.rb index e525da46f..0c527b333 100644 --- a/spec/features/form/accessible_autocomplete_spec.rb +++ b/spec/features/form/accessible_autocomplete_spec.rb @@ -17,6 +17,7 @@ RSpec.describe "Accessible Autocomplete" do FactoryBot.create( :lettings_log, :in_progress, + renewal: 0, previous_la_known: 1, prevloc: "E09000033", illness: 1, diff --git a/spec/models/form/lettings/pages/previous_local_authority_spec.rb b/spec/models/form/lettings/pages/previous_local_authority_spec.rb new file mode 100644 index 000000000..7c5649b3f --- /dev/null +++ b/spec/models/form/lettings/pages/previous_local_authority_spec.rb @@ -0,0 +1,38 @@ +require "rails_helper" + +RSpec.describe Form::Lettings::Pages::PreviousLocalAuthority, 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, form: instance_double(Form, start_year_after_2024?: false, start_date: Time.zone.local(2023, 4, 1))) } + + 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[ + previous_la_known + prevloc + ], + ) + end + + it "has the correct id" do + expect(page.id).to eq("previous_local_authority") + 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 match([{ "is_previous_la_inferred" => false, "renewal" => 0 }]) + end +end diff --git a/spec/models/form/lettings/pages/previous_postcode_spec.rb b/spec/models/form/lettings/pages/previous_postcode_spec.rb new file mode 100644 index 000000000..83a3f44f3 --- /dev/null +++ b/spec/models/form/lettings/pages/previous_postcode_spec.rb @@ -0,0 +1,38 @@ +require "rails_helper" + +RSpec.describe Form::Lettings::Pages::PreviousPostcode, type: :model do + subject(:page) { described_class.new(page_id, page_definition, subsection) } + + let(:page_id) { "previous_postcode" } + let(:page_definition) { nil } + let(:subsection) { instance_double(Form::Subsection, form: instance_double(Form, start_year_after_2024?: false, start_date: Time.zone.local(2023, 4, 1))) } + + 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[ + ppcodenk + ppostcode_full + ], + ) + end + + it "has the correct id" do + expect(page.id).to eq("previous_postcode") + 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 match([{ "renewal" => 0 }]) + end +end diff --git a/spec/models/lettings_log_spec.rb b/spec/models/lettings_log_spec.rb index 0c2bd790c..910ce6886 100644 --- a/spec/models/lettings_log_spec.rb +++ b/spec/models/lettings_log_spec.rb @@ -1592,6 +1592,15 @@ RSpec.describe LettingsLog do expect { lettings_log.update!(startdate: Time.zone.local(2023, 4, 1)) }.to change(lettings_log, :underoccupation_benefitcap).from(2).to nil end + it "derives ppostcode_full as postcode_full if log is renewal" do + lettings_log.update!(renewal: 0, postcode_full: "M1 1AE", postcode_known: 1, ppostcode_full: "M1 1AD") + lettings_log.update!(renewal: 1) + lettings_log.reload + expect(lettings_log.ppostcode_full).to eq("M1 1AE") + expect(lettings_log.ppcodenk).to eq(0) + expect(lettings_log.prevloc).to eq(lettings_log.la) + end + context "when the log is general needs" do context "and the managing organisation is a private registered provider" do before do