From 0a6a7f0ed7be045640f98cbb14a61588995670c1 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Sun, 24 Feb 2013 12:18:29 +0000 Subject: [PATCH] Fixed that time entries report by week breaks on edge cases (#5329). git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11471 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- lib/redmine/helpers/time_report.rb | 4 +-- .../time_entry_reports_controller_test.rb | 26 +++++++++++++++++++ 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/lib/redmine/helpers/time_report.rb b/lib/redmine/helpers/time_report.rb index 870452758..09093dc95 100644 --- a/lib/redmine/helpers/time_report.rb +++ b/lib/redmine/helpers/time_report.rb @@ -63,7 +63,7 @@ module Redmine when 'month' row['month'] = "#{row['tyear']}-#{row['tmonth']}" when 'week' - row['week'] = "#{row['tyear']}-#{row['tweek']}" + row['week'] = "#{row['spent_on'].cwyear}-#{row['tweek']}" when 'day' row['day'] = "#{row['spent_on']}" end @@ -90,7 +90,7 @@ module Redmine @periods << "#{date_from.year}-#{date_from.month}" date_from = (date_from + 1.month).at_beginning_of_month when 'week' - @periods << "#{date_from.year}-#{date_from.to_date.cweek}" + @periods << "#{date_from.to_date.cwyear}-#{date_from.to_date.cweek}" date_from = (date_from + 7.day).at_beginning_of_week when 'day' @periods << "#{date_from.to_date}" diff --git a/test/functional/time_entry_reports_controller_test.rb b/test/functional/time_entry_reports_controller_test.rb index 759d5d19b..76013614e 100644 --- a/test/functional/time_entry_reports_controller_test.rb +++ b/test/functional/time_entry_reports_controller_test.rb @@ -125,6 +125,32 @@ class TimeEntryReportsControllerTest < ActionController::TestCase :attributes => {:action => "/projects/ecookbook/issues/1/time_entries/report", :id => 'query_form'} end + def test_report_by_week_should_use_commercial_year + TimeEntry.delete_all + TimeEntry.generate!(:hours => '2', :spent_on => '2009-12-25') # 2009-52 + TimeEntry.generate!(:hours => '4', :spent_on => '2009-12-31') # 2009-53 + TimeEntry.generate!(:hours => '8', :spent_on => '2010-01-01') # 2009-53 + TimeEntry.generate!(:hours => '16', :spent_on => '2010-01-05') # 2010-1 + + get :report, :columns => 'week', :from => "2009-12-25", :to => "2010-01-05", :criteria => ["project"] + assert_response :success + + assert_select '#time-report thead tr' do + assert_select 'th:nth-child(1)', :text => 'Project' + assert_select 'th:nth-child(2)', :text => '2009-52' + assert_select 'th:nth-child(3)', :text => '2009-53' + assert_select 'th:nth-child(4)', :text => '2010-1' + assert_select 'th:nth-child(5)', :text => 'Total' + end + assert_select '#time-report tbody tr' do + assert_select 'td:nth-child(1)', :text => 'eCookbook' + assert_select 'td:nth-child(2)', :text => '2.00' + assert_select 'td:nth-child(3)', :text => '12.00' + assert_select 'td:nth-child(4)', :text => '16.00' + assert_select 'td:nth-child(5)', :text => '30.00' # Total + end + end + def test_report_should_propose_association_custom_fields get :report assert_response :success