summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2017-10-15 11:56:05 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2017-10-15 11:56:05 +0000
commit80cf4fd5db2f0b4194556fa0fa61deb70137519a (patch)
tree6210ef9da6c9c4683506ab0618100295b334b65d
parentf793340077d0acb9fb8724122f8b49160e78a69c (diff)
downloadredmine-80cf4fd5db2f0b4194556fa0fa61deb70137519a.tar.gz
redmine-80cf4fd5db2f0b4194556fa0fa61deb70137519a.zip
Merged r16999 and r17000 (#26667).
git-svn-id: http://svn.redmine.org/redmine/branches/3.4-stable@17001 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r--app/models/time_entry_query.rb4
-rw-r--r--test/functional/queries_controller_test.rb14
-rw-r--r--test/functional/timelog_controller_test.rb21
3 files changed, 37 insertions, 2 deletions
diff --git a/app/models/time_entry_query.rb b/app/models/time_entry_query.rb
index f432fdbcc..4092efce6 100644
--- a/app/models/time_entry_query.rb
+++ b/app/models/time_entry_query.rb
@@ -63,7 +63,7 @@ class TimeEntryQuery < Query
add_available_filter("issue.fixed_version_id",
:type => :list,
:name => l("label_attribute_of_issue", :name => l(:field_fixed_version)),
- :values => lambda { fixed_version_values }) if project
+ :values => lambda { fixed_version_values })
add_available_filter("user_id",
:type => :list_optional, :values => lambda { author_values }
@@ -159,7 +159,7 @@ class TimeEntryQuery < Query
end
def sql_for_issue_fixed_version_id_field(field, operator, value)
- issue_ids = Issue.where(:fixed_version_id => value.first.to_i).pluck(:id)
+ issue_ids = Issue.where(:fixed_version_id => value.map(&:to_i)).pluck(:id)
case operator
when "="
if issue_ids.any?
diff --git a/test/functional/queries_controller_test.rb b/test/functional/queries_controller_test.rb
index 6f3e3f664..0e4e64696 100644
--- a/test/functional/queries_controller_test.rb
+++ b/test/functional/queries_controller_test.rb
@@ -556,6 +556,20 @@ class QueriesControllerTest < Redmine::ControllerTest
assert_include ["eCookbook - 2.0", "3", "open"], json
end
+ def test_version_filter_time_entries_with_project_id_should_return_filter_values
+ @request.session[:user_id] = 2
+ get :filter, :params => {
+ :project_id => 1,
+ :type => 'TimeEntryQuery',
+ :name => 'issue.fixed_version_id'
+ }
+
+ assert_response :success
+ assert_equal 'application/json', response.content_type
+ json = ActiveSupport::JSON.decode(response.body)
+ assert_include ["eCookbook - 2.0", "3", "open"], json
+ end
+
def test_filter_without_project_id_should_return_filter_values
@request.session[:user_id] = 2
get :filter, :params => {
diff --git a/test/functional/timelog_controller_test.rb b/test/functional/timelog_controller_test.rb
index 8d3804e5e..a0b3fad62 100644
--- a/test/functional/timelog_controller_test.rb
+++ b/test/functional/timelog_controller_test.rb
@@ -791,6 +791,27 @@ class TimelogControllerTest < Redmine::ControllerTest
assert_select '.total-for-hours', :text => 'Hours: 5.00'
end
+ def test_index_at_project_level_with_multiple_issue_fixed_version_ids
+ version = Version.generate!(:project_id => 1)
+ version2 = Version.generate!(:project_id => 1)
+ issue = Issue.generate!(:project_id => 1, :fixed_version => version)
+ issue2 = Issue.generate!(:project_id => 1, :fixed_version => version2)
+ TimeEntry.generate!(:issue => issue, :hours => 2)
+ TimeEntry.generate!(:issue => issue2, :hours => 3)
+ @request.session[:user_id] = 2
+
+ get :index, :params => {
+ :project_id => 'ecookbook',
+ :f => ['issue.fixed_version_id'],
+ :op => {'issue.fixed_version_id' => '='},
+ :v => {'issue.fixed_version_id' => [version.id.to_s,version2.id.to_s]}
+ }
+ assert_response :success
+
+ assert_select 'tr.time-entry', 2
+ assert_select '.total-for-hours', :text => 'Hours: 5.00'
+ end
+
def test_index_at_project_level_with_date_range
get :index, :params => {
:project_id => 'ecookbook',