summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2017-03-07 17:51:27 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2017-03-07 17:51:27 +0000
commit58ee62e23990799f1c6d733e1a9a7f046d004816 (patch)
tree3ccecb90e8dee903a424a96fdfc14f5a75898447
parent29ad5b31e0721cb0194ef019289dba265e116f45 (diff)
downloadredmine-58ee62e23990799f1c6d733e1a9a7f046d004816.tar.gz
redmine-58ee62e23990799f1c6d733e1a9a7f046d004816.zip
Issue description filter's 'none' operator does not match issues with blank descriptions (#25077).
Patch by Marius BALTEANU. git-svn-id: http://svn.redmine.org/redmine/trunk@16378 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r--app/models/query.rb4
-rw-r--r--test/unit/query_test.rb12
2 files changed, 14 insertions, 2 deletions
diff --git a/app/models/query.rb b/app/models/query.rb
index 4f183329a..321821a93 100644
--- a/app/models/query.rb
+++ b/app/models/query.rb
@@ -984,7 +984,7 @@ class Query < ActiveRecord::Base
" SELECT customized_id FROM #{CustomValue.table_name}" +
" WHERE customized_type='#{target_class}' AND custom_field_id=#{chained_custom_field_id}" +
" AND #{sql_for_field(field, operator, value, CustomValue.table_name, 'value')}))"
-
+
end
def sql_for_custom_field_attribute(field, operator, value, custom_field_id, attribute)
@@ -1048,7 +1048,7 @@ class Query < ActiveRecord::Base
end
when "!*"
sql = "#{db_table}.#{db_field} IS NULL"
- sql << " OR #{db_table}.#{db_field} = ''" if is_custom_filter
+ sql << " OR #{db_table}.#{db_field} = ''" if (is_custom_filter || [:text, :string].include?(type_for(field)))
when "*"
sql = "#{db_table}.#{db_field} IS NOT NULL"
sql << " AND #{db_table}.#{db_field} <> ''" if is_custom_filter
diff --git a/test/unit/query_test.rb b/test/unit/query_test.rb
index 5a3283900..7f2ef3d1c 100644
--- a/test/unit/query_test.rb
+++ b/test/unit/query_test.rb
@@ -217,6 +217,18 @@ class QueryTest < ActiveSupport::TestCase
assert issues.all? {|i| i.custom_field_value(2).blank?}
end
+ def test_operator_none_for_text
+ query = IssueQuery.new(:name => '_')
+ query.add_filter('status_id', '*', [''])
+ query.add_filter('description', '!*', [''])
+ assert query.has_filter?('description')
+ issues = find_issues_with_query(query)
+
+ assert issues.any?
+ assert issues.all? {|i| i.description.blank?}
+ assert_equal [11, 12], issues.map(&:id).sort
+ end
+
def test_operator_all
query = IssueQuery.new(:project => Project.find(1), :name => '_')
query.add_filter('fixed_version_id', '*', [''])