Browse Source

Add styling change return of get status

pull/28/head
Kat 4 years ago
parent
commit
15f1bfb103
  1. 30
      app/helpers/tasklist_helper.rb
  2. 4
      app/views/case_logs/_tasklist.html.erb
  3. 10
      spec/helpers/tasklist_helper_spec.rb

30
app/helpers/tasklist_helper.rb

@ -1,21 +1,43 @@
module TasklistHelper module TasklistHelper
STATUSES = {
:not_started => "Not started",
:cannot_start_yet => "Cannot start yet",
:completed => "Completed",
:in_progress => "In progress"
}
STYLES = {
:not_started => "govuk-tag--grey",
:cannot_start_yet => "govuk-tag--grey",
:completed => "",
:in_progress => "govuk-tag--blue"
}
def get_subsection_status(subsection_name, case_log) def get_subsection_status(subsection_name, case_log)
@form = Form.new(2021, 2022) @form = Form.new(2021, 2022)
questions = @form.questions_for_subsection(subsection_name).keys 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
if questions.all? {|question| case_log[question].blank?} if questions.all? {|question| case_log[question].blank?}
return "Not started" return :not_started
end end
if questions.all? {|question| case_log[question].present?} if questions.all? {|question| case_log[question].present?}
return "Completed" return :completed
end end
"In progress" :in_progress
end end
def all_questions_completed(case_log) def all_questions_completed(case_log)
case_log.attributes.all? { |_question, answer| answer.present?} case_log.attributes.all? { |_question, answer| answer.present?}
end end
def get_status_style(status_label)
STYLES[status_label]
end
def get_status_label(status)
STATUSES[status]
end
end end

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

@ -12,8 +12,8 @@
<% 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" %>
<% subsection_status=get_subsection_status(subsection_key, @case_log) %> <% subsection_status=get_subsection_status(subsection_key, @case_log) %>
<strong class="govuk-tag govuk-tag--grey app-task-list__tag"> <strong class="govuk-tag app-task-list__tag <%= get_status_style(subsection_status) %>">
<%= subsection_status %> <%= get_status_label(subsection_status) %>
</strong> </strong>
</li> </li>
<% end %> <% end %>

10
spec/helpers/tasklist_helper_spec.rb

@ -6,26 +6,26 @@ RSpec.describe TasklistHelper do
@form = Form.new(2021, 2022) @form = Form.new(2021, 2022)
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") expect(get_subsection_status("income_and_benefits", case_log)).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") expect(get_subsection_status("declaration", case_log)).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") expect(get_subsection_status("local_authority", case_log)).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") expect(get_subsection_status("income_and_benefits", case_log)).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") expect(get_subsection_status("declaration", completed_case_log)).to eq(:not_started)
end end
end end
end end

Loading…
Cancel
Save