From 0f9b2c84a613ffc4c133916f8abc0a6526a5fdad Mon Sep 17 00:00:00 2001 From: Marius BALTEANU Date: Sun, 3 Feb 2019 16:17:23 +0000 Subject: [PATCH] Issues autocomplete should response with content type json and not html --- app/controllers/auto_completes_controller.rb | 20 +++++++++++++++----- app/views/auto_completes/issues.html.erb | 7 ------- test/functional/auto_completes_controller_test.rb | 10 ++++++++++ 3 files changed, 25 insertions(+), 12 deletions(-) delete mode 100644 app/views/auto_completes/issues.html.erb diff --git a/app/controllers/auto_completes_controller.rb b/app/controllers/auto_completes_controller.rb index 293ac20..2d707f9 100644 --- a/app/controllers/auto_completes_controller.rb +++ b/app/controllers/auto_completes_controller.rb @@ -19,7 +19,7 @@ class AutoCompletesController < ApplicationController before_action :find_project def issues - @issues = [] + issues = [] q = (params[:q] || params[:term]).to_s.strip status = params[:status].to_s issue_id = params[:issue_id].to_s @@ -32,13 +32,14 @@ class AutoCompletesController < ApplicationController scope = scope.where.not(:id => issue_id.to_i) end if q.match(/\A#?(\d+)\z/) - @issues << scope.find_by_id($1.to_i) + issues << scope.find_by_id($1.to_i) end - @issues += scope.like(q).order(:id => :desc).limit(10).to_a - @issues.compact! + issues += scope.like(q).order(:id => :desc).limit(10).to_a + issues.compact! end - render :layout => false + + render :json => format_issues_json(issues) end private @@ -50,4 +51,13 @@ class AutoCompletesController < ApplicationController rescue ActiveRecord::RecordNotFound render_404 end + + def format_issues_json(issues) + issues.map {|issue| { + 'id' => issue.id, + 'label' => "#{issue.tracker} ##{issue.id}: #{issue.subject.to_s.truncate(60)}", + 'value' => issue.id + } + } + end end diff --git a/app/views/auto_completes/issues.html.erb b/app/views/auto_completes/issues.html.erb deleted file mode 100644 index 35f9387..0000000 --- a/app/views/auto_completes/issues.html.erb +++ /dev/null @@ -1,7 +0,0 @@ -<%= raw @issues.map {|issue| { - 'id' => issue.id, - 'label' => "#{issue.tracker} ##{issue.id}: #{issue.subject.to_s.truncate(60)}", - 'value' => issue.id - } - }.to_json -%> diff --git a/test/functional/auto_completes_controller_test.rb b/test/functional/auto_completes_controller_test.rb index f4f8b4f..4be1881 100644 --- a/test/functional/auto_completes_controller_test.rb +++ b/test/functional/auto_completes_controller_test.rb @@ -138,4 +138,14 @@ class AutoCompletesControllerTest < Redmine::ControllerTest assert_include "issue", response.body assert_not_include "Bug #12: Closed issue on a locked version", response.body end + + def test_auto_complete_should_return_json_content_type_response + get :issues, :params => { + :project_id => 'subproject1', + :q => '#13' + } + + assert_response :success + assert_include 'application/json', response.headers['Content-Type'] + end end -- 2.1.4