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 ad1ef12..35ee265 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 4677bd7..2416609 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 7959851..45eb2bd 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