From dd42324ce059549606f490bdf5c195d852588e27 Mon Sep 17 00:00:00 2001 From: Ko Nagase Date: Sat, 17 Dec 2022 05:20:54 +0000 Subject: Patch for 2022-10-22-issue-filter --- app/models/query.rb | 1 + test/unit/query_test.rb | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/app/models/query.rb b/app/models/query.rb index 3313248c4..6459f6c02 100644 --- a/app/models/query.rb +++ b/app/models/query.rb @@ -1427,6 +1427,7 @@ class Query < ActiveRecord::Base sql = sql_contains("#{db_table}.#{db_field}", value.first) when "!~" sql = sql_contains("#{db_table}.#{db_field}", value.first, :match => false) + sql += " OR #{db_table}.#{db_field} IS NULL" if is_custom_filter when "^" sql = sql_contains("#{db_table}.#{db_field}", value.first, :starts_with => true) when "$" diff --git a/test/unit/query_test.rb b/test/unit/query_test.rb index e4ac5bd6f..a64e2c01b 100644 --- a/test/unit/query_test.rb +++ b/test/unit/query_test.rb @@ -710,6 +710,15 @@ class QueryTest < ActiveSupport::TestCase assert_not_include issue, result end + def test_operator_does_not_contain_on_text_custom_field + query = IssueQuery.new(:name => '_') + query.filters = {"cf_2" => {:operator => '!~', :values => ['125']}} + result = find_issues_with_query(query) + # "cf_2" (Searchable field) custom field's available trackers are only 1:Bug and 3:Support request. + # 8(Issue.visible.where(tracker: [1,3])) - 2(contain "125") = 6(not contain "125") + assert_equal 6, result.size + end + def test_range_for_this_week_with_week_starting_on_monday I18n.locale = :fr assert_equal '1', I18n.t(:general_first_day_of_week) -- 2.38.2