From 3b35e215936c959d3297c384fee0622512bda267 Mon Sep 17 00:00:00 2001 From: Rodrigo Souto Date: Thu, 31 Jul 2014 17:18:02 +0000 Subject: [PATCH] [search-term-improvements] Simple query normalization using downcase --- app/controllers/public/search_controller.rb | 2 +- app/helpers/search_term_helper.rb | 4 ++-- public/javascripts/application.js | 2 +- test/functional/search_controller_test.rb | 8 ++++++++ test/unit/search_term_helper_test.rb | 23 +++++++++++++++++++++++ 5 files changed, 35 insertions(+), 4 deletions(-) create mode 100644 test/unit/search_term_helper_test.rb diff --git a/app/controllers/public/search_controller.rb b/app/controllers/public/search_controller.rb index 5991c64..d94b754 100644 --- a/app/controllers/public/search_controller.rb +++ b/app/controllers/public/search_controller.rb @@ -144,7 +144,7 @@ class SearchController < PublicController end def suggestions - render :text => find_suggestions(params[:term], environment, params[:asset]).to_json + render :text => find_suggestions(normalize_term(params[:term]), environment, params[:asset]).to_json end ####################################################### diff --git a/app/helpers/search_term_helper.rb b/app/helpers/search_term_helper.rb index 10bfa50..0b25a6e 100644 --- a/app/helpers/search_term_helper.rb +++ b/app/helpers/search_term_helper.rb @@ -10,8 +10,8 @@ module SearchTermHelper #FIXME For some reason the job is created but nothing is ran. #handle_asynchronously :register_search_term - #TODO Think better on how to normalize them properly + #TODO Think smarter criteria to normalize search terms properly def normalize_term(search_term) - search_term + search_term.downcase end end diff --git a/public/javascripts/application.js b/public/javascripts/application.js index 00e6039..aa7070c 100644 --- a/public/javascripts/application.js +++ b/public/javascripts/application.js @@ -1070,7 +1070,7 @@ jQuery(document).ready(function(){ $(this).closest('form').submit(); }, source: function(request, response) { - var term = request.term; + var term = request.term.toLowerCase(); if (term in suggestions_cache) { response(suggestions_cache[term]); return; diff --git a/test/functional/search_controller_test.rb b/test/functional/search_controller_test.rb index f2d2e1f..c2c3d51 100644 --- a/test/functional/search_controller_test.rb +++ b/test/functional/search_controller_test.rb @@ -662,6 +662,14 @@ class SearchControllerTest < ActionController::TestCase assert_equal [st1,st2].to_json, response.body end + should 'normalize search term for suggestions' do + st1 = 'UnIvErSe A' + st2 = 'uNiVeRsE B' + @controller.stubs(:find_suggestions).with('universe', Environment.default, 'communities').returns([st1, st2]) + get :suggestions, :term => 'UNIveRSE', :asset => 'communities' + assert_equal [st1,st2].to_json, response.body + end + protected def create_event(profile, options) diff --git a/test/unit/search_term_helper_test.rb b/test/unit/search_term_helper_test.rb new file mode 100644 index 0000000..67fb0a6 --- /dev/null +++ b/test/unit/search_term_helper_test.rb @@ -0,0 +1,23 @@ +require File.dirname(__FILE__) + '/../test_helper' + +class SearchTermTest < ActiveSupport::TestCase + + include SearchTermHelper + + should 'register search term' do + environment = Environment.default + assert_difference 'SearchTerm.count', 1 do + register_search_term('fred mercury', 10, 1, environment, 'people') + end + end + + should 'register search term normalized' do + environment = Environment.default + assert_difference 'SearchTerm.count', 1 do + register_search_term('FrEd mErCuRy', 10, 1, environment, 'people') + register_search_term('fReD MeRcUrY', 10, 1, environment, 'people') + assert SearchTerm.find_or_create('fred mercury', environment, 'people') + end + end + +end -- libgit2 0.21.2