Browse Source

Add checked answers values as true if they are passed back as case log params from the form

pull/40/head
Kat 4 years ago
parent
commit
fa5d633d5e
  1. 14
      app/controllers/case_logs_controller.rb
  2. 14
      db/migrate/20211007160908_add_accessibility_fields.rb
  3. 9
      db/schema.rb
  4. 17
      spec/controllers/case_logs_controller_spec.rb

14
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)

14
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

9
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

17
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

Loading…
Cancel
Save