Browse Source

Update housing benefits fields

pull/83/head
Kat 4 years ago
parent
commit
c6a1be61c6
  1. 2
      app/admin/case_logs.rb
  2. 12
      app/constants/db_enums.rb
  3. 2
      app/models/case_log.rb
  4. 8
      app/validations/financial_validations.rb
  5. 11
      config/forms/2021_2022.json
  6. 6
      db/migrate/20211108134601_further_core_migrations.rb
  7. 6
      db/migrate/20211108143649_change_reason_type.rb
  8. 6
      db/schema.rb
  9. 18
      docs/api/DLUHC-CORE-Data.v1.json
  10. 2
      spec/features/case_log_spec.rb
  11. 7
      spec/fixtures/complete_case_log.json
  12. 2
      spec/fixtures/forms/test_form.json
  13. 2
      spec/helpers/check_answers_helper_spec.rb
  14. 2
      spec/helpers/tasklist_helper_spec.rb
  15. 8
      spec/models/case_log_spec.rb
  16. 2
      spec/models/form_spec.rb

2
app/admin/case_logs.rb

@ -2,7 +2,7 @@ ActiveAdmin.register CaseLog do
# See permitted parameters documentation: # See permitted parameters documentation:
# https://github.com/activeadmin/activeadmin/blob/master/docs/2-resource-customization.md#setting-up-strong-parameters # https://github.com/activeadmin/activeadmin/blob/master/docs/2-resource-customization.md#setting-up-strong-parameters
permit_params do permit_params do
permitted = %i[status tenant_code age1 sex1 tenant_ethnic_group tenant_nationality previous_housing_situation armed_forces ecstat1 hhmemb relat2 age2 sex2 ecstat2 relat3 age3 sex3 ecstat3 relat4 age4 sex4 ecstat4 relat5 age5 sex5 ecstat5 relat6 age6 sex6 ecstat6 relat7 age7 person_7_gender ecstat7 relat8 age8 sex8 ecstat8 homelessness reason benefit_cap_spare_room_subsidy armed_forces_active armed_forces_injured armed_forces_partner medical_conditions pregnancy accessibility_requirements condition_effects tenancy_code tenancy_start_date starter_tenancy fixed_term_tenancy tenancy_type letting_type letting_provider la previous_postcode property_relet property_vacancy_reason property_reference property_unit_type property_building_type property_number_of_bedrooms property_void_date property_major_repairs property_major_repairs_date property_number_of_times_relet property_wheelchair_accessible net_income net_income_frequency net_income_uc_proportion housing_benefit rent_frequency basic_rent service_charge personal_service_charge support_charge total_charge outstanding_amount time_lived_in_la time_on_la_waiting_list prevloc property_postcode reasonable_preference reasonable_preference_reason cbl_letting chr_letting cap_letting outstanding_rent_or_charges other_reason accessibility_requirements_fully_wheelchair_accessible_housing accessibility_requirements_wheelchair_access_to_essential_rooms accessibility_requirements_level_access_housing accessibility_requirements_other_disability_requirements accessibility_requirements_no_disability_requirements accessibility_requirements_do_not_know accessibility_requirements_prefer_not_to_say condition_effects_vision condition_effects_hearing condition_effects_mobility condition_effects_dexterity condition_effects_stamina condition_effects_learning condition_effects_memory condition_effects_mental_health condition_effects_social_or_behavioral condition_effects_other condition_effects_prefer_not_to_say reasonable_preference_reason_homeless reasonable_preference_reason_unsatisfactory_housing reasonable_preference_reason_medical_grounds reasonable_preference_reason_avoid_hardship reasonable_preference_reason_do_not_know other_tenancy_type override_net_income_validation net_income_known] permitted = %i[status tenant_code age1 sex1 tenant_ethnic_group tenant_nationality previous_housing_situation armed_forces ecstat1 hhmemb relat2 age2 sex2 ecstat2 relat3 age3 sex3 ecstat3 relat4 age4 sex4 ecstat4 relat5 age5 sex5 ecstat5 relat6 age6 sex6 ecstat6 relat7 age7 person_7_gender ecstat7 relat8 age8 sex8 ecstat8 homelessness reason benefit_cap_spare_room_subsidy armed_forces_active armed_forces_injured armed_forces_partner medical_conditions pregnancy accessibility_requirements condition_effects tenancy_code tenancy_start_date starter_tenancy fixed_term_tenancy tenancy_type letting_type letting_provider la previous_postcode property_relet property_vacancy_reason property_reference property_unit_type property_building_type property_number_of_bedrooms property_void_date property_major_repairs property_major_repairs_date property_number_of_times_relet property_wheelchair_accessible net_income net_income_frequency net_income_uc_proportion hb rent_frequency basic_rent service_charge personal_service_charge support_charge total_charge tshortfall time_lived_in_la time_on_la_waiting_list prevloc property_postcode reasonable_preference reasonable_preference_reason cbl_letting chr_letting cap_letting hbrentshortfall other_reason accessibility_requirements_fully_wheelchair_accessible_housing accessibility_requirements_wheelchair_access_to_essential_rooms accessibility_requirements_level_access_housing accessibility_requirements_other_disability_requirements accessibility_requirements_no_disability_requirements accessibility_requirements_do_not_know accessibility_requirements_prefer_not_to_say condition_effects_vision condition_effects_hearing condition_effects_mobility condition_effects_dexterity condition_effects_stamina condition_effects_learning condition_effects_memory condition_effects_mental_health condition_effects_social_or_behavioral condition_effects_other condition_effects_prefer_not_to_say reasonable_preference_reason_homeless reasonable_preference_reason_unsatisfactory_housing reasonable_preference_reason_medical_grounds reasonable_preference_reason_avoid_hardship reasonable_preference_reason_do_not_know other_tenancy_type override_net_income_validation net_income_known]
permitted permitted
end end

