diff --git a/app/controllers/case_logs_controller.rb b/app/controllers/case_logs_controller.rb index 654129695..82ea9ec1e 100644 --- a/app/controllers/case_logs_controller.rb +++ b/app/controllers/case_logs_controller.rb @@ -20,33 +20,14 @@ class CaseLogsController < ApplicationController render :edit end - def update_checkbox_responses(case_log, questions_for_page) - result = {} - case_log.each do |question, answer| - if question == "previous_page" - result[question] = answer - elsif questions_for_page[question]["type"] == "checkbox" - questions_for_page[question]["answer_options"].keys.reject { |x| x.match(/divider/) }.each do |option| - result[option] = case_log[question].include?(option) ? true : false - end - else - result[question] = answer - end - end - result - end - def submit_form form = Form.new(2021, 2022) @case_log = CaseLog.find(params[:id]) previous_page = params[:case_log][:previous_page] questions_for_page = form.questions_for_page(previous_page) - checkbox_questions_for_page = form.checkbox_questions_for_page(previous_page) - all_question_keys = questions_for_page.keys + checkbox_questions_for_page - params[:case_log] = update_checkbox_responses(params[:case_log], questions_for_page) + responses_for_page = question_responses(questions_for_page) - answers_for_page = page_params(all_question_keys).select { |k, _v| all_question_keys.include?(k) } - if @case_log.update(answers_for_page) + if @case_log.update(responses_for_page) redirect_path = form.next_page_redirect_path(previous_page) redirect_to(send(redirect_path, @case_log)) else @@ -72,7 +53,17 @@ class CaseLogsController < ApplicationController private - def page_params(questions_for_page) - params.require(:case_log).permit(questions_for_page) + def question_responses(questions_for_page) + questions_for_page.each_with_object({}) do |(question_key, question_info), result| + question_params = params["case_log"][question_key] + if question_info["type"] == "checkbox" + question_info["answer_options"].keys.reject { |x| x.match(/divider/) }.each do |option| + result[option] = question_params.include?(option) + end + else + result[question_key] = question_params + end + result + end end end diff --git a/app/models/form.rb b/app/models/form.rb index b1d0a98b0..031c0093c 100644 --- a/app/models/form.rb +++ b/app/models/form.rb @@ -75,12 +75,4 @@ class Form pages_for_subsection(subsection).keys[current_page_idx - 1] end - - def checkbox_questions_for_page(page) - checkbox_questions = questions_for_page(page).select { |_title, question| question["type"] == "checkbox" } - checkbox_questions.flat_map do |title, question| - question["answer_options"].keys.reject { |key, _value| key.match?(/divider/) } - end - end - end diff --git a/db/migrate/20211011115946_rename_economic_status_fields.rb b/db/migrate/20211011115946_rename_economic_status_fields.rb new file mode 100644 index 000000000..661adb872 --- /dev/null +++ b/db/migrate/20211011115946_rename_economic_status_fields.rb @@ -0,0 +1,13 @@ +class RenameEconomicStatusFields < ActiveRecord::Migration[6.1] + def change + change_table :case_logs, bulk: true do |t| + t.rename :person_2_economic, :person_2_economic_status + t.rename :person_3_economic, :person_3_economic_status + t.rename :person_4_economic, :person_4_economic_status + t.rename :person_5_economic, :person_5_economic_status + t.rename :person_6_economic, :person_6_economic_status + t.rename :person_7_economic, :person_7_economic_status + t.rename :person_8_economic, :person_8_economic_status + end + end +end diff --git a/db/schema.rb b/db/schema.rb index 522f645fe..c515bebfb 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2021_10_08_130208) do +ActiveRecord::Schema.define(version: 2021_10_11_115946) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -33,31 +33,31 @@ ActiveRecord::Schema.define(version: 2021_10_08_130208) do t.string "person_2_relationship" t.integer "person_2_age" t.string "person_2_gender" - t.string "person_2_economic" + t.string "person_2_economic_status" t.string "person_3_relationship" t.integer "person_3_age" t.string "person_3_gender" - t.string "person_3_economic" + t.string "person_3_economic_status" t.string "person_4_relationship" t.integer "person_4_age" t.string "person_4_gender" - t.string "person_4_economic" + t.string "person_4_economic_status" t.string "person_5_relationship" t.integer "person_5_age" t.string "person_5_gender" - t.string "person_5_economic" + t.string "person_5_economic_status" t.string "person_6_relationship" t.integer "person_6_age" t.string "person_6_gender" - t.string "person_6_economic" + t.string "person_6_economic_status" t.string "person_7_relationship" t.integer "person_7_age" t.string "person_7_gender" - t.string "person_7_economic" + t.string "person_7_economic_status" t.string "person_8_relationship" t.integer "person_8_age" t.string "person_8_gender" - t.string "person_8_economic" + t.string "person_8_economic_status" t.string "homelessness" t.string "reason_for_leaving_last_settled_home" t.string "benefit_cap_spare_room_subsidy" @@ -109,7 +109,6 @@ ActiveRecord::Schema.define(version: 2021_10_08_130208) do t.string "chr_letting" t.string "cap_letting" t.string "outstanding_rent_or_charges" - t.string "other_reason_for_leaving_last_settled_home" t.boolean "accessibility_requirements_fully_wheelchair_accessible_housing" t.boolean "accessibility_requirements_wheelchair_access_to_essential_rooms" t.boolean "accessibility_requirements_level_access_housing" diff --git a/spec/controllers/case_logs_controller_spec.rb b/spec/controllers/case_logs_controller_spec.rb index 70d2d2c9f..9702dfcce 100644 --- a/spec/controllers/case_logs_controller_spec.rb +++ b/spec/controllers/case_logs_controller_spec.rb @@ -48,11 +48,18 @@ RSpec.describe CaseLogsController, type: :controller do let!(:case_log) { FactoryBot.create(:case_log) } let(:id) { case_log.id } let(:case_log_form_params) do - { "accessibility_requirements" => + { accessibility_requirements: %w[ accessibility_requirements_fully_wheelchair_accessible_housing accessibility_requirements_wheelchair_access_to_essential_rooms accessibility_requirements_level_access_housing], - "previous_page" => "accessibility_requirements" } + previous_page: "accessibility_requirements" } + end + + let(:new_case_log_form_params) do + { + accessibility_requirements: %w[accessibility_requirements_level_access_housing], + previous_page: "accessibility_requirements", + } end it "sets checked items to true" do @@ -67,10 +74,6 @@ RSpec.describe CaseLogsController, type: :controller do it "sets previously submitted items to false when resubmitted with new values" do post :submit_form, params: { id: id, case_log: case_log_form_params } - new_case_log_form_params = { "accessibility_requirements" => - %w[accessibility_requirements_level_access_housing], - "previous_page" => "accessibility_requirements" } - get :submit_form, params: { id: id, case_log: new_case_log_form_params } case_log.reload