Browse Source

add majorrepairs,propcode and infer postcode

pull/83/head
Kat 4 years ago
parent
commit
32dbabbf8b
  1. 1
      Gemfile
  2. 2
      Gemfile.lock
  3. 17
      app/controllers/case_logs_controller.rb
  4. 4
      config/forms/2021_2022.json
  5. 8
      db/migrate/20211108134601_further_core_migrations.rb
  6. 7
      db/schema.rb
  7. 17
      spec/controllers/case_logs_controller_spec.rb
  8. 4
      spec/factories/case_log.rb
  9. 4
      spec/features/case_log_spec.rb
  10. 12
      spec/fixtures/complete_case_log.json
  11. 4
      spec/fixtures/forms/test_form.json

1
Gemfile

@ -29,6 +29,7 @@ gem "discard"
gem "activeadmin" gem "activeadmin"
# Admin charts # Admin charts
gem "chartkick" gem "chartkick"
gem "uk_postcode"
group :development, :test do group :development, :test do
# Call 'byebug' anywhere in the code to stop execution and get a debugger console # Call 'byebug' anywhere in the code to stop execution and get a debugger console

2
Gemfile.lock

@ -358,6 +358,7 @@ GEM
rails (>= 6.0.0) rails (>= 6.0.0)
tzinfo (2.0.4) tzinfo (2.0.4)
concurrent-ruby (~> 1.0) concurrent-ruby (~> 1.0)
uk_postcode (2.1.6)
unicode-display_width (2.1.0) unicode-display_width (2.1.0)
view_component (2.39.0) view_component (2.39.0)
activesupport (>= 5.0.0, < 8.0) activesupport (>= 5.0.0, < 8.0)
@ -417,6 +418,7 @@ DEPENDENCIES
selenium-webdriver selenium-webdriver
simplecov simplecov
tzinfo-data tzinfo-data
uk_postcode
web-console (>= 4.1.0) web-console (>= 4.1.0)
webpacker (~> 5.0) webpacker (~> 5.0)

17
app/controllers/case_logs_controller.rb

@ -58,7 +58,8 @@ class CaseLogsController < ApplicationController
@case_log = CaseLog.find(params[:id]) @case_log = CaseLog.find(params[:id])
@case_log.page = params[:case_log][:page] @case_log.page = params[:case_log][:page]
responses_for_page = responses_for_page(@case_log.page) responses_for_page = responses_for_page(@case_log.page)
if @case_log.update(responses_for_page) && @case_log.has_no_unresolved_soft_errors? inferred_answers = get_inferred_answers(responses_for_page)
if @case_log.update(responses_for_page.merge(inferred_answers)) && @case_log.has_no_unresolved_soft_errors?
redirect_path = get_next_page_path(form, @case_log.page, @case_log) redirect_path = get_next_page_path(form, @case_log.page, @case_log)
redirect_to(send(redirect_path, @case_log)) redirect_to(send(redirect_path, @case_log))
else else
@ -116,6 +117,20 @@ private
end end
end end
def get_inferred_answers(responses_for_page)
result = {}
if responses_for_page["property_postcode"].present?
result["postcode"], result["postcod2"] = get_inferred_postcode(params["case_log"]["property_postcode"])
end
result
end
def get_inferred_postcode(postcode)
require "uk_postcode"
property_postcode = UKPostcode.parse(postcode)
[property_postcode.outcode, property_postcode.incode]
end
def json_api_request? def json_api_request?
API_ACTIONS.include?(request["action"]) && request.format.json? API_ACTIONS.include?(request["action"]) && request.format.json?
end end

4
config/forms/2021_2022.json

