Browse Source

add request specs for review page

pull/469/head
Dushan Despotovic 3 years ago
parent
commit
55d549bd16
  1. 6
      app/controllers/form_controller.rb
  2. 43
      spec/requests/form_controller_spec.rb

6
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" }) redirect_to(case_logs_path, flash: { notice: "Log #{@case_log.id} has been submitted" })
else else
@case_log.errors.add :base, "All mandatory fields have not been completed, please refer to section status" @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) redirect_to(review_case_log_path)
end end
else else
@ -50,8 +50,8 @@ class FormController < ApplicationController
def review def review
if @case_log if @case_log
if session["errors"] if session[:review_errors]
JSON(session["errors"]).each do |field, messages| JSON(session[:review_errors]).each do |field, messages|
messages.each { |message| @case_log.errors.add field.to_sym, message } messages.each { |message| @case_log.errors.add field.to_sym, message }
end end
end end

43
spec/requests/form_controller_spec.rb

@ -18,6 +18,25 @@ RSpec.describe FormController, type: :request do
managing_organisation: other_organisation, managing_organisation: other_organisation,
) )
end 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" } } let(:headers) { { "Accept" => "text/html" } }
context "when a user is not signed in" do 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}") expect(response).to redirect_to("/logs/#{case_log.id}")
end end
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 end
describe "Submit Form" do describe "Submit Form" do
@ -338,6 +364,23 @@ RSpec.describe FormController, type: :request do
expect(response).to have_http_status(:not_found) expect(response).to have_http_status(:not_found)
end end
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 end
end end

Loading…
Cancel
Save