Skip to content

Commit

Permalink
Adds issue category column to spent time queries (#28391).
Browse files Browse the repository at this point in the history
Patch by Marius BALTEANU.


git-svn-id: http://svn.redmine.org/redmine/trunk@17250 e93f8b46-1217-0410-a6f0-8f06a7374b81
  • Loading branch information
vividtone committed Apr 1, 2018
1 parent fa76ec5 commit 02e1a17
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 0 deletions.
4 changes: 4 additions & 0 deletions app/models/time_entry_query.rb
Expand Up @@ -30,6 +30,7 @@ class TimeEntryQuery < Query
QueryColumn.new(:issue, :sortable => "#{Issue.table_name}.id"),
QueryAssociationColumn.new(:issue, :tracker, :caption => :field_tracker, :sortable => "#{Tracker.table_name}.position"),
QueryAssociationColumn.new(:issue, :status, :caption => :field_status, :sortable => "#{IssueStatus.table_name}.position"),
QueryAssociationColumn.new(:issue, :category, :caption => :field_category, :sortable => "#{IssueCategory.table_name}.name"),
QueryColumn.new(:comments),
QueryColumn.new(:hours, :sortable => "#{TimeEntry.table_name}.hours", :totalable => true),
]
Expand Down Expand Up @@ -228,6 +229,9 @@ def joins_for_order_statement(order_options)
if order_options.include?('trackers')
joins << "LEFT OUTER JOIN #{Tracker.table_name} ON #{Tracker.table_name}.id = #{Issue.table_name}.tracker_id"
end
if order_options.include?('issue_categories')
joins << "LEFT OUTER JOIN #{IssueCategory.table_name} ON #{IssueCategory.table_name}.id = #{Issue.table_name}.category_id"
end
end

joins.compact!
Expand Down
26 changes: 26 additions & 0 deletions test/functional/timelog_controller_test.rb
Expand Up @@ -1036,6 +1036,32 @@ def test_index_with_issue_category_filter
assert_equal ['1', '2'], css_select('input[name="ids[]"]').map {|e| e.attr('value')}
end

def test_index_with_issue_category_column
get :index, :params => {
:project_id => 'ecookbook',
:c => %w(project spent_on issue comments hours issue.category)
}

assert_response :success
assert_select 'td.issue-category', :text => 'Printing'
end

def test_index_with_issue_category_sort
issue = Issue.find(3)
issue.category_id = 2
issue.save!

get :index, :params => {
:c => ["hours", 'issue.category'],
:sort => 'issue.category'
}
assert_response :success

# Make sure that values are properly sorted
values = css_select("td.issue-category").map(&:text).reject(&:blank?)
assert_equal ['Printing', 'Printing', 'Recipes'], values
end

def test_index_with_filter_on_issue_custom_field
issue = Issue.generate!(:project_id => 1, :tracker_id => 1, :custom_field_values => {2 => 'filter_on_issue_custom_field'})
entry = TimeEntry.generate!(:issue => issue, :hours => 2.5)
Expand Down

0 comments on commit 02e1a17

Please sign in to comment.