Commit d27b90de authored by jplang's avatar jplang

Adding a subtask should default to a tracker without disabled parent field (#16260).

git-svn-id: https://svn.redmine.org/redmine/trunk@16383 e93f8b46-1217-0410-a6f0-8f06a7374b81
parent 962a90b6
......@@ -530,10 +530,17 @@ class Issue < ActiveRecord::Base
self.tracker_id = t
end
end
if project
if project && tracker.nil?
# Set a default tracker to accept custom field values
# even if tracker is not specified
self.tracker ||= allowed_target_trackers(user).first
allowed_trackers = allowed_target_trackers(user)
if attrs['parent_issue_id'].present?
# If parent_issue_id is present, the first tracker for which this field
# is not disabled is chosen as default
self.tracker = allowed_trackers.detect {|t| t.core_fields.include?('parent_issue_id')}
end
self.tracker ||= allowed_trackers.first
end
statuses_allowed = new_statuses_allowed_to(user)
......
......@@ -1920,6 +1920,32 @@ class IssuesControllerTest < Redmine::ControllerTest
end
end
def test_new_should_default_to_first_tracker
@request.session[:user_id] = 2
get :new, :project_id => 1
assert_response :success
assert_select 'select[name=?]', 'issue[tracker_id]' do
assert_select 'option', 3
assert_select 'option[value="1"][selected=selected]'
end
end
def test_new_with_parent_issue_id_should_default_to_first_tracker_without_disabled_parent_field
tracker = Tracker.find(1)
tracker.core_fields -= ['parent_issue_id']
tracker.save!
@request.session[:user_id] = 2
get :new, :project_id => 1, :issue => {:parent_issue_id => 1}
assert_response :success
assert_select 'select[name=?]', 'issue[tracker_id]' do
assert_select 'option', 2
assert_select 'option[value="2"][selected=selected]'
assert_select 'option[value="1"]', 0
end
end
def test_new_without_allowed_trackers_should_respond_with_403
role = Role.find(1)
role.set_permission_trackers 'add_issues', []
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment