Browse Source

Remove review action

pull/469/head
Kat 3 years ago
parent
commit
a6c1b906ca
  1. 51
      app/controllers/form_controller.rb
  2. 1
      app/models/form/question.rb
  3. 50
      app/views/form/review.html.erb
  4. 17
      spec/requests/form_controller_spec.rb

51
app/controllers/form_controller.rb

@ -1,36 +1,26 @@
class FormController < ApplicationController
before_action :authenticate_user!
before_action :find_resource, only: [:submit_form, :review]
before_action :find_resource_by_named_id, except: [:submit_form, :review]
before_action :find_resource, only: %i[submit_form review]
before_action :find_resource_by_named_id, except: %i[submit_form review]
def submit_form
if @case_log
if is_referrer_review?
if @case_log.completed?
redirect_to(case_logs_path, flash: { notice: "Log #{@case_log.id} has been submitted" })
@page = @case_log.form.get_page(params[:case_log][:page])
responses_for_page = responses_for_page(@page)
if @case_log.update(responses_for_page)
session[:errors] = nil
if is_referrer_check_answers? && !@case_log.form.next_page(@page, @case_log).to_s.include?("value_check")
redirect_to(send("case_log_#{@case_log.form.subsection_for_page(@page).id}_check_answers_path", @case_log))
elsif @case_log.form.is_last_question?(@page, @case_log.form.subsection_for_page(@page), @case_log)
redirect_to(case_logs_path)
else
@case_log.errors.add :base, "All mandatory fields have not been completed, please refer to section status"
session[:review_errors] = @case_log.errors.to_json
redirect_to(review_case_log_path)
end
else
@page = @case_log.form.get_page(params[:case_log][:page])
responses_for_page = responses_for_page(@page)
if @case_log.update(responses_for_page)
session[:errors] = nil
if is_referrer_check_answers? && !@case_log.form.next_page(@page, @case_log).to_s.include?("value_check")
redirect_to(send("case_log_#{@case_log.form.subsection_for_page(@page).id}_check_answers_path", @case_log))
elsif @case_log.form.is_last_question?(@page, @case_log.form.subsection_for_page(@page), @case_log)
redirect_to(case_logs_path)
else
redirect_path = @case_log.form.next_page_redirect_path(@page, @case_log)
redirect_to(send(redirect_path, @case_log))
end
else
redirect_path = "case_log_#{@page.id}_path"
session[:errors] = @case_log.errors.to_json
redirect_path = @case_log.form.next_page_redirect_path(@page, @case_log)
redirect_to(send(redirect_path, @case_log))
end
else
redirect_path = "case_log_#{@page.id}_path"
session[:errors] = @case_log.errors.to_json
redirect_to(send(redirect_path, @case_log))
end
else
render_not_found
@ -38,7 +28,6 @@ class FormController < ApplicationController
end
def check_answers
session[:review_errors] = nil
if @case_log
current_url = request.env["PATH_INFO"]
subsection = @case_log.form.get_subsection(current_url.split("/")[-2])
@ -50,11 +39,6 @@ class FormController < ApplicationController
def review
if @case_log
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
render "form/review"
else
render_not_found
@ -127,9 +111,4 @@ private
referrer = request.headers["HTTP_REFERER"].presence || ""
referrer.present? && CGI.parse(referrer.split("?")[-1]).present? && CGI.parse(referrer.split("?")[-1])["referrer"][0] == "check_answers"
end
def is_referrer_review?
referrer = request.headers["HTTP_REFERER"].presence || ""
referrer.present? && referrer.split("/")[-1].present? && referrer.split("/")[-1] == "review"
end
end

1
app/models/form/question.rb

@ -175,6 +175,7 @@ private
def checkbox_answer_label(case_log)
answer = []
return "Yes" if id == "declaration" && value_is_yes?(case_log["declaration"])
answer_options.each { |key, options| value_is_yes?(case_log[key]) ? answer << options["value"] : nil }
answer.join(", ")
end

50
app/views/form/review.html.erb

@ -5,34 +5,30 @@
"Review lettings log" => ""
}) %>
<%= form_with model: @case_log, url: form_case_log_path(@case_log), method: "post" do |f| %>
<%= f.govuk_error_summary %>
<div class="govuk-grid-row">
<div class="govuk-grid-column-two-thirds-from-desktop">
<h1 class="govuk-heading-xl">
<%= content_for(:title) %>
</h1>
<% @case_log.form.sections.map do |section| %>
<h2 class="govuk-heading-m"><%= section.label %></h2>
<% section.subsections.map do |subsection| %>
<div class="x-govuk-summary-card govuk-!-margin-bottom-6">
<div class="x-govuk-summary-card__header">
<h3 class="x-govuk-summary-card__title"><%= subsection.label %></h3>
</div>
<div class="x-govuk-summary-card__body">
<dl class="govuk-summary-list">
<% subsection.applicable_questions(@case_log).each do |question| %>
<%= render partial: 'form/check_answers_table', locals: { question: question, case_log: @case_log } %>
<% end %>
</dl>
</div>
<div class="govuk-grid-row">
<div class="govuk-grid-column-two-thirds-from-desktop">
<h1 class="govuk-heading-xl">
<%= content_for(:title) %>
</h1>
<% @case_log.form.sections.map do |section| %>
<h2 class="govuk-heading-m"><%= section.label %></h2>
<% section.subsections.map do |subsection| %>
<div class="x-govuk-summary-card govuk-!-margin-bottom-6">
<div class="x-govuk-summary-card__header">
<h3 class="x-govuk-summary-card__title"><%= subsection.label %></h3>
</div>
<% end %>
<div class="x-govuk-summary-card__body">
<dl class="govuk-summary-list">
<% subsection.applicable_questions(@case_log).each do |question| %>
<%= render partial: 'form/check_answers_table', locals: { question: question, case_log: @case_log } %>
<% end %>
</dl>
</div>
</div>
<% end %>
<div class="govuk-inset-text">
You can submit changes to this log until the close of the current collection year, 31 March 2022.
</div>
<% end %>
<div class="govuk-inset-text">
You can submit changes to this log until the close of the current collection year, 31 March <%= @case_log.collection_start_year.present? ? @case_log.collection_start_year + 1 : " of current collection end year" %>.
</div>
</div>
<%= f.govuk_submit "Submit lettings log", accesskey: "s" %>
<% end %>
</div>

17
spec/requests/form_controller_spec.rb

@ -364,23 +364,6 @@ 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

Loading…
Cancel
Save