diff --git a/app/controllers/schemes_controller.rb b/app/controllers/schemes_controller.rb
index 36bf409c6..bb132ee7a 100644
--- a/app/controllers/schemes_controller.rb
+++ b/app/controllers/schemes_controller.rb
@@ -36,18 +36,29 @@ class SchemesController < ApplicationController
def update
if @scheme.update(scheme_params)
- schemes_path = case params[:scheme][:page]
- when "primary-client-group"
- scheme_confirm_secondary_client_group_path(@scheme)
- when "confirm-secondary"
- @scheme.has_other_client_group == "Yes" ? scheme_secondary_client_group_path(@scheme) : scheme_support_path(@scheme)
- when "secondary-client-group"
- scheme_support_path(@scheme)
- when "support"
- scheme_check_answers_path(@scheme)
- end
-
- redirect_to schemes_path
+ if params[:scheme][:check_answers] == "true"
+ if params[:scheme][:page] == "confirm-secondary" && @scheme.has_other_client_group == "Yes"
+ redirect_to scheme_secondary_client_group_path(@scheme, check_answers: "true")
+ else
+ if @scheme.has_other_client_group == "No"
+ @scheme.update!(secondary_client_group: nil)
+ end
+ redirect_to scheme_check_answers_path(@scheme)
+ end
+ else
+ schemes_path = case params[:scheme][:page]
+ when "primary-client-group"
+ scheme_confirm_secondary_client_group_path(@scheme)
+ when "confirm-secondary"
+ @scheme.has_other_client_group == "Yes" ? scheme_secondary_client_group_path(@scheme) : scheme_support_path(@scheme)
+ when "secondary-client-group"
+ scheme_support_path(@scheme)
+ when "support"
+ scheme_check_answers_path(@scheme)
+ end
+
+ redirect_to schemes_path
+ end
else
render request.current_url, status: :unprocessable_entity
end
@@ -78,7 +89,7 @@ class SchemesController < ApplicationController
private
def scheme_params
- params.require(:scheme).permit(:service_name, :sensitive, :organisation_id, :scheme_type, :registered_under_care_act, :total_units, :id, :confirmed, :has_other_client_group)
+ params.require(:scheme).permit(:service_name, :sensitive, :organisation_id, :scheme_type, :registered_under_care_act, :total_units, :id, :confirmed, :has_other_client_group, :primary_client_group, :secondary_client_group)
end
def search_term
diff --git a/app/helpers/details_table_helper.rb b/app/helpers/details_table_helper.rb
index b436cab38..c39bf75d7 100644
--- a/app/helpers/details_table_helper.rb
+++ b/app/helpers/details_table_helper.rb
@@ -4,7 +4,7 @@ module DetailsTableHelper
list = attribute[:value].map { |value| "
#{value}" }.join
simple_format(list, { class: "govuk-list govuk-list--bullet" }, wrapper_tag: "ul")
else
- value = attribute[:value].is_a?(Array) ? attribute[:value].first : attribute[:value]
+ value = attribute[:value].is_a?(Array) ? attribute[:value].first : attribute[:value] || "None"
simple_format(value.to_s, { class: "govuk-body" }, wrapper_tag: "p")
end
diff --git a/app/views/schemes/confirm_secondary.html.erb b/app/views/schemes/confirm_secondary.html.erb
index 8f2094c4a..d27bfaac6 100644
--- a/app/views/schemes/confirm_secondary.html.erb
+++ b/app/views/schemes/confirm_secondary.html.erb
@@ -23,7 +23,10 @@
%>
<%= f.hidden_field :page, value: "confirm-secondary" %>
-
+ <% if request.query_parameters["check_answers"] == "true" %>
+ <%= f.hidden_field :check_answers, value: "true" %>
+ <% end %>
+
<%= f.govuk_submit "Save and continue" %>
diff --git a/app/views/schemes/primary_client_group.html.erb b/app/views/schemes/primary_client_group.html.erb
index 4ad176bd4..027e14bdc 100644
--- a/app/views/schemes/primary_client_group.html.erb
+++ b/app/views/schemes/primary_client_group.html.erb
@@ -26,6 +26,9 @@
legend: nil %>
<%= f.hidden_field :page, value: "primary-client-group" %>
+ <% if request.query_parameters["check_answers"] == "true" %>
+ <%= f.hidden_field :check_answers, value: "true" %>
+ <% end %>
<%= f.govuk_submit "Save and continue" %>
diff --git a/app/views/schemes/secondary_client_group.html.erb b/app/views/schemes/secondary_client_group.html.erb
index 7068973d4..3184fa746 100644
--- a/app/views/schemes/secondary_client_group.html.erb
+++ b/app/views/schemes/secondary_client_group.html.erb
@@ -25,7 +25,10 @@
legend: nil %>
<%= f.hidden_field :page, value: "secondary-client-group" %>
-
+ <% if request.query_parameters["check_answers"] == "true" %>
+ <%= f.hidden_field :check_answers, value: "true" %>
+ <% end %>
+
<%= f.govuk_submit "Save and continue" %>
diff --git a/spec/features/schemes_spec.rb b/spec/features/schemes_spec.rb
index 2319bc380..ffbe8ecd0 100644
--- a/spec/features/schemes_spec.rb
+++ b/spec/features/schemes_spec.rb
@@ -294,6 +294,70 @@ RSpec.describe "Schemes scheme Features" do
end
end
end
+
+ context "when changing answers" do
+ let!(:scheme) { FactoryBot.create(:scheme) }
+
+ before do
+ visit "/schemes/#{scheme.id}/check-answers"
+ end
+
+ it "displays change links" do
+ assert_selector "a", text: "Change", count: 12
+ end
+
+ it "allows changing details questions" do
+ end
+
+ it "allows changing primary-client-group question" do
+ click_link("Change", href: "/schemes/#{scheme.id}/primary-client-group?check_answers=true")
+ expect(page).to have_current_path("/schemes/#{scheme.id}/primary-client-group?check_answers=true")
+
+ choose "Older people with support needs"
+ click_button "Save and continue"
+
+ expect(page).to have_current_path("/schemes/#{scheme.id}/check-answers")
+ expect(page).to have_content "Older people with support needs"
+ end
+
+ it "allows changing secondary-client-group question" do
+ click_link("Change", href: "/schemes/#{scheme.id}/secondary-client-group?check_answers=true")
+ expect(page).to have_current_path("/schemes/#{scheme.id}/secondary-client-group?check_answers=true")
+
+ choose "People at risk of domestic violence"
+ click_button "Save and continue"
+
+ expect(page).to have_current_path("/schemes/#{scheme.id}/check-answers")
+ expect(page).to have_content "People at risk of domestic violence"
+ end
+
+ it "allows changing confirm-secondary-client-group question to yes" do
+ click_link("Change", href: "/schemes/#{scheme.id}/confirm-secondary-client-group?check_answers=true")
+ expect(page).to have_current_path("/schemes/#{scheme.id}/confirm-secondary-client-group?check_answers=true")
+
+ choose "Yes"
+ click_button "Save and continue"
+
+ expect(page).to have_current_path("/schemes/#{scheme.id}/secondary-client-group?check_answers=true")
+
+ choose "People at risk of domestic violence"
+ click_button "Save and continue"
+
+ expect(page).to have_current_path("/schemes/#{scheme.id}/check-answers")
+ expect(page).to have_content "People at risk of domestic violence"
+ end
+
+ it "allows changing confirm-secondary-client-group question to no" do
+ click_link("Change", href: "/schemes/#{scheme.id}/confirm-secondary-client-group?check_answers=true")
+ expect(page).to have_current_path("/schemes/#{scheme.id}/confirm-secondary-client-group?check_answers=true")
+
+ choose "No"
+ click_button "Save and continue"
+
+ expect(page).to have_current_path("/schemes/#{scheme.id}/check-answers")
+ expect(page).to have_content "None"
+ end
+ end
end
end
end