diff --git a/app/models/validations/household_validations.rb b/app/models/validations/household_validations.rb index 710332d8c..2487c9ca1 100644 --- a/app/models/validations/household_validations.rb +++ b/app/models/validations/household_validations.rb @@ -65,7 +65,7 @@ module Validations::HouseholdValidations if all_options.count("Yes") > 1 mobility_accessibility_options = [record.housingneeds_a, record.housingneeds_b, record.housingneeds_c] unless all_options.count("Yes") == 2 && record.housingneeds_f == "Yes" && mobility_accessibility_options.any? { |x| x == "Yes" } - record.errors.add :housingneeds_a, I18n.t("validations.household.housingneeds_a.one_or_two_choices") + record.errors.add :accessibility_requirements, I18n.t("validations.household.housingneeds_a.one_or_two_choices") end end end diff --git a/app/views/form/_checkbox_question.html.erb b/app/views/form/_checkbox_question.html.erb index 4ac23267b..444b0b58f 100644 --- a/app/views/form/_checkbox_question.html.erb +++ b/app/views/form/_checkbox_question.html.erb @@ -4,14 +4,17 @@ caption: caption(caption_text, page_header, conditional), legend: legend(question, page_header, conditional), hint: { text: question.hint_text&.html_safe } do %> + <% after_divider = false %> <% question.answer_options.map do |key, val| %> <% if key.starts_with?("divider") %> - <%= f.govuk_check_box_divider %> + <% after_divider = true %> + <%= f.govuk_check_box_divider %> <% else %> <%= f.govuk_check_box question.id, key, label: { text: val }, checked: @case_log[key] == "Yes", + exclusive: after_divider, **stimulus_html_attributes(question) %> <% end %> diff --git a/spec/features/form/checkboxes_spec.rb b/spec/features/form/checkboxes_spec.rb new file mode 100644 index 000000000..60ce22f14 --- /dev/null +++ b/spec/features/form/checkboxes_spec.rb @@ -0,0 +1,41 @@ +require "rails_helper" +require_relative "helpers" +require_relative "../../request_helper" + +RSpec.describe "Checkboxes" do + include Helpers + let(:user) { FactoryBot.create(:user) } + let(:case_log) do + FactoryBot.create( + :case_log, + :in_progress, + owning_organisation: user.organisation, + managing_organisation: user.organisation, + ) + end + let(:id) { case_log.id } + + before do + RequestHelper.stub_http_requests + sign_in user + end + + context "when exclusive checkbox is selected", js: true do + it "deselects all other checkboxes" do + visit("/logs/#{id}/accessibility-requirements") + page.check("case-log-accessibility-requirements-housingneeds-a-field", allow_label_click: true) + click_button("Save and continue") + + case_log.reload + expect(case_log["housingneeds_a"]).to eq("Yes") + + visit("/logs/#{id}/accessibility-requirements") + page.check("case-log-accessibility-requirements-housingneeds-h-field", allow_label_click: true) + click_button("Save and continue") + + case_log.reload + expect(case_log["housingneeds_a"]).to eq("No") + expect(case_log["housingneeds_h"]).to eq("Yes") + end + end +end