##// END OF EJS Templates
Make sure there's no nil result in auto_complete....
Jean-Philippe Lang -
r4389:29e0bca43a6d
parent child
Show More
@@ -1,26 +1,27
1 1 class AutoCompletesController < ApplicationController
2 2 before_filter :find_project
3 3
4 4 def issues
5 5 @issues = []
6 6 q = params[:q].to_s
7 7 query = (params[:scope] == "all" && Setting.cross_project_issue_relations?) ? Issue : @project.issues
8 8 if q.match(/^\d+$/)
9 9 @issues << query.visible.find_by_id(q.to_i)
10 10 end
11 11 unless q.blank?
12 12 @issues += query.visible.find(:all, :conditions => ["LOWER(#{Issue.table_name}.subject) LIKE ?", "%#{q.downcase}%"], :limit => 10)
13 13 end
14 @issues.compact!
14 15 render :layout => false
15 16 end
16 17
17 18 private
18 19
19 20 def find_project
20 21 project_id = (params[:issue] && params[:issue][:project_id]) || params[:project_id]
21 22 @project = Project.find(project_id)
22 23 rescue ActiveRecord::RecordNotFound
23 24 render_404
24 25 end
25 26
26 27 end
@@ -1,34 +1,34
1 1 require File.dirname(__FILE__) + '/../test_helper'
2 2
3 3 class AutoCompletesControllerTest < ActionController::TestCase
4 4 fixtures :all
5 5
6 6 def test_issues_should_not_be_case_sensitive
7 7 get :issues, :project_id => 'ecookbook', :q => 'ReCiPe'
8 8 assert_response :success
9 9 assert_not_nil assigns(:issues)
10 10 assert assigns(:issues).detect {|issue| issue.subject.match /recipe/}
11 11 end
12 12
13 13 def test_issues_should_return_issue_with_given_id
14 14 get :issues, :project_id => 'subproject1', :q => '13'
15 15 assert_response :success
16 16 assert_not_nil assigns(:issues)
17 17 assert assigns(:issues).include?(Issue.find(13))
18 18 end
19 19
20 20 def test_auto_complete_with_scope_all_and_cross_project_relations
21 21 Setting.cross_project_issue_relations = '1'
22 22 get :issues, :project_id => 'ecookbook', :q => '13', :scope => 'all'
23 23 assert_response :success
24 24 assert_not_nil assigns(:issues)
25 25 assert assigns(:issues).include?(Issue.find(13))
26 26 end
27 27
28 28 def test_auto_complete_with_scope_all_without_cross_project_relations
29 29 Setting.cross_project_issue_relations = '0'
30 30 get :issues, :project_id => 'ecookbook', :q => '13', :scope => 'all'
31 31 assert_response :success
32 assert_equal [nil], assigns(:issues)
32 assert_equal [], assigns(:issues)
33 33 end
34 34 end
General Comments 0
You need to be logged in to leave comments. Login now