diff --git a/app/models/issue.rb b/app/models/issue.rb index 50a52f4fa..b1e05be76 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -949,7 +949,7 @@ class Issue < ActiveRecord::Base # Returns true if the issue is overdue def overdue? - due_date.present? && (due_date < User.current.today) && !closed? + due_date && (due_date < (status.is_closed ? closed_on.to_date : User.current.today)) end # Is the amount of work done less than it should for the due date diff --git a/lol.patch b/lol.patch new file mode 100644 index 000000000..e69de29bb diff --git a/test/unit/issue_test.rb b/test/unit/issue_test.rb index ae59024e9..5f2d5c694 100644 --- a/test/unit/issue_test.rb +++ b/test/unit/issue_test.rb @@ -2494,15 +2494,16 @@ class IssueTest < ActiveSupport::TestCase def test_overdue User.current = nil today = User.current.today - assert Issue.new(:due_date => (today - 1.day).to_date).overdue? - assert !Issue.new(:due_date => today).overdue? - assert !Issue.new(:due_date => (today + 1.day).to_date).overdue? - assert !Issue.new(:due_date => nil).overdue? - assert !Issue. - new( - :due_date => (today - 1.day).to_date, - :status => IssueStatus.where(:is_closed => true).first - ).overdue? + opened_status = IssueStatus.where(:is_closed => false).first + closed_status = IssueStatus.where(:is_closed => true).first + assert Issue.new(:due_date => (today - 1.day), :status => opened_status).overdue? + assert !Issue.new(:due_date => today, :status => opened_status).overdue? + assert !Issue.new(:due_date => (today + 1.day), :status => opened_status).overdue? + assert !Issue.new(:due_date => nil, :status => opened_status).overdue? + assert Issue.new(:due_date => (today - 1.day), :closed_on => today, :status => closed_status).overdue? + assert !Issue.new(:due_date => today, :closed_on => today, :status => closed_status).overdue? + assert !Issue.new(:due_date => (today + 1.day), :closed_on => today, :status => closed_status).overdue? + assert !Issue.new(:due_date => nil, :closed_on => today, :status => closed_status).overdue? end test "#behind_schedule? should be false if the issue has no start_date" do