diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2009-06-28 12:12:27 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2009-06-28 12:12:27 +0000 |
commit | a7bb63a18280e7eaef80c1bbd4d91c8935fcd4c9 (patch) | |
tree | 496e509303b28da114ae60e2b96984504987a8b4 | |
parent | aa07e8505ee32decc7cee64a0d5f850feb8187fb (diff) | |
download | redmine-a7bb63a18280e7eaef80c1bbd4d91c8935fcd4c9.tar.gz redmine-a7bb63a18280e7eaef80c1bbd4d91c8935fcd4c9.zip |
Fixed: case sensitivity in issue subject filtering (#3536).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2796 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r-- | app/models/query.rb | 4 | ||||
-rw-r--r-- | test/unit/query_test.rb | 12 |
2 files changed, 9 insertions, 7 deletions
diff --git a/app/models/query.rb b/app/models/query.rb index 4e5799fbb..7ce95f0ea 100644 --- a/app/models/query.rb +++ b/app/models/query.rb @@ -424,9 +424,9 @@ class Query < ActiveRecord::Base Time.now.at_beginning_of_week sql = "#{db_table}.#{db_field} BETWEEN '%s' AND '%s'" % [connection.quoted_date(from), connection.quoted_date(from + 7.days)] when "~" - sql = "#{db_table}.#{db_field} LIKE '%#{connection.quote_string(value.first)}%'" + sql = "LOWER(#{db_table}.#{db_field}) LIKE '%#{connection.quote_string(value.first.to_s.downcase)}%'" when "!~" - sql = "#{db_table}.#{db_field} NOT LIKE '%#{connection.quote_string(value.first)}%'" + sql = "LOWER(#{db_table}.#{db_field}) NOT LIKE '%#{connection.quote_string(value.first.to_s.downcase)}%'" end return sql diff --git a/test/unit/query_test.rb b/test/unit/query_test.rb index e12bac8d7..73efa426f 100644 --- a/test/unit/query_test.rb +++ b/test/unit/query_test.rb @@ -150,15 +150,17 @@ class QueryTest < Test::Unit::TestCase def test_operator_contains query = Query.new(:project => Project.find(1), :name => '_') - query.add_filter('subject', '~', ['string']) - assert query.statement.include?("#{Issue.table_name}.subject LIKE '%string%'") - find_issues_with_query(query) + query.add_filter('subject', '~', ['uNable']) + assert query.statement.include?("LOWER(#{Issue.table_name}.subject) LIKE '%unable%'") + result = find_issues_with_query(query) + assert result.empty? + result.each {|issue| assert issue.subject.downcase.include?('unable') } end def test_operator_does_not_contains query = Query.new(:project => Project.find(1), :name => '_') - query.add_filter('subject', '!~', ['string']) - assert query.statement.include?("#{Issue.table_name}.subject NOT LIKE '%string%'") + query.add_filter('subject', '!~', ['uNable']) + assert query.statement.include?("LOWER(#{Issue.table_name}.subject) NOT LIKE '%unable%'") find_issues_with_query(query) end |