From 30175bf85e4d064abcae5ec971bdb9782e7543ac Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Mon, 15 Dec 2014 19:22:13 +0000 Subject: [PATCH] Restore accent insensitive search with mysql (#18537). git-svn-id: http://svn.redmine.org/redmine/trunk@13767 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- .../lib/acts_as_searchable.rb | 2 -- test/test_helper.rb | 4 +++ test/unit/search_test.rb | 31 ++++++++++++------- 3 files changed, 24 insertions(+), 13 deletions(-) diff --git a/lib/plugins/acts_as_searchable/lib/acts_as_searchable.rb b/lib/plugins/acts_as_searchable/lib/acts_as_searchable.rb index ad1ef122c..35ee265de 100644 --- a/lib/plugins/acts_as_searchable/lib/acts_as_searchable.rb +++ b/lib/plugins/acts_as_searchable/lib/acts_as_searchable.rb @@ -121,8 +121,6 @@ module Redmine case connection.adapter_name when /postgresql/i "#{column} ILIKE #{value}" - when /mysql/i - "LOWER(#{column}) COLLATE utf8_bin LIKE LOWER(#{value})" else "#{column} LIKE #{value}" end diff --git a/test/test_helper.rb b/test/test_helper.rb index 4677bd7fe..2416609a6 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -167,6 +167,10 @@ class ActiveSupport::TestCase ActiveRecord::Base.connection.adapter_name =~ /sqlite/i end + def mysql? + ActiveRecord::Base.connection.adapter_name =~ /mysql/i + end + def assert_save(object) saved = object.save message = "#{object.class} could not be saved" diff --git a/test/unit/search_test.rb b/test/unit/search_test.rb index 7959851bc..45eb2bd33 100644 --- a/test/unit/search_test.rb +++ b/test/unit/search_test.rb @@ -149,17 +149,26 @@ class SearchTest < ActiveSupport::TestCase assert_include issue, r end - def test_search_should_not_use_ruby_downcase - skip "SQLite does not support case insensitive match for non-ASCII characters" if sqlite? - issue1 = Issue.generate!(:subject => "Special chars: ÖÖ") - issue2 = Issue.generate!(:subject => "Special chars: Öö") - Issue.generate!(:subject => "Special chars: oo") - Issue.generate!(:subject => "Special chars: OO") - - r = Issue.search_results('ÖÖ') - assert_include issue1, r - assert_include issue2, r - assert_equal 2, r.size + def test_search_should_be_case_insensitive_with_accented_characters + unless sqlite? + issue1 = Issue.generate!(:subject => "Special chars: ÖÖ") + issue2 = Issue.generate!(:subject => "Special chars: Öö") + + r = Issue.search_results('ÖÖ') + assert_include issue1, r + assert_include issue2, r + end + end + + def test_search_should_be_case_and_accent_insensitive_with_mysql + if mysql? + issue1 = Issue.generate!(:subject => "OO") + issue2 = Issue.generate!(:subject => "oo") + + r = Issue.search_results('ÖÖ') + assert_include issue1, r + assert_include issue2, r + end end private -- 2.39.5