12
app/constants/db_enums.rb

@ -260,6 +260,18 @@ module DbEnums
} }
end end
def self.housing_benefit
{
"Housing Benefit, but not Universal Credit" => 1,
"Universal Credit with housing element, but not Housing Benefit" => 6,
"Universal Credit without housing element and no Housing Benefit" => 7,
"Universal Credit and Housing Benefit" => 8,
"Not Housing Benefit or Universal Credit" => 9,
"Do not know" => 3,
"Prefer not to say" => 100,
}
end
def self.reason def self.reason
{ {
"Permanently decanted from another property owned by this landlord" => 1, "Permanently decanted from another property owned by this landlord" => 1,

2
app/models/case_log.rb

@ -105,6 +105,8 @@ class CaseLog < ApplicationRecord
enum la: DbEnums.la, _suffix: true enum la: DbEnums.la, _suffix: true
enum prevloc: DbEnums.la, _suffix: true enum prevloc: DbEnums.la, _suffix: true
enum majorrepairs: DbEnums.polar, _suffix: true enum majorrepairs: DbEnums.polar, _suffix: true
enum hb: DbEnums.housing_benefit, _suffix: true
enum hbrentshortfall: DbEnums.polar_with_unknown, _suffix: true
AUTOGENERATED_FIELDS = %w[id status created_at updated_at discarded_at].freeze AUTOGENERATED_FIELDS = %w[id status created_at updated_at discarded_at].freeze

8
app/validations/financial_validations.rb

@ -2,11 +2,11 @@ module FinancialValidations
# Validations methods need to be called 'validate_<page_name>' to run on model save # Validations methods need to be called 'validate_<page_name>' to run on model save
# or 'validate_' to run on submit as well # or 'validate_' to run on submit as well
def validate_outstanding_rent_amount(record) def validate_outstanding_rent_amount(record)
if record.outstanding_rent_or_charges == "Yes" && record.outstanding_amount.blank? if record.hbrentshortfall == "Yes" && record.tshortfall.blank?
record.errors.add :outstanding_amount, "You must answer the oustanding amout question if you have outstanding rent or charges." record.errors.add :tshortfall, "You must answer the oustanding amout question if you have outstanding rent or charges."
end end
if record.outstanding_rent_or_charges == "No" && record.outstanding_amount.present? if record.hbrentshortfall == "No" && record.tshortfall.present?
record.errors.add :outstanding_amount, "You must not answer the oustanding amout question if you don't have outstanding rent or charges." record.errors.add :tshortfall, "You must not answer the oustanding amout question if you don't have outstanding rent or charges."
end end
end end

11
config/forms/2021_2022.json

@ -1700,7 +1700,7 @@
"header": "", "header": "",
"description": "", "description": "",
"questions": { "questions": {
"housing_benefit": { "hb": {
"check_answer_label": "Universal Credit & Housing Benefit", "check_answer_label": "Universal Credit & Housing Benefit",
"header": "Is the tenant likely to be in receipt of any of these housing-related benefits?", "header": "Is the tenant likely to be in receipt of any of these housing-related benefits?",
"hint_text": "", "hint_text": "",
@ -1813,20 +1813,21 @@
"step": 1, "step": 1,
"readonly": true "readonly": true
}, },
"outstanding_rent_or_charges": { "hbrentshortfall": {
"check_answer_label": "After housing benefit and/or housing element of UC payment is received, will there be an outstanding amount for basic rent and/or benefit eligible charges?", "check_answer_label": "After housing benefit and/or housing element of UC payment is received, will there be an outstanding amount for basic rent and/or benefit eligible charges?",
"header": "After housing benefit and/or housing element of UC payment is received, will there be an outstanding amount for basic rent and/or benefit eligible charges?", "header": "After housing benefit and/or housing element of UC payment is received, will there be an outstanding amount for basic rent and/or benefit eligible charges?",
"hint_text": "", "hint_text": "",
"type": "radio", "type": "radio",
"answer_options": { "answer_options": {
"0": "Yes", "0": "Yes",
"1": "No" "1": "No",
"2": "Do not know"
}, },
"conditional_for": { "conditional_for": {
"outstanding_amount": ["Yes"] "tshortfall": ["Yes"]
} }
}, },
"outstanding_amount": { "tshortfall": {
"check_answer_label": "Outstanding amount", "check_answer_label": "Outstanding amount",
"header": "What do you expect the amount to be?", "header": "What do you expect the amount to be?",
"hint_text": "If the amount is unknown you can estimate", "hint_text": "If the amount is unknown you can estimate",

6
db/migrate/20211108134601_further_core_migrations.rb

@ -6,6 +6,9 @@ class FurtherCoreMigrations < ActiveRecord::Migration[6.1]
rename_column :case_logs, :property_major_repairs, :majorrepairs rename_column :case_logs, :property_major_repairs, :majorrepairs
rename_column :case_logs, :property_location, :la rename_column :case_logs, :property_location, :la
rename_column :case_logs, :previous_la, :prevloc rename_column :case_logs, :previous_la, :prevloc
rename_column :case_logs, :housing_benefit, :hb
rename_column :case_logs, :outstanding_rent_or_charges, :hbrentshortfall
rename_column :case_logs, :outstanding_amount, :tshortfall
add_column :case_logs, :postcode, :string add_column :case_logs, :postcode, :string
add_column :case_logs, :postcod2, :string add_column :case_logs, :postcod2, :string
end end
@ -17,6 +20,9 @@ class FurtherCoreMigrations < ActiveRecord::Migration[6.1]
rename_column :case_logs, :majorrepairs, :property_major_repairs rename_column :case_logs, :majorrepairs, :property_major_repairs
rename_column :case_logs, :la, :property_location rename_column :case_logs, :la, :property_location
rename_column :case_logs, :prevloc, :previous_la rename_column :case_logs, :prevloc, :previous_la
rename_column :case_logs, :hb, :housing_benefit
rename_column :case_logs, :hbrentshortfall, :outstanding_rent_or_charges
rename_column :case_logs, :tshortfall, :outstanding_amount
remove_column :case_logs, :postcode remove_column :case_logs, :postcode
remove_column :case_logs, :postcod2 remove_column :case_logs, :postcod2
end end

6
db/migrate/20211108143649_change_reason_type.rb

@ -3,6 +3,9 @@ class ChangeReasonType < ActiveRecord::Migration[6.1]
change_table :case_logs, bulk: true do |t| change_table :case_logs, bulk: true do |t|
t.change :reason, "integer USING reason::integer" t.change :reason, "integer USING reason::integer"
t.change :majorrepairs, "integer USING majorrepairs::integer" t.change :majorrepairs, "integer USING majorrepairs::integer"
t.change :hb, "integer USING hb::integer"
t.change :hbrentshortfall, "integer USING hbrentshortfall::integer"
t.change :tshortfall, "integer USING tshortfall::integer"
end end
end end
@ -10,6 +13,9 @@ class ChangeReasonType < ActiveRecord::Migration[6.1]
change_table :case_logs, bulk: true do |t| change_table :case_logs, bulk: true do |t|
t.change :reason, :string t.change :reason, :string
t.change :majorrepairs, :string t.change :majorrepairs, :string
t.change :hb, :string
t.change :hbrentshortfall, :string
t.change :tshortfall, :string
end end
end end
end end

6
db/schema.rb

@ -89,14 +89,14 @@ ActiveRecord::Schema.define(version: 2021_11_08_143649) do
t.integer "earnings" t.integer "earnings"
t.integer "incfreq" t.integer "incfreq"
t.integer "benefits" t.integer "benefits"
t.string "housing_benefit" t.integer "hb"
t.integer "period" t.integer "period"
t.integer "brent" t.integer "brent"
t.integer "scharge" t.integer "scharge"
t.integer "pscharge" t.integer "pscharge"
t.integer "supcharg" t.integer "supcharg"
t.integer "tcharge" t.integer "tcharge"
t.string "outstanding_amount" t.integer "tshortfall"
t.integer "layear" t.integer "layear"
t.integer "lawaitlist" t.integer "lawaitlist"
t.string "prevloc" t.string "prevloc"
@ -106,7 +106,7 @@ ActiveRecord::Schema.define(version: 2021_11_08_143649) do
t.integer "cbl" t.integer "cbl"
t.integer "chr" t.integer "chr"
t.integer "cap" t.integer "cap"
t.string "outstanding_rent_or_charges" t.integer "hbrentshortfall"
t.string "other_reason_for_leaving_last_settled_home" t.string "other_reason_for_leaving_last_settled_home"
t.integer "housingneeds_a" t.integer "housingneeds_a"
t.integer "housingneeds_b" t.integer "housingneeds_b"

18
docs/api/DLUHC-CORE-Data.v1.json

@ -325,14 +325,14 @@
"earnings": 1000, "earnings": 1000,
"incfreq": "Monthly", "incfreq": "Monthly",
"benefits": "Some", "benefits": "Some",
"housing_benefit": "Universal Credit with housing element, but not Housing Benefit", "hb": "Universal Credit with housing element, but not Housing Benefit",
"period": "Weekly", "period": "Weekly",
"brent": 200, "brent": 200,
"scharge": 50, "scharge": 50,
"pscharge": 40, "pscharge": 40,
"supcharg": 35, "supcharg": 35,
"tcharge": 325, "tcharge": 325,
"outstanding_amount": "Yes", "tshortfall": "Yes",
"layear": "1 to 2 years", "layear": "1 to 2 years",
"lawaitlist": "Less than 1 year", "lawaitlist": "Less than 1 year",
"prevloc": "Ashford", "prevloc": "Ashford",
@ -342,7 +342,7 @@
"cbl": true, "cbl": true,
"chr": false, "chr": false,
"cap": false, "cap": false,
"outstanding_rent_or_charges": 25, "hbrentshortfall": "Yes",
"other_reason_for_leaving_last_settled_home": "Other reason", "other_reason_for_leaving_last_settled_home": "Other reason",
"housingneeds_a": true, "housingneeds_a": true,
"housingneeds_b": false, "housingneeds_b": false,
@ -902,7 +902,7 @@
"minLength": 1, "minLength": 1,
"enum": ["All", "Some", "None", "Do not know"] "enum": ["All", "Some", "None", "Do not know"]
}, },
"housing_benefit": { "hb": {
"type": "string", "type": "string",
"minLength": 1 "minLength": 1
}, },
@ -925,7 +925,7 @@
"tcharge": { "tcharge": {
"type": "number" "type": "number"
}, },
"outstanding_amount": { "tshortfall": {
"type": "string", "type": "string",
"minLength": 1 "minLength": 1
}, },
@ -962,7 +962,7 @@
"cap": { "cap": {
"type": "boolean" "type": "boolean"
}, },
"outstanding_rent_or_charges": { "hbrentshortfall": {
"type": "number" "type": "number"
}, },
"other_reason_for_leaving_last_settled_home": { "other_reason_for_leaving_last_settled_home": {
@ -1114,14 +1114,14 @@
"earnings", "earnings",
"incfreq", "incfreq",
"benefits", "benefits",
"housing_benefit", "hb",
"period", "period",
"brent", "brent",
"scharge", "scharge",
"pscharge", "pscharge",
"supcharg", "supcharg",
"tcharge", "tcharge",
"outstanding_amount", "tshortfall",
"layear", "layear",
"lawaitlist", "lawaitlist",
"prevloc", "prevloc",
@ -1131,7 +1131,7 @@
"cbl", "cbl",
"chr", "chr",
"cap", "cap",
"outstanding_rent_or_charges", "hbrentshortfall",
"other_reason_for_leaving_last_settled_home", "other_reason_for_leaving_last_settled_home",
"housingneeds_a", "housingneeds_a",
"housingneeds_b", "housingneeds_b",

2
spec/features/case_log_spec.rb

@ -25,7 +25,7 @@ RSpec.describe "Test Features" do
click_button("Save and continue") click_button("Save and continue")
choose("case-log-benefits-all-field") choose("case-log-benefits-all-field")
click_button("Save and continue") click_button("Save and continue")
choose("case-log-housing-benefit-housing-benefit-but-not-universal-credit-field") choose("case-log-hb-housing-benefit-but-not-universal-credit-field")
click_button("Save and continue") click_button("Save and continue")
end end

7
spec/fixtures/complete_case_log.json vendored

@ -71,7 +71,7 @@
"earnings": 0, "earnings": 0,
"incfreq": null, "incfreq": null,
"benefits": "Some", "benefits": "Some",
"housing_benefit": "Universal Credit with housing element, but not Housing Benefit", "hb": "Universal Credit with housing element, but not Housing Benefit",
"period": "Fortnightly", "period": "Fortnightly",
"brent": 200, "brent": 200,
"scharge": 50, "scharge": 50,
@ -88,7 +88,8 @@
"cbl": "Yes", "cbl": "Yes",
"chr": "Yes", "chr": "Yes",
"cap": "No", "cap": "No",
"outstanding_rent_or_charges": 25, "hbrentshortfall": "Yes",
"tshortfall": 12,
"other_reason_for_leaving_last_settled_home": null, "other_reason_for_leaving_last_settled_home": null,
"housingneeds_a": "Yes", "housingneeds_a": "Yes",
"housingneeds_b": "No", "housingneeds_b": "No",
@ -127,7 +128,7 @@
"sale_completion_date": "", "sale_completion_date": "",
"purchaser_code": "", "purchaser_code": "",
"propcode": "123", "propcode": "123",
"majorrepairs": "yes", "majorrepairs": "Yes",
"postcode": "a1", "postcode": "a1",
"postcod2": "w3" "postcod2": "w3"
} }

2
spec/fixtures/forms/test_form.json vendored

@ -348,7 +348,7 @@
}, },
"housing_benefit": { "housing_benefit": {
"questions": { "questions": {
"housing_benefit": { "hb": {
"check_answer_label": "Universal Credit & Housing Benefit", "check_answer_label": "Universal Credit & Housing Benefit",
"header": "Is the tenant likely to be in receipt of any of these housing-related benefits?", "header": "Is the tenant likely to be in receipt of any of these housing-related benefits?",
"type": "radio", "type": "radio",

2
spec/helpers/check_answers_helper_spec.rb

@ -127,7 +127,7 @@ RSpec.describe CheckAnswersHelper do
it "returns total questions" do it "returns total questions" do
result = total_questions(subsection, case_log, form) result = total_questions(subsection, case_log, form)
expect(result.class).to eq(Hash) expect(result.class).to eq(Hash)
expected_keys = %w[earnings incfreq benefits housing_benefit] expected_keys = %w[earnings incfreq benefits hb]
expect(result.keys).to eq(expected_keys) expect(result.keys).to eq(expected_keys)
end end

2
spec/helpers/tasklist_helper_spec.rb

@ -33,7 +33,7 @@ RSpec.describe TasklistHelper do
case_log["earnings"] = "value" case_log["earnings"] = "value"
case_log["incfreq"] = "Weekly" case_log["incfreq"] = "Weekly"
case_log["benefits"] = "All" case_log["benefits"] = "All"
case_log["housing_benefit"] = "Do not know" case_log["hb"] = "Do not know"
status = get_subsection_status("income_and_benefits", case_log, income_and_benefits_questions) status = get_subsection_status("income_and_benefits", case_log, income_and_benefits_questions)
expect(status).to eq(:completed) expect(status).to eq(:completed)

8
spec/models/case_log_spec.rb

@ -139,15 +139,15 @@ RSpec.describe Form, type: :model do
context "outstanding rent or charges validation" do context "outstanding rent or charges validation" do
it "must be anwered if answered yes to outstanding rent or charges" do it "must be anwered if answered yes to outstanding rent or charges" do
expect { expect {
CaseLog.create!(outstanding_rent_or_charges: "Yes", CaseLog.create!(hbrentshortfall: "Yes",
outstanding_amount: nil) tshortfall: nil)
}.to raise_error(ActiveRecord::RecordInvalid) }.to raise_error(ActiveRecord::RecordInvalid)
end end
it "must be not be anwered if answered no to outstanding rent or charges" do it "must be not be anwered if answered no to outstanding rent or charges" do
expect { expect {
CaseLog.create!(outstanding_rent_or_charges: "No", CaseLog.create!(hbrentshortfall: "No",
outstanding_amount: 99) tshortfall: 99)
}.to raise_error(ActiveRecord::RecordInvalid) }.to raise_error(ActiveRecord::RecordInvalid)
end end
end end

2
spec/models/form_spec.rb

@ -39,7 +39,7 @@ RSpec.describe Form, type: :model do
it "returns all questions for subsection" do it "returns all questions for subsection" do
result = form.questions_for_subsection(subsection) result = form.questions_for_subsection(subsection)
expect(result.length).to eq(4) expect(result.length).to eq(4)
expect(result.keys).to eq(%w[earnings incfreq benefits housing_benefit]) expect(result.keys).to eq(%w[earnings incfreq benefits hb])
end end
end end
end end

Loading…
Cancel
Save