]> source.dussan.org Git - redmine.git/commitdiff
Code cleanup.
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Thu, 9 Aug 2012 16:43:12 +0000 (16:43 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Thu, 9 Aug 2012 16:43:12 +0000 (16:43 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10180 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/controllers/auto_completes_controller.rb
app/views/issue_relations/_form.html.erb
app/views/issues/_attributes.html.erb
test/functional/auto_completes_controller_test.rb

index 203dae4e7b4e5ef4182e8397da281a02ce9b0730..1bbcd33f822a98d0ed2ed0bb34b82a3beacc4bc8 100644 (file)
@@ -20,25 +20,23 @@ class AutoCompletesController < ApplicationController
 
   def issues
     @issues = []
-    q = (params[:q] || params[:term]).to_s
-    query = (params[:scope] == "all" && Setting.cross_project_issue_relations?) ? Issue : @project.issues
-    if q.match(/^\d+$/)
-      @issues << query.visible.find_by_id(q.to_i)
+    q = (params[:q] || params[:term]).to_s.strip
+    if q.present?
+      scope = (params[:scope] == "all" ? Issue : @project.issues).visible
+      if q.match(/^\d+$/)
+        @issues << scope.find_by_id(q.to_i)
+      end
+      @issues += scope.where("LOWER(#{Issue.table_name}.subject) LIKE ?", "%#{q.downcase}%").order("#{Issue.table_name}.id DESC").limit(10).all
+      @issues.compact!
     end
-    unless q.blank?
-      @issues += query.visible.find(:all, :conditions => ["LOWER(#{Issue.table_name}.subject) LIKE ?", "%#{q.downcase}%"], :limit => 10)
-    end
-    @issues.compact!
     render :layout => false
   end
 
   private
 
   def find_project
-    project_id = (params[:issue] && params[:issue][:project_id]) || params[:project_id]
-    @project = Project.find(project_id)
+    @project = Project.find(params[:project_id])
   rescue ActiveRecord::RecordNotFound
     render_404
   end
-
 end
index efd58b3eed3257a47e8e96190428fe046789485f..a1db3802fde6b59cbeb48b23f55abfa2c0f90249 100644 (file)
@@ -9,6 +9,6 @@
 <%= toggle_link l(:button_cancel), 'new-relation-form'%>
 </p>
 
-<%= javascript_tag "observeAutocompleteField('relation_issue_to_id', '#{escape_javascript auto_complete_issues_path(:id => @issue, :project_id => @project, :scope => 'all')}')" %>
+<%= javascript_tag "observeAutocompleteField('relation_issue_to_id', '#{escape_javascript auto_complete_issues_path(:project_id => @project, :scope => (Setting.cross_project_issue_relations? ? 'all' : nil))}')" %>
 
 <%= javascript_tag "setPredecessorFieldsVisibility();" %>
index a80fac9ce2e756035b6d6494d54ea1365f4bc237..8bf7dc0aef2627eb4686bec716259f4ae17043cb 100644 (file)
@@ -43,7 +43,7 @@
 <div class="splitcontentright">
 <% if @issue.safe_attribute? 'parent_issue_id' %>
 <p id="parent_issue"><%= f.text_field :parent_issue_id, :size => 10, :required => @issue.required_attribute?('parent_issue_id') %></p>
-<%= javascript_tag "observeAutocompleteField('issue_parent_issue_id', '#{escape_javascript auto_complete_issues_path(:id => @issue, :project_id => @issue.project)}')" %>
+<%= javascript_tag "observeAutocompleteField('issue_parent_issue_id', '#{escape_javascript auto_complete_issues_path(:project_id => @issue.project)}')" %>
 <% end %>
 
 <% if @issue.safe_attribute? 'start_date' %>
index 19d90fa96da99f2653ce6b50276e2c2ea55d8a2f..554d52088b862a3308c9bac8c1a7481656ed0658 100644 (file)
@@ -19,6 +19,13 @@ class AutoCompletesControllerTest < ActionController::TestCase
     assert assigns(:issues).detect {|issue| issue.subject.match /recipe/}
   end
 
+  def test_issues_should_accept_term_param
+    get :issues, :project_id => 'ecookbook', :term => 'ReCiPe'
+    assert_response :success
+    assert_not_nil assigns(:issues)
+    assert assigns(:issues).detect {|issue| issue.subject.match /recipe/}
+  end
+
   def test_issues_should_return_issue_with_given_id
     get :issues, :project_id => 'subproject1', :q => '13'
     assert_response :success
@@ -26,18 +33,28 @@ class AutoCompletesControllerTest < ActionController::TestCase
     assert assigns(:issues).include?(Issue.find(13))
   end
 
-  def test_auto_complete_with_scope_all_and_cross_project_relations
-    Setting.cross_project_issue_relations = '1'
+  def test_auto_complete_with_scope_all_should_search_other_projects
     get :issues, :project_id => 'ecookbook', :q => '13', :scope => 'all'
     assert_response :success
     assert_not_nil assigns(:issues)
     assert assigns(:issues).include?(Issue.find(13))
   end
 
-  def test_auto_complete_with_scope_all_without_cross_project_relations
-    Setting.cross_project_issue_relations = '0'
-    get :issues, :project_id => 'ecookbook', :q => '13', :scope => 'all'
+  def test_auto_complete_without_scope_all_should_not_search_other_projects
+    get :issues, :project_id => 'ecookbook', :q => '13'
     assert_response :success
     assert_equal [], assigns(:issues)
   end
+
+  def test_issues_should_return_json
+    get :issues, :project_id => 'subproject1', :q => '13'
+    assert_response :success
+    json = ActiveSupport::JSON.decode(response.body)
+    assert_kind_of Array, json
+    issue = json.first
+    assert_kind_of Hash, issue
+    assert_equal 13, issue['id']
+    assert_equal 13, issue['value']
+    assert_equal 'Bug #13: Subproject issue two', issue['label']
+  end
 end