Browse Source

Implement exclusive checkboxes

pull/281/head
Kat 3 years ago
parent
commit
a144daa4c8
  1. 5
      app/views/form/_checkbox_question.html.erb
  2. 41
      spec/features/form/checkboxes_spec.rb

5
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 %>

41
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
Loading…
Cancel
Save