When moving an issue to another project, reassign it to the category with same name if any (#1653).

git-svn-id: http://redmine.rubyforge.org/svn/trunk@1697 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang 2008-07-26 09:27:07 +00:00
parent 6ddea3396b
commit b68fd4c04b
3 changed files with 20 additions and 4 deletions

View File

@ -77,7 +77,9 @@ class Issue < ActiveRecord::Base
self.relations_to.clear
end
# issue is moved to another project
self.category = nil
# reassign to the category with same name if any
new_category = category.nil? ? nil : new_project.issue_categories.find_by_name(category.name)
self.category = new_category
self.fixed_version = nil
self.project = new_project
end

View File

@ -14,4 +14,9 @@ issue_categories_003:
project_id: 2
assigned_to_id:
id: 3
issue_categories_004:
name: Printing
project_id: 2
assigned_to_id:
id: 4

View File

@ -165,17 +165,26 @@ class IssueTest < Test::Unit::TestCase
assert !issue1.reload.closed?
end
def test_move_to_another_project
def test_move_to_another_project_with_same_category
issue = Issue.find(1)
assert issue.move_to(Project.find(2))
issue.reload
assert_equal 2, issue.project_id
# Category removed
assert_nil issue.category
# Category changes
assert_equal 4, issue.category_id
# Make sure time entries were move to the target project
assert_equal 2, issue.time_entries.first.project_id
end
def test_move_to_another_project_without_same_category
issue = Issue.find(2)
assert issue.move_to(Project.find(2))
issue.reload
assert_equal 2, issue.project_id
# Category cleared
assert_nil issue.category_id
end
def test_issue_destroy
Issue.find(1).destroy
assert_nil Issue.find_by_id(1)