diff --git a/app/controllers/case_logs_controller.rb b/app/controllers/case_logs_controller.rb index 68e2a34d2..8afa54e94 100644 --- a/app/controllers/case_logs_controller.rb +++ b/app/controllers/case_logs_controller.rb @@ -43,7 +43,7 @@ class CaseLogsController < ApplicationController responses_for_page = question_responses(questions_for_page) @case_log.previous_page = previous_page if @case_log.update(responses_for_page) - redirect_path = form.next_page_redirect_path(previous_page) + redirect_path = get_next_page_path(form, previous_page, responses_for_page) redirect_to(send(redirect_path, @case_log)) else page_info = form.all_pages[previous_page] @@ -51,20 +51,6 @@ class CaseLogsController < ApplicationController end end - def self.get_next_page_path(form, previous_page, responses_for_page={}) - questions_for_page = form.questions_for_page(previous_page) - questions_for_page.each do |question, content| - if(content.key?("conditional_route_to")) - content["conditional_route_to"].each do |route, answer| - if responses_for_page[question.to_sym] == answer - return "case_log_#{route.to_s}_path" - end - end - end - end - form.next_page_redirect_path(previous_page) - end - def check_answers form = @@form_handler.get_form("2021_2022") @case_log = CaseLog.find(params[:case_log_id]) @@ -110,4 +96,18 @@ private params.require(:case_log).permit(CaseLog.editable_fields) end + + def get_next_page_path(form, previous_page, responses_for_page={}) + questions_for_page = form.questions_for_page(previous_page) + questions_for_page.each do |question, content| + if(content.key?("conditional_route_to")) + content["conditional_route_to"].each do |route, answer| + if responses_for_page[question] == answer + return "case_log_#{route.to_s}_path" + end + end + end + end + form.next_page_redirect_path(previous_page) + end end diff --git a/spec/controllers/case_logs_controller_spec.rb b/spec/controllers/case_logs_controller_spec.rb index dd8740a07..29b129e5e 100644 --- a/spec/controllers/case_logs_controller_spec.rb +++ b/spec/controllers/case_logs_controller_spec.rb @@ -154,18 +154,20 @@ RSpec.describe CaseLogsController, type: :controller do let(:previous_conditional_page) { "conditional_question" } let(:form_handler) { FormHandler.instance } let(:form) { form_handler.get_form("test_form") } - let(:responses_for_page) { { "pregnancy": "No" } } + let(:case_log_controller) { CaseLogsController.new } it "returns a correct page path if there is no conditional routing" do - expect(CaseLogsController.get_next_page_path(form, previous_page)).to eq("case_log_net_income_uc_proportion_path") + expect(case_log_controller.send(:get_next_page_path, form, previous_page)).to eq("case_log_net_income_uc_proportion_path") end it "returns a check answers page if previous page is the last page" do - expect(CaseLogsController.get_next_page_path(form, last_previous_page)).to eq("case_log_income_and_benefits_check_answers_path") + expect(case_log_controller.send(:get_next_page_path, form, last_previous_page)).to eq("case_log_income_and_benefits_check_answers_path") end it "returns a correct page path if there is conditional routing" do - expect(CaseLogsController.get_next_page_path(form, previous_conditional_page, responses_for_page)).to eq("case_log_conditional_question_no_page_path") + responses_for_page = {} + responses_for_page["pregnancy"] = "No" + expect(case_log_controller.send(:get_next_page_path, form, previous_conditional_page, responses_for_page)).to eq("case_log_conditional_question_no_page_path") end end end