From fa5d633d5e7fd9a2c78e02ea9ce694cdbbc23aeb Mon Sep 17 00:00:00 2001 From: Kat Date: Thu, 7 Oct 2021 17:12:10 +0100 Subject: [PATCH] Add checked answers values as true if they are passed back as case log params from the form --- app/controllers/case_logs_controller.rb | 14 +++++++++++++- .../20211007160908_add_accessibility_fields.rb | 14 ++++++++++++++ db/schema.rb | 9 ++++++++- spec/controllers/case_logs_controller_spec.rb | 17 +++++++++++++++++ 4 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 db/migrate/20211007160908_add_accessibility_fields.rb diff --git a/app/controllers/case_logs_controller.rb b/app/controllers/case_logs_controller.rb index 45bc05ee4..12eb11418 100644 --- a/app/controllers/case_logs_controller.rb +++ b/app/controllers/case_logs_controller.rb @@ -25,8 +25,10 @@ class CaseLogsController < ApplicationController @case_log = CaseLog.find(params[:id]) previous_page = params[:case_log][:previous_page] questions_for_page = form.questions_for_page(previous_page).keys + checked_answers = get_checked_answers(questions_for_page, params[:case_log]) + answers_for_page = page_params(questions_for_page).select { |k, _v| questions_for_page.include?(k) } - if @case_log.update(answers_for_page) + if @case_log.update(checked_answers) && @case_log.update(answers_for_page) redirect_path = form.next_page_redirect_path(previous_page) redirect_to(send(redirect_path, @case_log)) else @@ -35,6 +37,16 @@ class CaseLogsController < ApplicationController end end + def get_checked_answers(questions_for_page, case_log_params) + checked_questions = questions_for_page.map do |question| + if case_log_params[question].is_a?(Array) + case_log_params[question].reject(&:empty?).map { |answer| { "#{question}_#{answer.parameterize(separator: '_')}" => true } } + end + end + checked_questions.flatten.reject(&:nil?).reduce({}, :merge) + end + + def check_answers @case_log = CaseLog.find(params[:case_log_id]) form = Form.new(2021, 2022) diff --git a/db/migrate/20211007160908_add_accessibility_fields.rb b/db/migrate/20211007160908_add_accessibility_fields.rb new file mode 100644 index 000000000..e1976fe2d --- /dev/null +++ b/db/migrate/20211007160908_add_accessibility_fields.rb @@ -0,0 +1,14 @@ +class AddAccessibilityFields < ActiveRecord::Migration[6.1] + def change + change_table :case_logs, bulk: true do |t| + t.column :accessibility_requirements_fully_wheelchair_accessible_housing, :boolean + t.column :accessibility_requirements_wheelchair_access_to_essential_rooms, :boolean + t.column :accessibility_requirements_level_access_housing, :boolean + t.column :accessibility_requirements_other_disability_requirements, :boolean + t.column :accessibility_requirements_no_disability_requirements, :boolean + t.column :accessibility_requirements_do_not_know, :boolean + t.column :accessibility_requirements_prefer_not_to_say, :boolean + end + end +end + diff --git a/db/schema.rb b/db/schema.rb index e3215a238..ddc121dc7 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_09_24_143031) do +ActiveRecord::Schema.define(version: 2021_10_07_160908) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -108,6 +108,13 @@ ActiveRecord::Schema.define(version: 2021_09_24_143031) do t.string "cbl_letting" t.string "chr_letting" t.string "cap_letting" + t.boolean "accessibility_requirements_fully_wheelchair_accessible_housing" + t.boolean "accessibility_requirements_wheelchair_access_to_essential_rooms" + t.boolean "accessibility_requirements_level_access_housing" + t.boolean "accessibility_requirements_other_disability_requirements" + t.boolean "accessibility_requirements_no_disability_requirements" + t.boolean "accessibility_requirements_do_not_know" + t.boolean "accessibility_requirements_prefer_not_to_say" end end diff --git a/spec/controllers/case_logs_controller_spec.rb b/spec/controllers/case_logs_controller_spec.rb index 5526f8cb3..2240272cb 100644 --- a/spec/controllers/case_logs_controller_spec.rb +++ b/spec/controllers/case_logs_controller_spec.rb @@ -43,4 +43,21 @@ RSpec.describe CaseLogsController, type: :controller do end end end + + describe "submit_form" do + let!(:case_log) { FactoryBot.create(:case_log) } + let(:id) { case_log.id } + + it "returns a success response" do + case_log_to_submit = { "accessibility_requirements" => + ["Fully wheelchair accessible housing", "Wheelchair access to essential rooms", "Level access housing"], + "previous_page" => "accessibility_requirements" } + post :submit_form, params: { id: id, case_log: case_log_to_submit } + CaseLog.find(id) + + expect(CaseLog.find(id)["accessibility_requirements_fully_wheelchair_accessible_housing"]).to eq(true) + expect(CaseLog.find(id)["accessibility_requirements_fully_wheelchair_accessible_housing"]).to eq(true) + expect(CaseLog.find(id)["accessibility_requirements_fully_wheelchair_accessible_housing"]).to eq(true) + end + end end