Browse Source

Save keys for checkboxes instead of labels

pull/40/head
Kat 4 years ago
parent
commit
e735f9e652
  1. 4
      app/controllers/case_logs_controller.rb
  2. 2
      app/views/form/_checkbox_question.html.erb
  3. 14
      config/forms/2021_2022.json
  4. 19
      spec/controllers/case_logs_controller_spec.rb

4
app/controllers/case_logs_controller.rb

@ -42,8 +42,8 @@ class CaseLogsController < ApplicationController
checkbox_questions = questions_for_page.select { |_title, question| question["type"] == "checkbox" } checkbox_questions = questions_for_page.select { |_title, question| question["type"] == "checkbox" }
checkbox_questions.each do |title, question| checkbox_questions.each do |title, question|
valid_answer_options = question["answer_options"].reject { |key, _value| key.match?(/divider/) } valid_answer_options = question["answer_options"].reject { |key, _value| key.match?(/divider/) }
valid_answer_options.each do |_key, value| valid_answer_options.each do |value, _label|
checked_questions["#{title}_#{value.parameterize(separator: '_')}"] = case_log_params[title].include?(value) ? true : false checked_questions[value] = case_log_params[title].include?(value) ? true : false
end end
end end
checked_questions checked_questions

2
app/views/form/_checkbox_question.html.erb

@ -6,7 +6,7 @@
<% if key.starts_with?("divider") %> <% if key.starts_with?("divider") %>
<%= f.govuk_check_box_divider %> <%= f.govuk_check_box_divider %>
<% else %> <% else %>
<%= f.govuk_check_box question_key, val, label: { text: val } %> <%= f.govuk_check_box question_key, key, label: { text: val } %>
<% end %> <% end %>
<% end %> <% end %>
<% end %> <% end %>

14
config/forms/2021_2022.json

@ -381,15 +381,15 @@
"type": "checkbox", "type": "checkbox",
"check_answer_label": "Disability requirements", "check_answer_label": "Disability requirements",
"answer_options": { "answer_options": {
"0": "Fully wheelchair accessible housing", "accessibility_requirements_fully_wheelchair_accessible_housing": "Fully wheelchair accessible housing",
"1": "Wheelchair access to essential rooms", "accessibility_requirements_wheelchair_access_to_essential_rooms": "Wheelchair access to essential rooms",
"2": "Level access housing", "accessibility_requirements_level_access_housing": "Level access housing",
"3": "Other disability requirements", "accessibility_requirements_other_disability_requirements": "Other disability requirements",
"4": "No disability requirements", "accessibility_requirements_no_disability_requirements": "No disability requirements",
"divider_a": true, "divider_a": true,
"5": "Do not know", "accessibility_requirements_do_not_know": "Do not know",
"divider_b": true, "divider_b": true,
"6": "Prefer not to say" "accessibility_requirements_prefer_not_to_say": "Prefer not to say"
} }
} }
} }

19
spec/controllers/case_logs_controller_spec.rb

@ -47,12 +47,16 @@ RSpec.describe CaseLogsController, type: :controller do
describe "submit_form" do describe "submit_form" do
let!(:case_log) { FactoryBot.create(:case_log) } let!(:case_log) { FactoryBot.create(:case_log) }
let(:id) { case_log.id } let(:id) { case_log.id }
let(:case_log_to_submit) do
{ "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" }
end
it "sets checked items to true" do it "sets checked items to true" do
case_log_to_submit = { "accessibility_requirements" => get :submit_form, params: { id: id, case_log: case_log_to_submit }
["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) 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)
@ -61,17 +65,14 @@ RSpec.describe CaseLogsController, type: :controller do
end end
it "sets previously submitted items to false when resubmitted with new values" do it "sets previously submitted items to false when resubmitted with new values" 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 } post :submit_form, params: { id: id, case_log: case_log_to_submit }
CaseLog.find(id) CaseLog.find(id)
new_case_log_to_submit = { "accessibility_requirements" => new_case_log_to_submit = { "accessibility_requirements" =>
["Level access housing"], %w[accessibility_requirements_level_access_housing],
"previous_page" => "accessibility_requirements" } "previous_page" => "accessibility_requirements" }
post :submit_form, params: { id: id, case_log: new_case_log_to_submit } get :submit_form, params: { id: id, case_log: new_case_log_to_submit }
CaseLog.find(id) CaseLog.find(id)
expect(CaseLog.find(id)["accessibility_requirements_fully_wheelchair_accessible_housing"]).to eq(false) expect(CaseLog.find(id)["accessibility_requirements_fully_wheelchair_accessible_housing"]).to eq(false)

Loading…
Cancel
Save