From 37e01cab84cb69580cb62d8089a6af887919103a Mon Sep 17 00:00:00 2001 From: Dominik Klein Date: Tue, 14 Sep 2021 15:10:49 +0200 Subject: [PATCH] Fixes #3378 - Spaces stay URL-encoded when going back to search results on KB for agents. --- .../knowledge_base/search_controller.coffee | 3 +- .../knowledge_base/locale/search_spec.rb | 37 +++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 spec/system/knowledge_base/locale/search_spec.rb diff --git a/app/assets/javascripts/app/controllers/knowledge_base/search_controller.coffee b/app/assets/javascripts/app/controllers/knowledge_base/search_controller.coffee index 1ce434f62..dec51c7c1 100644 --- a/app/assets/javascripts/app/controllers/knowledge_base/search_controller.coffee +++ b/app/assets/javascripts/app/controllers/knowledge_base/search_controller.coffee @@ -14,7 +14,8 @@ class App.KnowledgeBaseSearchController extends App.Controller return_path: @parentController.getKnowledgeBase().uiUrl(@parentController.kb_locale(), 'search') ) - if query = @parentController.lastParams.arguments + if @parentController.lastParams.arguments + query = decodeURIComponent(@parentController.lastParams.arguments) @searchFieldPanel.widget.startSearch(query) @searchFieldPanel.widget.focus() diff --git a/spec/system/knowledge_base/locale/search_spec.rb b/spec/system/knowledge_base/locale/search_spec.rb new file mode 100644 index 000000000..699fb710a --- /dev/null +++ b/spec/system/knowledge_base/locale/search_spec.rb @@ -0,0 +1,37 @@ +# Copyright (C) 2012-2021 Zammad Foundation, http://zammad-foundation.org/ + +require 'rails_helper' + +RSpec.describe 'Knowledge Base Locale Search', type: :system do + include_context 'basic Knowledge Base' + + let!(:answer_for_search) { create(:knowledge_base_answer, category: category, translation_attributes: { title: 'A example title' }) } + + context 'when search query is directly used inside the url' do + let(:search_query) { nil } + + before do + visit "#knowledge_base/#{knowledge_base.id}/locale/#{locale_name}/search/#{search_query}" + end + + shared_examples 'check search result' do + it 'answer exists in search result' do + within :active_content do + expect(page).to have_css('.knowledge-base-main .section', text: answer_for_search.translations.first.title) + end + end + end + + context 'when search query is a single word' do + let(:search_query) { 'Example' } + + include_examples 'check search result' + end + + context 'when search query has encoded characters' do + let(:search_query) { 'A%20Example' } + + include_examples 'check search result' + end + end +end