diff --git a/app/controllers/schemes_controller.rb b/app/controllers/schemes_controller.rb index 8f8fca5c1..b9c18c97a 100644 --- a/app/controllers/schemes_controller.rb +++ b/app/controllers/schemes_controller.rb @@ -52,7 +52,7 @@ class SchemesController < ApplicationController redirect_to scheme_check_answers_path(@scheme) end else - redirect_to derive_next_path params[:scheme][:page] + redirect_to next_page_path params[:scheme][:page] end else render request.current_url, status: :unprocessable_entity @@ -87,8 +87,8 @@ class SchemesController < ApplicationController private - def derive_next_path page - case page + def next_page_path page + case page when "primary-client-group" scheme_confirm_secondary_client_group_path(@scheme) when "confirm-secondary" diff --git a/spec/requests/schemes_controller_spec.rb b/spec/requests/schemes_controller_spec.rb index d2bbe76fa..65b18970c 100644 --- a/spec/requests/schemes_controller_spec.rb +++ b/spec/requests/schemes_controller_spec.rb @@ -782,6 +782,49 @@ RSpec.describe SchemesController, type: :request do end end end + + context "when updating details" do + let(:params) { { scheme: { service_name: "testy", sensitive: "1", scheme_type: "Foyer", registered_under_care_act: "No", total_units: "1", page: "details" } } } + + before do + sign_in user + patch "/schemes/#{scheme_to_update.id}", params: + end + + it "renders confirm secondary group after successful update" do + follow_redirect! + expect(response).to have_http_status(:ok) + expect(page).to have_content("What client group is this scheme intended for?") + end + + it "updates a scheme with valid params" do + follow_redirect! + expect(scheme_to_update.reload.service_name).to eq("testy") + expect(scheme_to_update.reload.scheme_type).to eq("Foyer") + expect(scheme_to_update.reload.sensitive).to eq("Yes") + expect(scheme_to_update.reload.registered_under_care_act).to eq("No") + expect(scheme_to_update.reload.total_units).to eq(1) + end + + context "when updating from check answers page" do + let(:params) { { scheme: { service_name: "testy", sensitive: "1", scheme_type: "Foyer", registered_under_care_act: "No", total_units: "1", page: "details", check_answers: "true" } } } + + it "renders check answers page after successful update" do + follow_redirect! + expect(response).to have_http_status(:ok) + expect(page).to have_content("Check your changes before updating this scheme") + end + + it "updates a scheme with valid params" do + follow_redirect! + expect(scheme_to_update.reload.service_name).to eq("testy") + expect(scheme_to_update.reload.scheme_type).to eq("Foyer") + expect(scheme_to_update.reload.sensitive).to eq("Yes") + expect(scheme_to_update.reload.registered_under_care_act).to eq("No") + expect(scheme_to_update.reload.total_units).to eq(1) + end + end + end end end end