From ed669fa73ea9bfc507a9072dff69b5576dca6e47 Mon Sep 17 00:00:00 2001 From: Kat Date: Wed, 13 Sep 2023 13:09:17 +0100 Subject: [PATCH] Confirm soft validations when importing --- .../imports/lettings_logs_import_service.rb | 5 +- config/forms/2022_2023.json | 135 ++++++++++++++++++ .../validations/soft_validations_spec.rb | 2 +- .../lettings_logs_import_service_spec.rb | 41 +++++- 4 files changed, 178 insertions(+), 5 deletions(-) diff --git a/app/services/imports/lettings_logs_import_service.rb b/app/services/imports/lettings_logs_import_service.rb index 865f8417f..e8ed9a058 100644 --- a/app/services/imports/lettings_logs_import_service.rb +++ b/app/services/imports/lettings_logs_import_service.rb @@ -243,6 +243,9 @@ module Imports attributes["net_income_value_check"] = 0 attributes["carehome_charges_value_check"] = 0 attributes["referral_value_check"] = 0 + attributes["scharge_value_check"] = 0 + attributes["pscharge_value_check"] = 0 + attributes["supcharg_value_check"] = 0 # Sets the log creator owner_id = meta_field_value(xml_doc, "owner-user-id").strip @@ -402,7 +405,7 @@ module Imports end def fields_not_present_in_softwire_data - %w[majorrepairs illness_type_0 tshortfall_known pregnancy_value_check retirement_value_check rent_value_check net_income_value_check major_repairs_date_value_check void_date_value_check carehome_charges_value_check referral_value_check housingneeds_type housingneeds_other created_by uprn_known uprn_confirmed] + %w[majorrepairs illness_type_0 tshortfall_known pregnancy_value_check retirement_value_check rent_value_check net_income_value_check major_repairs_date_value_check void_date_value_check carehome_charges_value_check referral_value_check scharge_value_check pscharge_value_check supcharg_value_check housingneeds_type housingneeds_other created_by uprn_known uprn_confirmed] end def check_status_completed(lettings_log, previous_status) diff --git a/config/forms/2022_2023.json b/config/forms/2022_2023.json index 0fea72f3b..f2bd75c19 100644 --- a/config/forms/2022_2023.json +++ b/config/forms/2022_2023.json @@ -8364,6 +8364,141 @@ }, "interruption_screen_question_ids": ["brent", "startdate", "la", "beds", "rent_type", "needstype"] }, + "scharge_value_check": { + "depends_on": [ + { + "scharge_over_soft_max?": true + } + ], + "title_text": { + "translation": "soft_validations.scharge.over_soft_max_title", + "arguments": [ + { + "key": "scharge", + "label": true, + "i18n_template": "scharge" + } + ] + }, + "informative_text": {}, + "questions": { + "scharge_value_check": { + "check_answer_label": "Service charge confirmation", + "hidden_in_check_answers": { + "depends_on": [ + { + "scharge_value_check": 0 + }, + { + "scharge_value_check": 1 + } + ] + }, + "header": "Are you sure?", + "hint_text": "This is higher than we would expect. Check:", + "type": "interruption_screen", + "answer_options": { + "0": { + "value": "Yes" + }, + "1": { + "value": "No" + } + } + } + }, + "interruption_screen_question_ids": ["period", "needstype", "scharge"] + }, + "pscharge_value_check": { + "depends_on": [ + { + "pscharge_over_soft_max?": true + } + ], + "title_text": { + "translation": "soft_validations.pscharge.over_soft_max_title", + "arguments": [ + { + "key": "pscharge", + "label": true, + "i18n_template": "pscharge" + } + ] + }, + "informative_text": {}, + "questions": { + "pscharge_value_check": { + "check_answer_label": "Personal service charge confirmation", + "hidden_in_check_answers": { + "depends_on": [ + { + "pscharge_value_check": 0 + }, + { + "pscharge_value_check": 1 + } + ] + }, + "header": "Are you sure?", + "hint_text": "This is higher than we would expect. Check:", + "type": "interruption_screen", + "answer_options": { + "0": { + "value": "Yes" + }, + "1": { + "value": "No" + } + } + } + }, + "interruption_screen_question_ids": ["period", "needstype", "pscharge"] + }, + "supcharg_value_check": { + "depends_on": [ + { + "supcharg_over_soft_max?": true + } + ], + "title_text": { + "translation": "soft_validations.supcharg.over_soft_max_title", + "arguments": [ + { + "key": "supcharg", + "label": true, + "i18n_template": "supcharg" + } + ] + }, + "informative_text": {}, + "questions": { + "supcharg_value_check": { + "check_answer_label": "Personal service charge confirmation", + "hidden_in_check_answers": { + "depends_on": [ + { + "supcharg_value_check": 0 + }, + { + "supcharg_value_check": 1 + } + ] + }, + "header": "Are you sure?", + "hint_text": "This is higher than we would expect. Check:", + "type": "interruption_screen", + "answer_options": { + "0": { + "value": "Yes" + }, + "1": { + "value": "No" + } + } + } + }, + "interruption_screen_question_ids": ["period", "needstype", "supcharg"] + }, "outstanding": { "header": "", "description": "", diff --git a/spec/models/validations/soft_validations_spec.rb b/spec/models/validations/soft_validations_spec.rb index b001d5d4d..8f00799ff 100644 --- a/spec/models/validations/soft_validations_spec.rb +++ b/spec/models/validations/soft_validations_spec.rb @@ -375,7 +375,7 @@ RSpec.describe Validations::SoftValidations do expect(record).to be_la_referral_for_general_needs end end - + describe "scharge_over_soft_max?" do context "and organisation is PRP" do before do diff --git a/spec/services/imports/lettings_logs_import_service_spec.rb b/spec/services/imports/lettings_logs_import_service_spec.rb index a9b0b9260..1138fd203 100644 --- a/spec/services/imports/lettings_logs_import_service_spec.rb +++ b/spec/services/imports/lettings_logs_import_service_spec.rb @@ -891,7 +891,7 @@ RSpec.describe Imports::LettingsLogsImportService do context "and pscharge is out of range" do before do lettings_log_xml.at_xpath("//xmlns:Q17").content = "1" - lettings_log_xml.at_xpath("//xmlns:Q18aiii").content = "36" + lettings_log_xml.at_xpath("//xmlns:Q18aiii").content = "701" end it "intercepts the relevant validation error" do @@ -914,7 +914,7 @@ RSpec.describe Imports::LettingsLogsImportService do context "and supcharg is out of range" do before do lettings_log_xml.at_xpath("//xmlns:Q17").content = "1" - lettings_log_xml.at_xpath("//xmlns:Q18aiv").content = "46" + lettings_log_xml.at_xpath("//xmlns:Q18aiv").content = "801" end it "intercepts the relevant validation error" do @@ -937,7 +937,7 @@ RSpec.describe Imports::LettingsLogsImportService do context "and scharge is out of range" do before do lettings_log_xml.at_xpath("//xmlns:Q17").content = "1" - lettings_log_xml.at_xpath("//xmlns:Q18aii").content = "156" + lettings_log_xml.at_xpath("//xmlns:Q18aii").content = "801" end it "intercepts the relevant validation error" do @@ -2068,5 +2068,40 @@ RSpec.describe Imports::LettingsLogsImportService do expect(lettings_log.status).to eq("completed") end end + + context "and the scharge/pscharge/supcharg soft validations are triggered" do + let(:lettings_log_id) { "00d2343e-d5fa-4c89-8400-ec3854b0f2b4" } + let(:lettings_log_file) { open_file(fixture_directory, lettings_log_id) } + let(:lettings_log_xml) { Nokogiri::XML(lettings_log_file) } + + around do |example| + Timecop.freeze(Time.zone.local(2023, 4, 1)) do + Singleton.__init__(FormHandler) + example.run + end + Timecop.return + Singleton.__init__(FormHandler) + end + + before do + lettings_log_xml.at_xpath("//xmlns:AddressLine1").content = "address 1" + lettings_log_xml.at_xpath("//xmlns:TownCity").content = "towncity" + lettings_log_xml.at_xpath("//xmlns:DAY").content = "10" + lettings_log_xml.at_xpath("//xmlns:MONTH").content = "4" + lettings_log_xml.at_xpath("//xmlns:YEAR").content = "2023" + lettings_log_xml.at_xpath("//xmlns:P1Nat").content = "18" + + lettings_log_xml.at_xpath("//xmlns:Q17").content = "1" + lettings_log_xml.at_xpath("//xmlns:Q18aii").content = "800" + lettings_log_xml.at_xpath("//xmlns:Q18aiii").content = "300" + lettings_log_xml.at_xpath("//xmlns:Q18aiv").content = "300" + end + + it "completes the log" do + lettings_log_service.send(:create_log, lettings_log_xml) + lettings_log = LettingsLog.find_by(old_id: lettings_log_id) + expect(lettings_log.status).to eq("completed") + end + end end end