From 5bdbd442762eb977883285e9008d6374da446d52 Mon Sep 17 00:00:00 2001 From: Marius BALTEANU Date: Sun, 1 Sep 2019 20:37:05 +0300 Subject: [PATCH 1/2] Issue auto complete should return last 10 updated issues when there is no search term provided --- app/controllers/auto_completes_controller.rb | 14 ++++++-------- .../functional/auto_completes_controller_test.rb | 16 ++++++++++++++++ 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/app/controllers/auto_completes_controller.rb b/app/controllers/auto_completes_controller.rb index f6a1414ad..e83374c9b 100644 --- a/app/controllers/auto_completes_controller.rb +++ b/app/controllers/auto_completes_controller.rb @@ -25,20 +25,18 @@ class AutoCompletesController < ApplicationController 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) diff --git a/test/functional/auto_completes_controller_test.rb b/test/functional/auto_completes_controller_test.rb index 8d815267f..825ebf8e9 100644 --- a/test/functional/auto_completes_controller_test.rb +++ b/test/functional/auto_completes_controller_test.rb @@ -150,4 +150,20 @@ class AutoCompletesControllerTest < Redmine::ControllerTest 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 -- 2.22.0