@@ -638,7 +638,13 class Issue < ActiveRecord::Base | |||||
638 | if leaf? |
|
638 | if leaf? | |
639 | if start_date.nil? || start_date < date |
|
639 | if start_date.nil? || start_date < date | |
640 | self.start_date, self.due_date = date, date + duration |
|
640 | self.start_date, self.due_date = date, date + duration | |
641 |
|
|
641 | begin | |
|
642 | save | |||
|
643 | rescue ActiveRecord::StaleObjectError | |||
|
644 | reload | |||
|
645 | self.start_date, self.due_date = date, date + duration | |||
|
646 | save | |||
|
647 | end | |||
642 | end |
|
648 | end | |
643 | else |
|
649 | else | |
644 | leaves.each do |leaf| |
|
650 | leaves.each do |leaf| |
@@ -768,6 +768,19 class IssueTest < ActiveSupport::TestCase | |||||
768 | assert_equal issue1.due_date + 1, issue2.reload.start_date |
|
768 | assert_equal issue1.due_date + 1, issue2.reload.start_date | |
769 | end |
|
769 | end | |
770 |
|
770 | |||
|
771 | def test_rescheduling_a_stale_issue_should_not_raise_an_error | |||
|
772 | stale = Issue.find(1) | |||
|
773 | issue = Issue.find(1) | |||
|
774 | issue.subject = "Updated" | |||
|
775 | issue.save! | |||
|
776 | ||||
|
777 | date = 10.days.from_now.to_date | |||
|
778 | assert_nothing_raised do | |||
|
779 | stale.reschedule_after(date) | |||
|
780 | end | |||
|
781 | assert_equal date, stale.reload.start_date | |||
|
782 | end | |||
|
783 | ||||
771 | def test_overdue |
|
784 | def test_overdue | |
772 | assert Issue.new(:due_date => 1.day.ago.to_date).overdue? |
|
785 | assert Issue.new(:due_date => 1.day.ago.to_date).overdue? | |
773 | assert !Issue.new(:due_date => Date.today).overdue? |
|
786 | assert !Issue.new(:due_date => Date.today).overdue? |
General Comments 0
You need to be logged in to leave comments.
Login now