From: Jean-Philippe Lang
<%= f.select :project_id, project_tree_options_for_select(@issue.allowed_target_projects, :selected => @issue.project), {:required => true}, :onchange => "updateIssueFrom('#{escape_javascript update_issue_form_path(@project, @issue)}', this)" %>
<% end %> diff --git a/test/functional/issues_controller_test.rb b/test/functional/issues_controller_test.rb index f3812a936..9f34d2a53 100644 --- a/test/functional/issues_controller_test.rb +++ b/test/functional/issues_controller_test.rb @@ -3267,6 +3267,7 @@ class IssuesControllerTest < ActionController::TestCase assert_not_nil assigns(:issue) assert_equal Issue.find(1), assigns(:issue) + assert_select 'select[name=?]', 'issue[project_id]' # Be sure we don't display inactive IssuePriorities assert ! IssuePriority.find(15).active? assert_select 'select[name=?]', 'issue[priority_id]' do @@ -3274,6 +3275,25 @@ class IssuesControllerTest < ActionController::TestCase end end + def test_edit_should_hide_project_if_user_is_not_allowed_to_change_project + WorkflowPermission.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :field_name => 'project_id', :rule => 'readonly') + + @request.session[:user_id] = 2 + get :edit, :id => 1 + assert_response :success + assert_select 'select[name=?]', 'issue[project_id]', 0 + end + + def test_edit_should_not_hide_project_when_user_changes_the_project_even_if_project_is_readonly_on_target_project + WorkflowPermission.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :field_name => 'project_id', :rule => 'readonly') + issue = Issue.generate!(:project_id => 2) + + @request.session[:user_id] = 2 + get :edit, :id => issue.id, :issue => {:project_id => 1} + assert_response :success + assert_select 'select[name=?]', 'issue[project_id]' + end + def test_get_edit_should_display_the_time_entry_form_with_log_time_permission @request.session[:user_id] = 2 Role.find_by_name('Manager').update_attribute :permissions, [:view_issues, :edit_issues, :log_time]