diff --git a/app/models/time_entry_query.rb b/app/models/time_entry_query.rb index 11128cfcd6..5fd4790893 100644 --- a/app/models/time_entry_query.rb +++ b/app/models/time_entry_query.rb @@ -88,7 +88,7 @@ class TimeEntryQuery < Query activities = (project ? project.activities : TimeEntryActivity.shared) add_available_filter( "activity_id", - :type => :list, :values => activities.map {|a| [a.name, a.id.to_s]} + :type => :list, :values => activities.map {|a| [a.name, (a.parent_id || a.id).to_s]} ) add_available_filter( "project.status", diff --git a/test/functional/queries_controller_test.rb b/test/functional/queries_controller_test.rb index a7a87c2b97..ef1de2eb6b 100644 --- a/test/functional/queries_controller_test.rb +++ b/test/functional/queries_controller_test.rb @@ -917,4 +917,28 @@ class QueriesControllerTest < Redmine::ControllerTest assert_include ['Dave2 Lopper2', '5', 'locked'], json assert_include ['A Team', '10', 'active'], json end + + def test_activity_filter_should_return_active_and_system_activity_ids + TimeEntryActivity.create!(:name => 'Design', :parent_id => 9, :project_id => 1) + TimeEntryActivity.create!(:name => 'QA', :active => false, :parent_id => 11, :project_id => 1) + TimeEntryActivity.create!(:name => 'Inactive Activity', :active => true, :parent_id => 14, :project_id => 1) + + @request.session[:user_id] = 2 + get( + :filter, + :params => { + :project_id => 1, + :type => 'TimeEntryQuery', + :name => 'activity_id' + } + ) + assert_response :success + assert_equal 'application/json', response.media_type + json = ActiveSupport::JSON.decode(response.body) + + assert_equal 3, json.count + assert_include ["Design", "9"], json + assert_include ["Development", "10"], json + assert_include ["Inactive Activity", "14"], json + end end