diff options
author | Go MAEDA <maeda@farend.jp> | 2020-12-12 03:32:20 +0000 |
---|---|---|
committer | Go MAEDA <maeda@farend.jp> | 2020-12-12 03:32:20 +0000 |
commit | 5d017f42be3ecdcbc63f8189cadf832b70d6b661 (patch) | |
tree | 9dbe1c238ae8e4c0c819cd7e72753cf3dad3e6c3 | |
parent | f769d97de986e9953b5473dbfc34d7a213fa8293 (diff) | |
download | redmine-5d017f42be3ecdcbc63f8189cadf832b70d6b661.tar.gz redmine-5d017f42be3ecdcbc63f8189cadf832b70d6b661.zip |
Spent time details are displayed in incorrect order when sorted by week and date (#33952).
Patch by Yuichi HARADA.
git-svn-id: http://svn.redmine.org/redmine/trunk@20634 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r-- | app/models/time_entry_query.rb | 2 | ||||
-rw-r--r-- | test/functional/timelog_controller_test.rb | 27 |
2 files changed, 28 insertions, 1 deletions
diff --git a/app/models/time_entry_query.rb b/app/models/time_entry_query.rb index 2607b57ef..500930145 100644 --- a/app/models/time_entry_query.rb +++ b/app/models/time_entry_query.rb @@ -25,7 +25,7 @@ class TimeEntryQuery < Query QueryColumn.new(:project, :sortable => "#{Project.table_name}.name", :groupable => true), QueryColumn.new(:spent_on, :sortable => ["#{TimeEntry.table_name}.spent_on", "#{TimeEntry.table_name}.created_on"], :default_order => 'desc', :groupable => true), TimestampQueryColumn.new(:created_on, :sortable => "#{TimeEntry.table_name}.created_on", :default_order => 'desc', :groupable => true), - QueryColumn.new(:tweek, :sortable => ["#{TimeEntry.table_name}.spent_on", "#{TimeEntry.table_name}.created_on"], :caption => :label_week), + QueryColumn.new(:tweek, :sortable => ["#{TimeEntry.table_name}.tyear", "#{TimeEntry.table_name}.tweek"], :caption => :label_week), QueryColumn.new(:author, :sortable => lambda {User.fields_for_order_statement}), QueryColumn.new(:user, :sortable => lambda {User.fields_for_order_statement}, :groupable => true), QueryColumn.new(:activity, :sortable => "#{TimeEntryActivity.table_name}.position", :groupable => true), diff --git a/test/functional/timelog_controller_test.rb b/test/functional/timelog_controller_test.rb index 455dafe2f..606e5c7fc 100644 --- a/test/functional/timelog_controller_test.rb +++ b/test/functional/timelog_controller_test.rb @@ -1184,6 +1184,33 @@ class TimelogControllerTest < Redmine::ControllerTest ) end + def test_index_should_sort_by_tweek_and_spent_on + t1 = TimeEntry.generate!(:spent_on => '2012-06-10') # tyear:2012, tweek:23 + t2 = TimeEntry.generate!(:spent_on => '2012-06-11') # tyear:2012, tweek:24 + t3 = TimeEntry.generate!(:spent_on => '2012-06-12') # tyear:2012, tweek:24 + t4 = TimeEntry.generate!(:spent_on => '2013-06-12') # tyear:2013, tweek:24 + + params = { + :project_id => 1, + :f => ['spent_on'], + :op => {'spent_on' => '><'}, + :v => {'spent_on' => ['2012-06-10', '2013-06-12']} + } + + [ + [{:sort => 'tweek,spent_on'}, [t1, t2, t3, t4]], + [{:sort => 'tweek,spent_on:desc'}, [t1, t3, t2, t4]], + [{:sort => 'tweek:desc,spent_on'}, [t4, t2, t3, t1]], + [{:sort => 'tweek:desc,spent_on:desc'}, [t4, t3, t2, t1]], + ].each do |sort_criteria, expected| + get :index, :params => params.dup.merge(sort_criteria) + assert_response :success + expected_ids = expected.map(&:id).map(&:to_s) + actual_ids = css_select('input[name="ids[]"]').map {|e| e.attr('value')} + assert_equal expected_ids, actual_ids + end + end + def test_index_with_activity_filter activity = TimeEntryActivity.create!(:name => 'Activity') entry = TimeEntry.generate!(:issue_id => 1, :hours => 4.5, :activity => activity) |