Fixed date filters accuracy with SQLite (#2221).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2054 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
+48
-9
@@ -18,7 +18,7 @@
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class QueryTest < Test::Unit::TestCase
|
||||
fixtures :projects, :users, :members, :roles, :trackers, :issue_statuses, :issue_categories, :enumerations, :issues, :custom_fields, :custom_values, :queries
|
||||
fixtures :projects, :enabled_modules, :users, :members, :roles, :trackers, :issue_statuses, :issue_categories, :enumerations, :issues, :custom_fields, :custom_values, :versions, :queries
|
||||
|
||||
def test_custom_fields_for_all_projects_should_be_available_in_global_queries
|
||||
query = Query.new(:project => nil, :name => '_')
|
||||
@@ -75,37 +75,76 @@ class QueryTest < Test::Unit::TestCase
|
||||
end
|
||||
|
||||
def test_operator_in_more_than
|
||||
Issue.find(7).update_attribute(:due_date, (Date.today + 15))
|
||||
query = Query.new(:project => Project.find(1), :name => '_')
|
||||
query.add_filter('due_date', '>t+', ['15'])
|
||||
assert query.statement.include?("#{Issue.table_name}.due_date >=")
|
||||
find_issues_with_query(query)
|
||||
issues = find_issues_with_query(query)
|
||||
assert !issues.empty?
|
||||
issues.each {|issue| assert(issue.due_date >= (Date.today + 15))}
|
||||
end
|
||||
|
||||
def test_operator_in_less_than
|
||||
query = Query.new(:project => Project.find(1), :name => '_')
|
||||
query.add_filter('due_date', '<t+', ['15'])
|
||||
assert query.statement.include?("#{Issue.table_name}.due_date BETWEEN")
|
||||
find_issues_with_query(query)
|
||||
issues = find_issues_with_query(query)
|
||||
assert !issues.empty?
|
||||
issues.each {|issue| assert(issue.due_date >= Date.today && issue.due_date <= (Date.today + 15))}
|
||||
end
|
||||
|
||||
def test_operator_less_than_ago
|
||||
Issue.find(7).update_attribute(:due_date, (Date.today - 3))
|
||||
query = Query.new(:project => Project.find(1), :name => '_')
|
||||
query.add_filter('due_date', '>t-', ['3'])
|
||||
issues = find_issues_with_query(query)
|
||||
assert !issues.empty?
|
||||
issues.each {|issue| assert(issue.due_date >= (Date.today - 3) && issue.due_date <= Date.today)}
|
||||
end
|
||||
|
||||
def test_operator_more_than_ago
|
||||
Issue.find(7).update_attribute(:due_date, (Date.today - 10))
|
||||
query = Query.new(:project => Project.find(1), :name => '_')
|
||||
query.add_filter('due_date', '<t-', ['10'])
|
||||
assert query.statement.include?("#{Issue.table_name}.due_date <=")
|
||||
issues = find_issues_with_query(query)
|
||||
assert !issues.empty?
|
||||
issues.each {|issue| assert(issue.due_date <= (Date.today - 10))}
|
||||
end
|
||||
|
||||
def test_operator_in
|
||||
Issue.find(7).update_attribute(:due_date, (Date.today + 2))
|
||||
query = Query.new(:project => Project.find(1), :name => '_')
|
||||
query.add_filter('due_date', 't+', ['2'])
|
||||
issues = find_issues_with_query(query)
|
||||
assert !issues.empty?
|
||||
issues.each {|issue| assert_equal((Date.today + 2), issue.due_date)}
|
||||
end
|
||||
|
||||
def test_operator_ago
|
||||
Issue.find(7).update_attribute(:due_date, (Date.today - 3))
|
||||
query = Query.new(:project => Project.find(1), :name => '_')
|
||||
query.add_filter('due_date', 't-', ['3'])
|
||||
issues = find_issues_with_query(query)
|
||||
assert !issues.empty?
|
||||
issues.each {|issue| assert_equal((Date.today - 3), issue.due_date)}
|
||||
end
|
||||
|
||||
def test_operator_today
|
||||
query = Query.new(:project => Project.find(1), :name => '_')
|
||||
query.add_filter('due_date', 't', [''])
|
||||
assert query.statement.include?("#{Issue.table_name}.due_date BETWEEN")
|
||||
find_issues_with_query(query)
|
||||
issues = find_issues_with_query(query)
|
||||
assert !issues.empty?
|
||||
issues.each {|issue| assert_equal Date.today, issue.due_date}
|
||||
end
|
||||
|
||||
def test_operator_this_week_on_date
|
||||
query = Query.new(:project => Project.find(1), :name => '_')
|
||||
query.add_filter('due_date', 'w', [''])
|
||||
assert query.statement.include?("#{Issue.table_name}.due_date BETWEEN")
|
||||
find_issues_with_query(query)
|
||||
end
|
||||
|
||||
def test_operator_this_week_on_datetime
|
||||
query = Query.new(:project => Project.find(1), :name => '_')
|
||||
query.add_filter('created_on', 'w', [''])
|
||||
assert query.statement.include?("#{Issue.table_name}.created_on BETWEEN")
|
||||
find_issues_with_query(query)
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user