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)
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', []