diff --git a/app/controllers/form_controller.rb b/app/controllers/form_controller.rb index abeb2a7a1..8c4fd9f49 100644 --- a/app/controllers/form_controller.rb +++ b/app/controllers/form_controller.rb @@ -229,9 +229,16 @@ private if params[@log.model_name.param_key]["check_errors"] @page = form.get_page(params[@log.model_name.param_key]["page"]) + flash[:notice] = "You have successfully updated #{@page.questions.map(&:check_answer_label).to_sentence}" return send("#{@log.class.name.underscore}_#{params[@log.model_name.param_key]['original_page_id']}_path", @log, { check_errors: true, related_question_ids: params[@log.model_name.param_key]["related_question_ids"].split(" ") }.compact) end + if params["referrer"] == "check_errors" + @page = form.get_page(params[@log.model_name.param_key]["page"]) + flash[:notice] = "You have successfully updated #{@page.questions.map(&:check_answer_label).to_sentence}" + return send("#{@log.class.name.underscore}_#{params['original_page_id']}_path", @log, { check_errors: true, related_question_ids: params["related_question_ids"] }.compact) + end + is_new_answer_from_check_answers = is_referrer_type?("check_answers_new_answer") redirect_path = form.next_page_redirect_path(@page, @log, current_user, ignore_answered: is_new_answer_from_check_answers) referrer = is_new_answer_from_check_answers ? "check_answers_new_answer" : nil diff --git a/app/views/form/check_errors.html.erb b/app/views/form/check_errors.html.erb index 03e5c231e..f50ddf6c1 100644 --- a/app/views/form/check_errors.html.erb +++ b/app/views/form/check_errors.html.erb @@ -61,6 +61,6 @@ <% end %> - <%= govuk_button_link_to "Confirm and continue", "/" %> + <%= govuk_button_link_to "Confirm and continue", @original_page_id ? send("#{@log.model_name.param_key}_#{@original_page_id}_path", @log) : send("#{@log.model_name.param_key}_#{@page.id}_path", @log) %> diff --git a/spec/requests/check_errors_controller_spec.rb b/spec/requests/check_errors_controller_spec.rb index 2145e2c7c..179897008 100644 --- a/spec/requests/check_errors_controller_spec.rb +++ b/spec/requests/check_errors_controller_spec.rb @@ -268,4 +268,63 @@ RSpec.describe CheckErrorsController, type: :request do end end end + + describe "answer incomplete question" do + context "when user is signed in" do + context "and answering specific lettings question" do + let(:params) do + { + original_page_id: "household_members", + referrer: "check_errors", + related_question_ids: %w[hhmemb ecstat1 earnings], + lettings_log: { + page: "household_members", + hhmemb: "2", + }, + } + end + + before do + sign_in user + post "/lettings-logs/#{lettings_log.id}/household-members", params: + end + + it "maintains original check_errors data in query params" do + follow_redirect! + expect(request.query_parameters["check_errors"]).to eq("true") + expect(request.query_parameters["related_question_ids"]).to eq(%w[hhmemb ecstat1 earnings]) + expect(page).to have_content("You have successfully updated Number of household members") + expect(page).to have_link("Confirm and continue", href: "/lettings-logs/#{lettings_log.id}/household-members") + end + end + + context "and answering specific sales question" do + let(:params) do + { + original_page_id: "buyer_1_income", + referrer: "check_errors", + related_question_ids: %w[income1 la ownershipsch], + sales_log: { + page: "buyer_1_income", + income1: "1000", + income1nk: "0", + }, + } + end + + before do + sign_in user + post "/sales-logs/#{sales_log.id}/buyer-1-income", params: + end + + it "maintains original check_errors data in query params" do + follow_redirect! + expect(request.query_parameters["check_errors"]).to eq("true") + expect(request.query_parameters["related_question_ids"]).to eq(%w[income1 la ownershipsch]) + expect(page).to have_content("You have successfully updated Buyer 1’s gross annual income known? and Buyer 1’s gross annual income") + expect(page).to have_link("Confirm and continue", href: "/sales-logs/#{sales_log.id}/buyer-1-income") + end + end + end + end end