Browse Source

Implement changing answers (except the details one)

pull/671/head
Kat 3 years ago committed by JG
parent
commit
01fa6eef23
  1. 37
      app/controllers/schemes_controller.rb
  2. 2
      app/helpers/details_table_helper.rb
  3. 5
      app/views/schemes/confirm_secondary.html.erb
  4. 3
      app/views/schemes/primary_client_group.html.erb
  5. 5
      app/views/schemes/secondary_client_group.html.erb
  6. 64
      spec/features/schemes_spec.rb

37
app/controllers/schemes_controller.rb

@ -36,18 +36,29 @@ class SchemesController < ApplicationController
def update def update
if @scheme.update(scheme_params) if @scheme.update(scheme_params)
schemes_path = case params[:scheme][:page] if params[:scheme][:check_answers] == "true"
when "primary-client-group" if params[:scheme][:page] == "confirm-secondary" && @scheme.has_other_client_group == "Yes"
scheme_confirm_secondary_client_group_path(@scheme) redirect_to scheme_secondary_client_group_path(@scheme, check_answers: "true")
when "confirm-secondary" else
@scheme.has_other_client_group == "Yes" ? scheme_secondary_client_group_path(@scheme) : scheme_support_path(@scheme) if @scheme.has_other_client_group == "No"
when "secondary-client-group" @scheme.update!(secondary_client_group: nil)
scheme_support_path(@scheme) end
when "support" redirect_to scheme_check_answers_path(@scheme)
scheme_check_answers_path(@scheme) end
end else
schemes_path = case params[:scheme][:page]
redirect_to schemes_path 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 else
render request.current_url, status: :unprocessable_entity render request.current_url, status: :unprocessable_entity
end end
@ -78,7 +89,7 @@ class SchemesController < ApplicationController
private private
def scheme_params 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 end
def search_term def search_term

2
app/helpers/details_table_helper.rb

@ -4,7 +4,7 @@ module DetailsTableHelper
list = attribute[:value].map { |value| "<li>#{value}</li>" }.join list = attribute[:value].map { |value| "<li>#{value}</li>" }.join
simple_format(list, { class: "govuk-list govuk-list--bullet" }, wrapper_tag: "ul") simple_format(list, { class: "govuk-list govuk-list--bullet" }, wrapper_tag: "ul")
else 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") simple_format(value.to_s, { class: "govuk-body" }, wrapper_tag: "p")
end end

5
app/views/schemes/confirm_secondary.html.erb

@ -23,7 +23,10 @@
%> %>
<%= f.hidden_field :page, value: "confirm-secondary" %> <%= 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" %> <%= f.govuk_submit "Save and continue" %>
</div> </div>
</div> </div>

3
app/views/schemes/primary_client_group.html.erb

@ -26,6 +26,9 @@
legend: nil %> legend: nil %>
<%= f.hidden_field :page, value: "primary-client-group" %> <%= 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" %> <%= f.govuk_submit "Save and continue" %>
</div> </div>

5
app/views/schemes/secondary_client_group.html.erb

@ -25,7 +25,10 @@
legend: nil %> legend: nil %>
<%= f.hidden_field :page, value: "secondary-client-group" %> <%= 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" %> <%= f.govuk_submit "Save and continue" %>
</div> </div>
</div> </div>

64
spec/features/schemes_spec.rb

@ -294,6 +294,70 @@ RSpec.describe "Schemes scheme Features" do
end end
end 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 end
end end

Loading…
Cancel
Save