@@ -58,6 +58,30 class SearchControllerTest < ActionController::TestCase | |||||
58 | :child => { :tag => 'a', :content => /Closed/ } |
|
58 | :child => { :tag => 'a', :content => /Closed/ } | |
59 | end |
|
59 | end | |
60 |
|
60 | |||
|
61 | def test_search_all_projects_with_scope_param | |||
|
62 | get :index, :q => 'issue', :scope => 'all' | |||
|
63 | assert_response :success | |||
|
64 | assert_template 'index' | |||
|
65 | assert assigns(:results).present? | |||
|
66 | end | |||
|
67 | ||||
|
68 | def test_search_my_projects | |||
|
69 | @request.session[:user_id] = 2 | |||
|
70 | get :index, :id => 1, :q => 'recipe subproject', :scope => 'my_projects', :all_words => '' | |||
|
71 | assert_response :success | |||
|
72 | assert_template 'index' | |||
|
73 | assert assigns(:results).include?(Issue.find(1)) | |||
|
74 | assert !assigns(:results).include?(Issue.find(5)) | |||
|
75 | end | |||
|
76 | ||||
|
77 | def test_search_my_projects_without_memberships | |||
|
78 | # anonymous user has no memberships | |||
|
79 | get :index, :id => 1, :q => 'recipe subproject', :scope => 'my_projects', :all_words => '' | |||
|
80 | assert_response :success | |||
|
81 | assert_template 'index' | |||
|
82 | assert assigns(:results).empty? | |||
|
83 | end | |||
|
84 | ||||
61 | def test_search_project_and_subprojects |
|
85 | def test_search_project_and_subprojects | |
62 | get :index, :id => 1, :q => 'recipe subproject', :scope => 'subprojects', :all_words => '' |
|
86 | get :index, :id => 1, :q => 'recipe subproject', :scope => 'subprojects', :all_words => '' | |
63 | assert_response :success |
|
87 | assert_response :success | |
@@ -132,6 +156,22 class SearchControllerTest < ActionController::TestCase | |||||
132 | assert_equal 1, results.size |
|
156 | assert_equal 1, results.size | |
133 | end |
|
157 | end | |
134 |
|
158 | |||
|
159 | def test_search_with_offset | |||
|
160 | get :index, :q => 'coo', :offset => '20080806073000' | |||
|
161 | assert_response :success | |||
|
162 | results = assigns(:results) | |||
|
163 | assert results.any? | |||
|
164 | assert results.map(&:event_datetime).max < '20080806T073000'.to_time | |||
|
165 | end | |||
|
166 | ||||
|
167 | def test_search_previous_with_offset | |||
|
168 | get :index, :q => 'coo', :offset => '20080806073000', :previous => '1' | |||
|
169 | assert_response :success | |||
|
170 | results = assigns(:results) | |||
|
171 | assert results.any? | |||
|
172 | assert results.map(&:event_datetime).min >= '20080806T073000'.to_time | |||
|
173 | end | |||
|
174 | ||||
135 | def test_search_with_invalid_project_id |
|
175 | def test_search_with_invalid_project_id | |
136 | get :index, :id => 195, :q => 'recipe' |
|
176 | get :index, :id => 195, :q => 'recipe' | |
137 | assert_response 404 |
|
177 | assert_response 404 |
@@ -62,6 +62,11 module Redmine | |||||
62 | # projects argument can be either nil (will search all projects), a project or an array of projects |
|
62 | # projects argument can be either nil (will search all projects), a project or an array of projects | |
63 | # Returns the results and the results count |
|
63 | # Returns the results and the results count | |
64 | def search(tokens, projects=nil, options={}) |
|
64 | def search(tokens, projects=nil, options={}) | |
|
65 | if projects.is_a?(Array) && projects.empty? | |||
|
66 | # no results | |||
|
67 | return [[], 0] | |||
|
68 | end | |||
|
69 | ||||
65 | # TODO: make user an argument |
|
70 | # TODO: make user an argument | |
66 | user = User.current |
|
71 | user = User.current | |
67 | tokens = [] << tokens unless tokens.is_a?(Array) |
|
72 | tokens = [] << tokens unless tokens.is_a?(Array) |
General Comments 0
You need to be logged in to leave comments.
Login now