diff options
-rw-r--r-- | app/models/info_request.rb | 9 | ||||
-rw-r--r-- | spec/models/info_request_spec.rb | 18 |
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 |