@ -1515,7 +1515,7 @@
"header": "", "header": "",
"description": "", "description": "",
"questions": { "questions": {
"property_reference": { "propcode": {
"check_answer_label": "What’s the property reference?", "check_answer_label": "What’s the property reference?",
"header": "What's the property reference?", "header": "What's the property reference?",
"hint_text": "", "hint_text": "",
@ -1564,7 +1564,7 @@
"header": "", "header": "",
"description": "", "description": "",
"questions": { "questions": {
"property_major_repairs": { "majorrepairs": {
"check_answer_label": "Were major repairs carried out during the void period?", "check_answer_label": "Were major repairs carried out during the void period?",
"header": "Were any major repairs completed during the void period?", "header": "Were any major repairs completed during the void period?",
"hint_text": "", "hint_text": "",

8
db/migrate/20211108134601_further_core_migrations.rb

@ -2,10 +2,18 @@ class FurtherCoreMigrations < ActiveRecord::Migration[6.1]
def up def up
remove_column :case_logs, :condition_effects_prefer_not_to_say remove_column :case_logs, :condition_effects_prefer_not_to_say
rename_column :case_logs, :reason_for_leaving_last_settled_home, :reason rename_column :case_logs, :reason_for_leaving_last_settled_home, :reason
rename_column :case_logs, :property_reference, :propcode
rename_column :case_logs, :property_major_repairs, :majorrepairs
add_column :case_logs, :postcode, :string
add_column :case_logs, :postcod2, :string
end end
def down def down
add_column :case_logs, :condition_effects_prefer_not_to_say, :integer add_column :case_logs, :condition_effects_prefer_not_to_say, :integer
rename_column :case_logs, :reason, :reason_for_leaving_last_settled_home rename_column :case_logs, :reason, :reason_for_leaving_last_settled_home
rename_column :case_logs, :propcode, :property_reference
rename_column :case_logs, :majorrepairs, :property_major_repairs
remove_column :case_logs, :postcode
remove_column :case_logs, :postcod2
end end
end end

7
db/schema.rb

@ -77,12 +77,12 @@ ActiveRecord::Schema.define(version: 2021_11_08_143649) do
t.string "previous_postcode" t.string "previous_postcode"
t.string "property_relet" t.string "property_relet"
t.integer "rsnvac" t.integer "rsnvac"
t.string "property_reference" t.string "propcode"
t.integer "unittype_gn" t.integer "unittype_gn"
t.string "property_building_type" t.string "property_building_type"
t.integer "beds" t.integer "beds"
t.string "property_void_date" t.string "property_void_date"
t.string "property_major_repairs" t.string "majorrepairs"
t.string "property_major_repairs_date" t.string "property_major_repairs_date"
t.integer "offered" t.integer "offered"
t.integer "wchair" t.integer "wchair"
@ -145,7 +145,8 @@ ActiveRecord::Schema.define(version: 2021_11_08_143649) do
t.string "needs_type" t.string "needs_type"
t.string "sale_completion_date" t.string "sale_completion_date"
t.string "purchaser_code" t.string "purchaser_code"
t.integer "condition_effects_prefer_not_to_say" t.string "postcode"
t.string "postcod2"
t.index ["discarded_at"], name: "index_case_logs_on_discarded_at" t.index ["discarded_at"], name: "index_case_logs_on_discarded_at"
end end

17
spec/controllers/case_logs_controller_spec.rb

@ -150,6 +150,23 @@ RSpec.describe CaseLogsController, type: :controller do
expect(response).to redirect_to("/case_logs/#{id}/conditional_question_no_page") expect(response).to redirect_to("/case_logs/#{id}/conditional_question_no_page")
end end
end end
context "partition postcode" do
let(:case_log_with_postcode) do
{
property_postcode: "M1 1AE",
page: "property_postcode",
}
end
it "saves full and partial postcodes" do
post :submit_form, params: { id: id, case_log: case_log_with_postcode }
case_log.reload
expect(case_log.property_postcode).to eq("M1 1AE")
expect(case_log.postcode).to eq("M1")
expect(case_log.postcod2).to eq("1AE")
end
end
end end
describe "get_next_page_path" do describe "get_next_page_path" do

4
spec/factories/case_log.rb

@ -4,8 +4,8 @@ FactoryBot.define do
trait :in_progress do trait :in_progress do
status { 1 } status { 1 }
tenant_code { "TH356" } tenant_code { "TH356" }
property_postcode { "SW2 6HI" } property_postcode { "P0 5ST" }
previous_postcode { "P0 5ST" } previous_postcode { "SW2 6HI" }
age1 { "17" } age1 { "17" }
end end
trait :completed do trait :completed do

4
spec/features/case_log_spec.rb

@ -175,8 +175,8 @@ RSpec.describe "Test Features" do
end end
it "displays number answers in inputs if they are already saved" do it "displays number answers in inputs if they are already saved" do
visit("/case_logs/#{id}/previous_postcode") visit("/case_logs/#{id}/property_postcode")
expect(page).to have_field("case-log-previous-postcode-field", with: "P0 5ST") expect(page).to have_field("case-log-property-postcode-field", with: "P0 5ST")
end end
it "displays text answers in inputs if they are already saved" do it "displays text answers in inputs if they are already saved" do

12
spec/fixtures/complete_case_log.json vendored

@ -38,7 +38,7 @@
"sex8": "Prefer not to say", "sex8": "Prefer not to say",
"ecstat8": "Child under 16", "ecstat8": "Child under 16",
"homeless": "Yes - other homelessness", "homeless": "Yes - other homelessness",
"reason": "Other problems with neighbours", "reason": 1,
"underoccupation_benefitcap": "No", "underoccupation_benefitcap": "No",
"leftreg": "No - they left up to 5 years ago", "leftreg": "No - they left up to 5 years ago",
"reservist": "No", "reservist": "No",
@ -55,7 +55,7 @@
"lettype": "Affordable Rent - General Needs", "lettype": "Affordable Rent - General Needs",
"landlord": "This landlord", "landlord": "This landlord",
"property_location": "Barnet", "property_location": "Barnet",
"previous_postcode": "NW1 5TY", "property_postcode": "NW1 5TY",
"property_relet": "No", "property_relet": "No",
"rsnvac": "Relet - tenant abandoned property", "rsnvac": "Relet - tenant abandoned property",
"property_reference": "P9876", "property_reference": "P9876",
@ -82,7 +82,7 @@
"layear": "1 to 2 years", "layear": "1 to 2 years",
"lawaitlist": "Less than 1 year", "lawaitlist": "Less than 1 year",
"previous_la": "Ashford", "previous_la": "Ashford",
"property_postcode": "SE2 6RT", "previous_postcode": "SE2 6RT",
"reasonpref": "Yes", "reasonpref": "Yes",
"reasonable_preference_reason": "dummy", "reasonable_preference_reason": "dummy",
"cbl": "Yes", "cbl": "Yes",
@ -125,6 +125,10 @@
"intermediate_rent_product_name": "", "intermediate_rent_product_name": "",
"needs_type": "", "needs_type": "",
"sale_completion_date": "", "sale_completion_date": "",
"purchaser_code": "" "purchaser_code": "",
"propcode": "123",
"majorrepairs": "yes",
"postcode": "a1",
"postcod2": "w3"
} }
} }

4
spec/fixtures/forms/test_form.json vendored

@ -494,9 +494,9 @@
} }
} }
}, },
"previous_postcode": { "property_postcode": {
"questions": { "questions": {
"previous_postcode": { "property_postcode": {
"check_answer_label": "Postcode of previous accomodation if the household has moved from settled accommodation", "check_answer_label": "Postcode of previous accomodation if the household has moved from settled accommodation",
"header": "Postcode for the previous accommodation", "header": "Postcode for the previous accommodation",
"hint_text": "If the household has moved from settled accommodation immediately prior to being re-housed", "hint_text": "If the household has moved from settled accommodation immediately prior to being re-housed",

Loading…
Cancel
Save