From 563bfe1d95ed09a2eb4962dd507bca0e4fc967e2 Mon Sep 17 00:00:00 2001 From: kosiakkatrina <54268893+kosiakkatrina@users.noreply.github.com> Date: Thu, 4 Aug 2022 16:06:39 +0100 Subject: [PATCH] Cldc 1424 display postcode question (#813) * Reset wchair when needstype changes from supported housing to not supported housing Co-authored-by: James Rose * remove location_id if scheme needstype changes to general needs * only hide postcode known question from check your answers if it's answered Co-authored-by: James Rose --- app/models/case_log.rb | 4 +++- config/forms/2021_2022.json | 27 +++++++++++++++++++++++---- config/forms/2022_2023.json | 9 ++++++++- spec/models/case_log_spec.rb | 30 ++++++++++++++++++++++++++++++ 4 files changed, 64 insertions(+), 6 deletions(-) diff --git a/app/models/case_log.rb b/app/models/case_log.rb index 0e9d550e0..9b703a510 100644 --- a/app/models/case_log.rb +++ b/app/models/case_log.rb @@ -536,7 +536,9 @@ private dependent_questions = { waityear: [{ key: :renewal, value: 0 }], homeless: [{ key: :renewal, value: 0 }], referral: [{ key: :renewal, value: 0 }], - underoccupation_benefitcap: [{ key: :renewal, value: 0 }] } + underoccupation_benefitcap: [{ key: :renewal, value: 0 }], + wchair: [{ key: :needstype, value: 1 }], + location_id: [{ key: :needstype, value: 1 }] } dependent_questions.each do |dependent, conditions| condition_key = conditions.first[:key] diff --git a/config/forms/2021_2022.json b/config/forms/2021_2022.json index 7765ce9ba..a81f08b9f 100644 --- a/config/forms/2021_2022.json +++ b/config/forms/2021_2022.json @@ -34,7 +34,14 @@ "conditional_for": { "postcode_full": [1] }, - "hidden_in_check_answers": true + "hidden_in_check_answers": { + "depends_on": [{ + "postcode_known": 0 + }, + { + "postcode_known": 1 + }] + } }, "postcode_full": { "check_answer_label": "Postcode", @@ -1122,7 +1129,11 @@ } }, "females_in_soft_age_range_in_pregnant_household_lead_hhmemb_value_check": { - "depends_on": [{ "female_in_pregnant_household_in_soft_validation_range?": true }], + "depends_on": [ + { + "female_in_pregnant_household_in_soft_validation_range?": true + } + ], "title_text": { "translation": "soft_validations.pregnancy.title", "arguments": [ @@ -1248,7 +1259,11 @@ } }, "females_in_soft_age_range_in_pregnant_household_lead_age_value_check": { - "depends_on": [{ "female_in_pregnant_household_in_soft_validation_range?": true }], + "depends_on": [ + { + "female_in_pregnant_household_in_soft_validation_range?": true + } + ], "title_text": { "translation": "soft_validations.pregnancy.title", "arguments": [ @@ -1356,7 +1371,11 @@ } }, "females_in_soft_age_range_in_pregnant_household_lead_value_check": { - "depends_on": [{ "female_in_pregnant_household_in_soft_validation_range?": true }], + "depends_on": [ + { + "female_in_pregnant_household_in_soft_validation_range?": true + } + ], "title_text": { "translation": "soft_validations.pregnancy.title", "arguments": [ diff --git a/config/forms/2022_2023.json b/config/forms/2022_2023.json index 3890b1dbf..d7c903b25 100644 --- a/config/forms/2022_2023.json +++ b/config/forms/2022_2023.json @@ -34,7 +34,14 @@ "conditional_for": { "postcode_full": [1] }, - "hidden_in_check_answers": true + "hidden_in_check_answers": { + "depends_on": [{ + "postcode_known": 0 + }, + { + "postcode_known": 1 + }] + } }, "postcode_full": { "check_answer_label": "Postcode", diff --git a/spec/models/case_log_spec.rb b/spec/models/case_log_spec.rb index 712e1eddf..9520feffe 100644 --- a/spec/models/case_log_spec.rb +++ b/spec/models/case_log_spec.rb @@ -1842,6 +1842,36 @@ RSpec.describe CaseLog do end end + context "when it changes from a supported housing to not a supported housing" do + let(:location) { FactoryBot.create(:location, mobility_type: "A", postcode: "SW1P 4DG") } + let(:case_log) { FactoryBot.create(:case_log, location:) } + + it "resets inferred wchair value" do + case_log.update!({ needstype: 2 }) + + record_from_db = ActiveRecord::Base.connection.execute("select wchair from case_logs where id=#{case_log.id}").to_a[0] + expect(record_from_db["wchair"]).to eq(2) + expect(case_log["wchair"]).to eq(2) + + case_log.update!({ needstype: 1 }) + record_from_db = ActiveRecord::Base.connection.execute("select needstype from case_logs where id=#{case_log.id}").to_a[0] + expect(record_from_db["wchair"]).to eq(nil) + expect(case_log["wchair"]).to eq(nil) + end + + it "resets location" do + case_log.update!({ needstype: 2 }) + + record_from_db = ActiveRecord::Base.connection.execute("select location_id from case_logs where id=#{case_log.id}").to_a[0] + expect(record_from_db["location_id"]).to eq(location.id) + expect(case_log["location_id"]).to eq(location.id) + case_log.update!({ needstype: 1 }) + record_from_db = ActiveRecord::Base.connection.execute("select location_id from case_logs where id=#{case_log.id}").to_a[0] + expect(record_from_db["location_id"]).to eq(nil) + expect(case_log["location_id"]).to eq(nil) + end + end + context "when it is not a renewal" do let(:case_log) { FactoryBot.create(:case_log) }