end
end
+ def create_or_update
+ super
+ ensure
+ @status_was = nil
+ end
+ private :create_or_update
+
# AR#Persistence#destroy would raise and RecordNotFound exception
# if the issue was already deleted or updated (non matching lock_version).
# This is a problem when bulk deleting issues or deleting a project
scope
end
+ # Returns the initial status of the issue
+ # Returns nil for a new issue
+ def status_was
+ if status_id_was && status_id_was.to_i > 0
+ @status_was ||= IssueStatus.find_by_id(status_id_was)
+ end
+ end
+
# Return true if the issue is closed, otherwise false
def closed?
self.status.is_closed?
# Return true if the issue is being closed
def closing?
if !new_record? && status_id_changed?
- status_was = IssueStatus.find_by_id(status_id_was)
- status_new = IssueStatus.find_by_id(status_id)
- if status_was && status_new && !status_was.is_closed? && status_new.is_closed?
+ if status_was && status && !status_was.is_closed? && status.is_closed?
return true
end
end
assert !issue.closed?
assert_equal was_closed_on, issue.closed_on
end
+
+ def test_status_was_should_return_nil_for_new_issue
+ issue = Issue.new
+ assert_nil issue.status_was
+ end
+
+ def test_status_was_should_return_status_before_change
+ issue = Issue.find(1)
+ issue.status = IssueStatus.find(2)
+ assert_equal IssueStatus.find(1), issue.status_was
+ end
+
+ def test_status_was_should_be_reset_on_save
+ issue = Issue.find(1)
+ issue.status = IssueStatus.find(2)
+ assert_equal IssueStatus.find(1), issue.status_was
+ assert issue.save!
+ assert_equal IssueStatus.find(2), issue.status_was
+ end
end