Fix undefined method 'split' when issue_to_id is numeric (#35039).

Patch by  Marius BALTEANU.


git-svn-id: http://svn.redmine.org/redmine/trunk@20932 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Go MAEDA
2021-04-12 09:20:02 +00:00
parent 2c773d6393
commit 5b95f064e0
2 changed files with 30 additions and 2 deletions

View File

@@ -107,7 +107,14 @@ class IssueRelationsController < ApplicationController
end
def relation_issues_to_id
params[:relation].require(:issue_to_id).split(',').reject(&:blank?)
issue_to_id = params[:relation].require(:issue_to_id)
case issue_to_id
when String
issue_to_id = issue_to_id.split(',').reject(&:blank?)
when Integer
issue_to_id = [issue_to_id]
end
issue_to_id
rescue ActionController::ParameterMissing => e
# We return a empty array just to loop once and return a validation error
# ToDo: Find a better method to return an error if the param is missing.

View File

@@ -42,7 +42,7 @@ class Redmine::ApiTest::IssueRelationsTest < Redmine::ApiTest::Base
assert_difference('IssueRelation.count') do
post(
'/issues/2/relations.xml',
:params => {:relation => {:issue_to_id => 7, :relation_type => 'relates'}},
:params => {:relation => {:issue_to_id => "7", :relation_type => 'relates'}},
:headers => credentials('jsmith')
)
end
@@ -57,6 +57,27 @@ class Redmine::ApiTest::IssueRelationsTest < Redmine::ApiTest::Base
assert_select 'relation id', :text => relation.id.to_s
end
test "POST /issues/:issue_id/relations.json with numeric issue to id should create the relation" do
assert_difference('IssueRelation.count') do
post(
'/issues/2/relations.json',
:params => {:relation => {:issue_to_id => 7, :relation_type => 'relates'}},
:headers => credentials('jsmith'),
:as => :json
)
end
relation = IssueRelation.order('id DESC').first
assert_equal 2, relation.issue_from_id
assert_equal 7, relation.issue_to_id
assert_equal 'relates', relation.relation_type
assert_response :created
assert_equal 'application/json', @response.media_type
json = ActiveSupport::JSON.decode(response.body)
assert_equal relation.id, json['relation']['id']
end
test "POST /issues/:issue_id/relations.xml with failure should return errors" do
assert_no_difference('IssueRelation.count') do
post(