@@ -616,9 +616,17 class Query < ActiveRecord::Base | |||||
616 | sql = "#{db_table}.#{db_field} IS NOT NULL" |
|
616 | sql = "#{db_table}.#{db_field} IS NOT NULL" | |
617 | sql << " AND #{db_table}.#{db_field} <> ''" if is_custom_filter |
|
617 | sql << " AND #{db_table}.#{db_field} <> ''" if is_custom_filter | |
618 | when ">=" |
|
618 | when ">=" | |
619 | sql = "#{db_table}.#{db_field} >= #{value.first.to_i}" |
|
619 | if is_custom_filter | |
|
620 | sql = "CAST(#{db_table}.#{db_field} AS decimal(60,3)) >= #{value.first.to_i}" | |||
|
621 | else | |||
|
622 | sql = "#{db_table}.#{db_field} >= #{value.first.to_i}" | |||
|
623 | end | |||
620 | when "<=" |
|
624 | when "<=" | |
621 | sql = "#{db_table}.#{db_field} <= #{value.first.to_i}" |
|
625 | if is_custom_filter | |
|
626 | sql = "CAST(#{db_table}.#{db_field} AS decimal(60,3)) <= #{value.first.to_i}" | |||
|
627 | else | |||
|
628 | sql = "#{db_table}.#{db_field} <= #{value.first.to_i}" | |||
|
629 | end | |||
622 | when "o" |
|
630 | when "o" | |
623 | sql = "#{IssueStatus.table_name}.is_closed=#{connection.quoted_false}" if field == "status_id" |
|
631 | sql = "#{IssueStatus.table_name}.is_closed=#{connection.quoted_false}" if field == "status_id" | |
624 | when "c" |
|
632 | when "c" |
@@ -107,6 +107,29 class QueryTest < ActiveSupport::TestCase | |||||
107 | assert query.statement.include?("#{Issue.table_name}.done_ratio >= 40") |
|
107 | assert query.statement.include?("#{Issue.table_name}.done_ratio >= 40") | |
108 | find_issues_with_query(query) |
|
108 | find_issues_with_query(query) | |
109 | end |
|
109 | end | |
|
110 | ||||
|
111 | def test_operator_greater_than_on_custom_field | |||
|
112 | f = IssueCustomField.create!(:name => 'filter', :field_format => 'int', :is_filter => true, :is_for_all => true) | |||
|
113 | query = Query.new(:project => Project.find(1), :name => '_') | |||
|
114 | query.add_filter("cf_#{f.id}", '>=', ['40']) | |||
|
115 | assert query.statement.include?("CAST(custom_values.value AS decimal(60,3)) >= 40") | |||
|
116 | find_issues_with_query(query) | |||
|
117 | end | |||
|
118 | ||||
|
119 | def test_operator_lesser_than | |||
|
120 | query = Query.new(:project => Project.find(1), :name => '_') | |||
|
121 | query.add_filter('done_ratio', '<=', ['30']) | |||
|
122 | assert query.statement.include?("#{Issue.table_name}.done_ratio <= 30") | |||
|
123 | find_issues_with_query(query) | |||
|
124 | end | |||
|
125 | ||||
|
126 | def test_operator_lesser_than_on_custom_field | |||
|
127 | f = IssueCustomField.create!(:name => 'filter', :field_format => 'int', :is_filter => true, :is_for_all => true) | |||
|
128 | query = Query.new(:project => Project.find(1), :name => '_') | |||
|
129 | query.add_filter("cf_#{f.id}", '<=', ['30']) | |||
|
130 | assert query.statement.include?("CAST(custom_values.value AS decimal(60,3)) <= 30") | |||
|
131 | find_issues_with_query(query) | |||
|
132 | end | |||
110 |
|
133 | |||
111 | def test_operator_in_more_than |
|
134 | def test_operator_in_more_than | |
112 | Issue.find(7).update_attribute(:due_date, (Date.today + 15)) |
|
135 | Issue.find(7).update_attribute(:due_date, (Date.today + 15)) |
General Comments 0
You need to be logged in to leave comments.
Login now