Adds a "Manage related isses" permission to add/remove commits/issues relations manually from the changeset view (#2009).

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8777 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang
2012-02-05 10:56:27 +00:00
parent c4ea429acb
commit 1d4ef8964d
56 changed files with 209 additions and 16 deletions
+1
View File
@@ -53,6 +53,7 @@ roles_001:
- :browse_repository
- :manage_repository
- :view_changesets
- :manage_related_issues
- :manage_project_activities
position: 1
@@ -160,6 +160,38 @@ class RepositoriesControllerTest < ActionController::TestCase
}
end
def test_add_related_issue
@request.session[:user_id] = 2
assert_difference 'Changeset.find(103).issues.size' do
post :add_related_issue, :id => 1, :rev => 4, :issue_id => 2
assert_response :success
end
assert_select_rjs :replace_html, 'related-issues'
assert_equal [2], Changeset.find(103).issue_ids
end
def test_add_related_issue_with_invalid_issue_id
@request.session[:user_id] = 2
assert_no_difference 'Changeset.find(103).issues.size' do
post :add_related_issue, :id => 1, :rev => 4, :issue_id => 9999
assert_response :success
end
assert_include 'alert("Issue is invalid")', @response.body
end
def test_remove_related_issue
Changeset.find(103).issues << Issue.find(1)
Changeset.find(103).issues << Issue.find(2)
@request.session[:user_id] = 2
assert_difference 'Changeset.find(103).issues.size', -1 do
delete :remove_related_issue, :id => 1, :rev => 4, :issue_id => 2
assert_response :success
end
assert_select_rjs :remove, 'related-issue-2'
assert_equal [1], Changeset.find(103).issue_ids
end
def test_graph_commits_per_month
get :graph, :id => 1, :graph => 'commits_per_month'
assert_response :success
@@ -341,6 +341,32 @@ class RoutingRepositoriesTest < ActionController::IntegrationTest
)
end
def test_repositories_related_issues
assert_routing(
{ :method => 'post',
:path => "/projects/redmine/repository/revisions/123/issues" },
{ :controller => 'repositories', :action => 'add_related_issue', :id => 'redmine', :rev => '123' }
)
assert_routing(
{ :method => 'delete',
:path => "/projects/redmine/repository/revisions/123/issues/25" },
{ :controller => 'repositories', :action => 'remove_related_issue', :id => 'redmine', :rev => '123', :issue_id => '25' }
)
end
def test_repositories_related_issues_with_repository_id
assert_routing(
{ :method => 'post',
:path => "/projects/redmine/repository/foo/revisions/123/issues" },
{ :controller => 'repositories', :action => 'add_related_issue', :id => 'redmine', :repository_id => 'foo', :rev => '123' }
)
assert_routing(
{ :method => 'delete',
:path => "/projects/redmine/repository/foo/revisions/123/issues/25" },
{ :controller => 'repositories', :action => 'remove_related_issue', :id => 'redmine', :repository_id => 'foo', :rev => '123', :issue_id => '25' }
)
end
private
def repository_path_hash(arr)