]> source.dussan.org Git - redmine.git/commitdiff
Issue relation: fixes error with postgres when entering a non-numeric id (#4820)...
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Fri, 12 Feb 2010 18:35:31 +0000 (18:35 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Fri, 12 Feb 2010 18:35:31 +0000 (18:35 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3413 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/controllers/issue_relations_controller.rb
test/functional/issue_relations_controller_test.rb

index 8a41c3830523665ad846c50fcd3a13ed916586ff..9ce358584db4c74e710369fb400c95a29b454678 100644 (file)
@@ -21,8 +21,8 @@ class IssueRelationsController < ApplicationController
   def new
     @relation = IssueRelation.new(params[:relation])
     @relation.issue_from = @issue
-    if params[:relation] && !params[:relation][:issue_to_id].blank?
-      @relation.issue_to = Issue.visible.find_by_id(params[:relation][:issue_to_id])
+    if params[:relation] && m = params[:relation][:issue_to_id].to_s.match(/^#?(\d+)$/)
+      @relation.issue_to = Issue.visible.find_by_id(m[1].to_i)
     end
     @relation.save if request.post?
     respond_to do |format|
index cd7af4eb982561e106949799b85e842894832e1f..e8834f1b770abb5683be9da46e266b0b6f773f8d 100644 (file)
@@ -40,6 +40,24 @@ class IssueRelationsControllerTest < ActionController::TestCase
     end
   end
   
+  def test_new_should_accept_id_with_hash
+    assert_difference 'IssueRelation.count' do
+      @request.session[:user_id] = 3
+      post :new, :issue_id => 1, 
+                 :relation => {:issue_to_id => '#2', :relation_type => 'relates', :delay => ''}
+    end
+  end
+  
+  def test_new_should_not_break_with_non_numerical_id
+    assert_no_difference 'IssueRelation.count' do
+      assert_nothing_raised do
+        @request.session[:user_id] = 3
+        post :new, :issue_id => 1, 
+                   :relation => {:issue_to_id => 'foo', :relation_type => 'relates', :delay => ''}
+      end
+    end
+  end
+  
   def test_should_create_relations_with_visible_issues_only
     Setting.cross_project_issue_relations = '1'
     assert_nil Issue.visible(User.find(3)).find_by_id(4)