Browse Source

update tasklist helper methods not to use the default form

pull/28/head
Kat 4 years ago
parent
commit
592f5a9f64
  1. 11
      app/helpers/tasklist_helper.rb
  2. 4
      app/views/case_logs/_tasklist.html.erb
  3. 19
      spec/helpers/tasklist_helper_spec.rb

11
app/helpers/tasklist_helper.rb

@ -13,10 +13,7 @@ module TasklistHelper
:in_progress => "govuk-tag--blue" :in_progress => "govuk-tag--blue"
} }
def get_subsection_status(subsection_name, case_log) def get_subsection_status(subsection_name, case_log, questions)
@form = Form.new(2021, 2022)
questions = @form.questions_for_subsection(subsection_name).keys
if subsection_name == "declaration" if subsection_name == "declaration"
return all_questions_completed(case_log) ? :not_started : :cannot_start_yet return all_questions_completed(case_log) ? :not_started : :cannot_start_yet
end end
@ -39,7 +36,7 @@ module TasklistHelper
def get_next_incomplete_section(form, case_log) def get_next_incomplete_section(form, case_log)
subsections = form.all_subsections.keys subsections = form.all_subsections.keys
return subsections.find { |subsection| is_incomplete?(subsection, case_log) } return subsections.find { |subsection| is_incomplete?(subsection, case_log, form.questions_for_subsection(subsection).keys) }
end end
private private
@ -47,8 +44,8 @@ module TasklistHelper
case_log.attributes.all? { |_question, answer| answer.present?} case_log.attributes.all? { |_question, answer| answer.present?}
end end
def is_incomplete?(subsection, case_log) def is_incomplete?(subsection, case_log, questions)
status = get_subsection_status(subsection, case_log) status = get_subsection_status(subsection, case_log, questions)
return status == :not_started || status == :in_progress return status == :not_started || status == :in_progress
end end
end end

4
app/views/case_logs/_tasklist.html.erb

@ -10,8 +10,8 @@
<% section_value["subsections"].map do |subsection_key, subsection_value| %> <% section_value["subsections"].map do |subsection_key, subsection_value| %>
<li class="app-task-list__item" id=<%= subsection_key %>> <li class="app-task-list__item" id=<%= subsection_key %>>
<% first_page = @form.first_page_for_subsection(subsection_key) %> <% first_page = @form.first_page_for_subsection(subsection_key) %>
<%= link_to subsection_value["label"], send("case_log_#{first_page}_path", @case_log), class: "task-name" %> <%= link_to subsection_value["label"], send("case_log_#{first_page}_path", @case_log), class: "task-name govuk-link" %>
<% subsection_status=get_subsection_status(subsection_key, @case_log) %> <% subsection_status=get_subsection_status(subsection_key, @case_log, @form.questions_for_subsection(subsection_key)) %>
<strong class="govuk-tag app-task-list__tag <%= get_status_style(subsection_status) %>"> <strong class="govuk-tag app-task-list__tag <%= get_status_style(subsection_status) %>">
<%= get_status_label(subsection_status) %> <%= get_status_label(subsection_status) %>
</strong> </strong>

19
spec/helpers/tasklist_helper_spec.rb

@ -2,29 +2,38 @@ require "rails_helper"
RSpec.describe TasklistHelper do RSpec.describe TasklistHelper do
describe "get subsection status" do describe "get subsection status" do
@form = Form.new(2021, 2022)
income_and_benefits_questions = @form.questions_for_subsection("income_and_benefits").keys
declaration_questions = @form.questions_for_subsection("declaration").keys
local_authority_questions = @form.questions_for_subsection("local_authority").keys
let!(:case_log) { FactoryBot.create(:case_log) } let!(:case_log) { FactoryBot.create(:case_log) }
it "returns not started if none of the questions in the subsection are answered" do it "returns not started if none of the questions in the subsection are answered" do
expect(get_subsection_status("income_and_benefits", case_log)).to eq(:not_started) status = get_subsection_status("income_and_benefits", case_log, income_and_benefits_questions)
expect(status).to eq(:not_started)
end end
it "returns cannot start yet if the subsection is declaration" do it "returns cannot start yet if the subsection is declaration" do
expect(get_subsection_status("declaration", case_log)).to eq(:cannot_start_yet) status = get_subsection_status("declaration", case_log, declaration_questions)
expect(status).to eq(:cannot_start_yet)
end end
it "returns in progress if some of the questions have been answered" do it "returns in progress if some of the questions have been answered" do
case_log["previous_postcode"] = "P0 5TT" case_log["previous_postcode"] = "P0 5TT"
expect(get_subsection_status("local_authority", case_log)).to eq(:in_progress) status = get_subsection_status("local_authority", case_log, local_authority_questions)
expect(status).to eq(:in_progress)
end end
it "returns completed if all the questions in the subsection have been answered" do it "returns completed if all the questions in the subsection have been answered" do
%w(net_income net_income_frequency net_income_uc_proportion housing_benefit).each {|x| case_log[x] = "value" } %w(net_income net_income_frequency net_income_uc_proportion housing_benefit).each {|x| case_log[x] = "value" }
expect(get_subsection_status("income_and_benefits", case_log)).to eq(:completed) status = get_subsection_status("income_and_benefits", case_log, income_and_benefits_questions)
expect(status).to eq(:completed)
end end
it "returns not started if the subsection is declaration and all the questions are completed" do it "returns not started if the subsection is declaration and all the questions are completed" do
completed_case_log = CaseLog.new(case_log.attributes.map { |key, value| Hash[key, value || "value"] }.reduce(:merge)) completed_case_log = CaseLog.new(case_log.attributes.map { |key, value| Hash[key, value || "value"] }.reduce(:merge))
expect(get_subsection_status("declaration", completed_case_log)).to eq(:not_started) status = get_subsection_status("declaration", completed_case_log, declaration_questions)
expect(status).to eq(:not_started)
end end
end end

Loading…
Cancel
Save