Browse Source

Add deadline text

pull/2940/head
Kat 3 months ago
parent
commit
0ba4698347
  1. 4
      app/frontend/styles/_red-link.scss
  2. 3
      app/helpers/collection_deadline_helper.rb
  3. 15
      app/helpers/tasklist_helper.rb
  4. 1
      app/views/logs/edit.html.erb
  5. 38
      spec/helpers/tasklist_helper_spec.rb

4
app/frontend/styles/_red-link.scss

@ -9,6 +9,10 @@
color: govuk-colour("red"); color: govuk-colour("red");
} }
.app-red-text {
color: govuk-colour("red");
}
.app-red-link:hover { .app-red-link:hover {
color: govuk-shade(govuk-colour("red"), 20); color: govuk-shade(govuk-colour("red"), 20);
} }

3
app/helpers/collection_deadline_helper.rb

@ -61,11 +61,12 @@ module CollectionDeadlineHelper
first_quarter(year).merge(quarter: "Q1"), first_quarter(year).merge(quarter: "Q1"),
second_quarter(year).merge(quarter: "Q2"), second_quarter(year).merge(quarter: "Q2"),
third_quarter(year).merge(quarter: "Q3"), third_quarter(year).merge(quarter: "Q3"),
fourth_quarter(year).merge(quarter: "Q4"),
] ]
end end
def quarter_for_date(date: Time.zone.now) def quarter_for_date(date: Time.zone.now)
quarters = quarter_dates(current_collection_start_year) quarters = quarter_dates(collection_start_year_for_date(date))
quarter = quarters.find { |q| date.between?(q[:start_date], q[:cutoff_date] + 1.day) } quarter = quarters.find { |q| date.between?(q[:start_date], q[:cutoff_date] + 1.day) }

15
app/helpers/tasklist_helper.rb

@ -2,6 +2,7 @@ module TasklistHelper
include GovukLinkHelper include GovukLinkHelper
include GovukVisuallyHiddenHelper include GovukVisuallyHiddenHelper
include CollectionTimeHelper include CollectionTimeHelper
include CollectionDeadlineHelper
def breadcrumb_logs_title(log, current_user) def breadcrumb_logs_title(log, current_user)
log_type = log.lettings? ? "Lettings" : "Sales" log_type = log.lettings? ? "Lettings" : "Sales"
@ -70,6 +71,20 @@ module TasklistHelper
status == :cannot_start_yet ? "" : "govuk-task-list__item--with-link" status == :cannot_start_yet ? "" : "govuk-task-list__item--with-link"
end end
def deadline_text(log)
return if log.completed?
return if log.startdate.nil?
log_quarter = quarter_for_date(date: log.startdate)
deadline_for_log = log_quarter.cutoff_date
if deadline_for_log > Time.zone.now
"<p class=\"govuk-body\">Deadline: #{log_quarter.cutoff_date.strftime('%A %-d %B %Y')}.<p>".html_safe
else
"<p class=\"govuk-body app-red-text\"><strong>Overdue: #{log_quarter.quarter} deadline #{log_quarter.cutoff_date.strftime('%A %-d %B %Y')}.</strong></p>".html_safe
end
end
private private
def breadcrumb_organisation(log) def breadcrumb_organisation(log)

1
app/views/logs/edit.html.erb

@ -37,6 +37,7 @@
</p> </p>
<% end %> <% end %>
<%= deadline_text(@log) %>
<%= render "tasklist" %> <%= render "tasklist" %>
<%= edit_actions_for_log(@log, bulk_upload_filter_applied) %> <%= edit_actions_for_log(@log, bulk_upload_filter_applied) %>

38
spec/helpers/tasklist_helper_spec.rb

@ -204,4 +204,42 @@ RSpec.describe TasklistHelper do
end end
end end
end end
describe "deadline text" do
context "when log does not have a sale/start date" do
let(:log) { build(:sales_log, saledate: nil) }
it "returns nil" do
expect(deadline_text(log)).to be_nil
end
end
context "when log is completed" do
let(:log) { build(:sales_log, :completed, status: "completed") }
it "returns nil" do
expect(deadline_text(log)).to be_nil
end
end
context "when today is before the deadline for log with sale/start date" do
let(:log) { build(:sales_log, saledate: Time.zone.local(2025, 6, 1)) }
it "returns the deadline text" do
allow(Time.zone).to receive(:now).and_return(Time.zone.local(2025, 5, 7))
allow(Time.zone).to receive(:today).and_return(Time.zone.local(2025, 5, 7))
expect(deadline_text(log)).to include("Deadline: ")
end
end
context "when today is after the deadline for log with sale/start date" do
let(:log) { build(:sales_log, saledate: Time.zone.local(2025, 2, 1)) }
it "returns the overdue text" do
allow(Time.zone).to receive(:now).and_return(Time.zone.local(2025, 6, 7))
allow(Time.zone).to receive(:today).and_return(Time.zone.local(2025, 6, 7))
expect(deadline_text(log)).to include("Overdue: ")
end
end
end
end end

Loading…
Cancel
Save