aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/models/info_request.rb9
-rw-r--r--spec/models/info_request_spec.rb18
2 files changed, 25 insertions, 2 deletions
diff --git a/app/models/info_request.rb b/app/models/info_request.rb
index 8e2c25879..8baa0ca14 100644
--- a/app/models/info_request.rb
+++ b/app/models/info_request.rb
@@ -491,6 +491,8 @@ public
return 'waiting_classification' if self.awaiting_description
return described_state unless self.described_state == "waiting_response"
# Compare by date, so only overdue on next day, not if 1 second late
+ return 'waiting_response_very_overdue' if
+ Time.now.strftime("%Y-%m-%d") > self.date_very_overdue_after.strftime("%Y-%m-%d")
return 'waiting_response_overdue' if
Time.now.strftime("%Y-%m-%d") > self.date_response_required_by.strftime("%Y-%m-%d")
return 'waiting_response'
@@ -582,6 +584,13 @@ public
last_sent = last_event_forming_initial_request
return Holiday.due_date_from(last_sent.outgoing_message.last_sent_at, 20)
end
+ # This is a long stop - even with UK public interest test extensions, 40
+ # days is a very long time.
+ def date_very_overdue_after
+ last_sent = last_event_forming_initial_request
+ return Holiday.due_date_from(last_sent.outgoing_message.last_sent_at, 40)
+ end
+
# Are we more than 20 working days overdue?
def working_days_20_overdue?
diff --git a/spec/models/info_request_spec.rb b/spec/models/info_request_spec.rb
index c7b1db83c..91b42a52b 100644
--- a/spec/models/info_request_spec.rb
+++ b/spec/models/info_request_spec.rb
@@ -134,15 +134,29 @@ describe InfoRequest do
@ir.date_response_required_by.strftime("%F").should == '2007-11-09'
end
- it "isn't overdue on due date" do
+ it "has correct very overdue after date" do
+ @ir.date_very_overdue_after.strftime("%F").should == '2007-12-10'
+ end
+
+ it "isn't overdue on due date (20 working days after request sent)" do
Time.stub!(:now).and_return(Time.utc(2007, 11, 9, 23, 59))
@ir.calculate_status.should == 'waiting_response'
end
- it "is overdue a day after due date " do
+ it "is overdue a day after due date (20 working days after request sent)" do
Time.stub!(:now).and_return(Time.utc(2007, 11, 10, 00, 01))
@ir.calculate_status.should == 'waiting_response_overdue'
end
+
+ it "is still overdue 40 working days after request sent" do
+ Time.stub!(:now).and_return(Time.utc(2007, 12, 10, 23, 59))
+ @ir.calculate_status.should == 'waiting_response_overdue'
+ end
+
+ it "is very overdue the day after 40 working days after request sent" do
+ Time.stub!(:now).and_return(Time.utc(2007, 12, 11, 00, 01))
+ @ir.calculate_status.should == 'waiting_response_very_overdue'
+ end
end
describe 'when asked if a user is the owning user for this request' do