when "t"
sql = date_range_clause(db_table, db_field, 0, 0)
when "w"
- from = l(:general_first_day_of_week) == '7' ?
- # week starts on sunday
- ((Date.today.cwday == 7) ? Time.now.at_beginning_of_day : Time.now.at_beginning_of_week - 1.day) :
- # week starts on monday (Rails default)
- 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)]
+ first_day_of_week = l(:general_first_day_of_week).to_i
+ day_of_week = Date.today.cwday
+ days_ago = (day_of_week >= first_day_of_week ? day_of_week - first_day_of_week : day_of_week + 7 - first_day_of_week)
+ sql = date_range_clause(db_table, db_field, - days_ago, - days_ago + 6)
when "~"
sql = "LOWER(#{db_table}.#{db_field}) LIKE '%#{connection.quote_string(value.first.to_s.downcase)}%'"
when "!~"
result.each {|issue| assert issue.subject.downcase.include?('unable') }
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)
+
+ Date.stubs(:today).returns(Date.parse('2011-04-29'))
+
+ query = Query.new(:project => Project.find(1), :name => '_')
+ query.add_filter('due_date', 'w', [''])
+ assert query.statement.include?("issues.due_date > '2011-04-24 23:59:59' AND issues.due_date <= '2011-05-01 23:59:59")
+ I18n.locale = :en
+ end
+
+ def test_range_for_this_week_with_week_starting_on_sunday
+ I18n.locale = :en
+ assert_equal '7', I18n.t(:general_first_day_of_week)
+
+ Date.stubs(:today).returns(Date.parse('2011-04-29'))
+
+ query = Query.new(:project => Project.find(1), :name => '_')
+ query.add_filter('due_date', 'w', [''])
+ assert query.statement.include?("issues.due_date > '2011-04-23 23:59:59' AND issues.due_date <= '2011-04-30 23:59:59")
+ end
+
def test_operator_does_not_contains
query = Query.new(:project => Project.find(1), :name => '_')
query.add_filter('subject', '!~', ['uNable'])