summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGo MAEDA <maeda@farend.jp>2021-04-13 02:46:21 +0000
committerGo MAEDA <maeda@farend.jp>2021-04-13 02:46:21 +0000
commit5a91e65088783849fd41b562ffad9100e3080caa (patch)
tree4bfcd2f2d9fb34c2bbc623146c3d83b26e748d72
parentf2798f9283402f044dca8845346c90d23313b85d (diff)
downloadredmine-5a91e65088783849fd41b562ffad9100e3080caa.tar.gz
redmine-5a91e65088783849fd41b562ffad9100e3080caa.zip
Merged r20932 from trunk to 4.2-stable (#35039).
git-svn-id: http://svn.redmine.org/redmine/branches/4.2-stable@20935 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r--app/controllers/issue_relations_controller.rb9
-rw-r--r--test/integration/api_test/issue_relations_test.rb23
2 files changed, 30 insertions, 2 deletions
diff --git a/app/controllers/issue_relations_controller.rb b/app/controllers/issue_relations_controller.rb
index bd605dbae..52be512f1 100644
--- a/app/controllers/issue_relations_controller.rb
+++ b/app/controllers/issue_relations_controller.rb
@@ -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.
diff --git a/test/integration/api_test/issue_relations_test.rb b/test/integration/api_test/issue_relations_test.rb
index cc9a9a13b..80caaa9f4 100644
--- a/test/integration/api_test/issue_relations_test.rb
+++ b/test/integration/api_test/issue_relations_test.rb
@@ -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(