summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2014-12-15 19:22:13 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2014-12-15 19:22:13 +0000
commit30175bf85e4d064abcae5ec971bdb9782e7543ac (patch)
tree44ef9f6648b964c4dec5c2df0cee0f3acabe21a6
parent15bb695bbb2cfa6b2e1fcdc5fb77e4e0d22f2ad3 (diff)
downloadredmine-30175bf85e4d064abcae5ec971bdb9782e7543ac.tar.gz
redmine-30175bf85e4d064abcae5ec971bdb9782e7543ac.zip
Restore accent insensitive search with mysql (#18537).
git-svn-id: http://svn.redmine.org/redmine/trunk@13767 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r--lib/plugins/acts_as_searchable/lib/acts_as_searchable.rb2
-rw-r--r--test/test_helper.rb4
-rw-r--r--test/unit/search_test.rb31
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