Browse Source

Make get_next_page_path a private method

pull/49/head
Kat 4 years ago
parent
commit
f7e04b9fde
  1. 30
      app/controllers/case_logs_controller.rb
  2. 10
      spec/controllers/case_logs_controller_spec.rb

30
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

10
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

Loading…
Cancel
Save