diff --git a/app/controllers/form_controller.rb b/app/controllers/form_controller.rb index 444be4df8..5182aeea5 100644 --- a/app/controllers/form_controller.rb +++ b/app/controllers/form_controller.rb @@ -10,7 +10,7 @@ class FormController < ApplicationController redirect_to(case_logs_path, flash: { notice: "Log #{@case_log.id} has been submitted" }) else @case_log.errors.add :base, "All mandatory fields have not been completed, please refer to section status" - session[:errors][:review] = @case_log.errors.to_json + session[:review_errors] = @case_log.errors.to_json redirect_to(review_case_log_path) end else @@ -50,8 +50,8 @@ class FormController < ApplicationController def review if @case_log - if session["errors"] - JSON(session["errors"]).each do |field, messages| + if session[:review_errors] + JSON(session[:review_errors]).each do |field, messages| messages.each { |message| @case_log.errors.add field.to_sym, message } end end diff --git a/spec/requests/form_controller_spec.rb b/spec/requests/form_controller_spec.rb index 32d8016d9..994ed09fa 100644 --- a/spec/requests/form_controller_spec.rb +++ b/spec/requests/form_controller_spec.rb @@ -18,6 +18,25 @@ RSpec.describe FormController, type: :request do managing_organisation: other_organisation, ) end + let(:setup_complete_case_log) do + FactoryBot.create( + :case_log, + :about_completed, + status: 1, + year: 2021, + startdate: Time.zone.local(2021, 10, 10), + owning_organisation: organisation, + managing_organisation: organisation, + ) + end + let(:completed_case_log) do + FactoryBot.create( + :case_log, + :completed, + owning_organisation: organisation, + managing_organisation: organisation, + ) + end let(:headers) { { "Accept" => "text/html" } } context "when a user is not signed in" do @@ -97,6 +116,13 @@ RSpec.describe FormController, type: :request do expect(response).to redirect_to("/logs/#{case_log.id}") end end + + context "when visiting the review page" do + it "renders the review page for the case log" do + get "/logs/#{setup_complete_case_log.id}/review", headers: headers, params: {} + expect(response.body).to match("Review lettings log") + end + end end describe "Submit Form" do @@ -338,6 +364,23 @@ RSpec.describe FormController, type: :request do expect(response).to have_http_status(:not_found) end end + + context "When submitting the case log from the review page" do + + it "redirects to the case logs page on a successful submission of a complete case log" do + post "/logs/#{completed_case_log.id}/form", headers: { "HTTP_REFERER": "/logs/#{completed_case_log.id}/review" } + expect(response).to redirect_to("/logs") + follow_redirect! + expect(Capybara::Node::Simple.new(response.body)).to have_content("Log #{completed_case_log.id} has been submitted") + end + + it "redirects to the review page and presents an error to the user if submitting an incomplete case log" do + post "/logs/#{setup_complete_case_log.id}/form", headers: { "HTTP_REFERER": "/logs/#{setup_complete_case_log.id}/review" } + expect(response).to redirect_to("/logs/#{setup_complete_case_log.id}/review") + follow_redirect! + expect(Capybara::Node::Simple.new(response.body)).to have_content("All mandatory fields have not been completed, please refer to section status") + end + end end end end