q = (params[:q] || params[:term]).to_s.strip
status = params[:status].to_s
issue_id = params[:issue_id].to_s
+
+ scope = Issue.cross_project_scope(@project, params[:scope]).visible
+ scope = scope.open(status == 'o') if status.present?
+ scope = scope.where.not(:id => issue_id.to_i) if issue_id.present?
if q.present?
- scope = Issue.cross_project_scope(@project, params[:scope]).visible
- if status.present?
- scope = scope.open(status == 'o')
- end
- if issue_id.present?
- scope = scope.where.not(:id => issue_id.to_i)
- end
if q.match(/\A#?(\d+)\z/)
issues << scope.find_by_id($1.to_i)
end
-
issues += scope.like(q).order(:id => :desc).limit(10).to_a
issues.compact!
+ else
+ issues += scope.order(:id => :desc).limit(10).to_a
end
render :json => format_issues_json(issues)
assert_response :success
assert_include 'application/json', response.headers['Content-Type']
end
+
+ def test_auto_complete_without_term_should_return_last_10_updated_issues
+ # There are 9 issues generated by fixtures
+ # and we need two more to test the 10 limit
+ %w(1..2).each do
+ Issue.generate!
+ end
+
+ get :issues
+
+ assert_response :success
+ json = ActiveSupport::JSON.decode(response.body)
+
+ assert_equal 10, json.count
+ assert_equal Issue.last.id, json.first['id'].to_i
+ end
end