]> source.dussan.org Git - redmine.git/commitdiff
Fix undefined method 'split' when issue_to_id is numeric (#35039).
authorGo MAEDA <maeda@farend.jp>
Mon, 12 Apr 2021 09:20:02 +0000 (09:20 +0000)
committerGo MAEDA <maeda@farend.jp>
Mon, 12 Apr 2021 09:20:02 +0000 (09:20 +0000)
Patch by  Marius BALTEANU.

git-svn-id: http://svn.redmine.org/redmine/trunk@20932 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/controllers/issue_relations_controller.rb
test/integration/api_test/issue_relations_test.rb

index bd605dbae346eb5ce59deaac133331784b3ddb10..52be512f16f5fd503eaf1e047ded056c06ac5450 100644 (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.
index cc9a9a13bf19fb87a4b849cd4c7050f550613c63..80caaa9f4ec301393fe83caf111a3b4bc687c29e 100644 (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(