From 039e32e1dfd68bc1735b7443f0e110155556c4c9 Mon Sep 17 00:00:00 2001 From: Kat Date: Thu, 1 Dec 2022 10:51:10 +0000 Subject: [PATCH] Extract collection period check into a before_action and change path to rails route --- app/controllers/form_controller.rb | 9 ++++++++- app/helpers/tasklist_helper.rb | 2 +- spec/requests/form_controller_spec.rb | 1 + 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/app/controllers/form_controller.rb b/app/controllers/form_controller.rb index a529ef6e7..19d47f8e3 100644 --- a/app/controllers/form_controller.rb +++ b/app/controllers/form_controller.rb @@ -2,6 +2,7 @@ class FormController < ApplicationController before_action :authenticate_user! before_action :find_resource, only: %i[submit_form review] before_action :find_resource_by_named_id, except: %i[submit_form review] + before_action :check_collection_period, only: %i[submit_form show_page] def submit_form if @log @@ -50,7 +51,7 @@ class FormController < ApplicationController page_id = request.path.split("/")[-1].underscore @page = @log.form.get_page(page_id) @subsection = @log.form.subsection_for_page(@page) - if @page.routed_to?(@log, current_user) && @log.collection_period_open? + if @page.routed_to?(@log, current_user) render "form/page" else redirect_to lettings_log_path(@log) @@ -176,4 +177,10 @@ private responses_for_page[question.id].nil? || responses_for_page[question.id].blank? end end + + def check_collection_period + return unless @log + + redirect_to lettings_log_path(@log) unless @log.collection_period_open? + end end diff --git a/app/helpers/tasklist_helper.rb b/app/helpers/tasklist_helper.rb index fe842c7d7..6c0264494 100644 --- a/app/helpers/tasklist_helper.rb +++ b/app/helpers/tasklist_helper.rb @@ -39,7 +39,7 @@ module TasklistHelper def review_log_text(log) if log.collection_period_open? - "You can #{govuk_link_to 'review and make changes to this log', "/lettings-logs/#{log.id}/review"} until #{(log.form.end_date + 1.day).to_formatted_s(:govuk_date)}.".html_safe + "You can #{govuk_link_to 'review and make changes to this log', review_lettings_log_path(log)} until #{(log.form.end_date + 1.day).to_formatted_s(:govuk_date)}.".html_safe else "This log is from the #{log.form.start_date.year}/#{log.form.start_date.year + 1} collection window, which is now closed." end diff --git a/spec/requests/form_controller_spec.rb b/spec/requests/form_controller_spec.rb index 4975d3304..bebf6de04 100644 --- a/spec/requests/form_controller_spec.rb +++ b/spec/requests/form_controller_spec.rb @@ -509,6 +509,7 @@ RSpec.describe FormController, type: :request do before do completed_lettings_log.update!(ecstat1: 1, earnings: 130, hhmemb: 1) # we're not routing to that page, so it gets cleared?ยง allow(completed_lettings_log).to receive(:net_income_soft_validation_triggered?).and_return(true) + allow(completed_lettings_log.form).to receive(:end_date).and_return(Time.zone.today + 1.day) post "/lettings-logs/#{completed_lettings_log.id}/form", params: interrupt_params, headers: headers.merge({ "HTTP_REFERER" => referrer }) end