From: Jean-Philippe Lang Date: Fri, 29 Apr 2011 11:28:27 +0000 (+0000) Subject: Makes 'This week' filter work with any starting day of week (#7097). X-Git-Tag: 1.2.0~288 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=57f63d513c2bbaea1f5d60f4b83272f858f6d736;p=redmine.git Makes 'This week' filter work with any starting day of week (#7097). git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@5596 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- diff --git a/app/models/query.rb b/app/models/query.rb index 0d52893cc..c65706763 100644 --- a/app/models/query.rb +++ b/app/models/query.rb @@ -623,12 +623,10 @@ class Query < ActiveRecord::Base 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 "!~" diff --git a/test/unit/query_test.rb b/test/unit/query_test.rb index 90fa593e0..0f03260ae 100644 --- a/test/unit/query_test.rb +++ b/test/unit/query_test.rb @@ -191,6 +191,29 @@ class QueryTest < ActiveSupport::TestCase 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'])