summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarius Balteanu <marius.balteanu@zitec.com>2021-07-27 20:45:30 +0000
committerMarius Balteanu <marius.balteanu@zitec.com>2021-07-27 20:45:30 +0000
commit560e1940472fa4427633a5c4b28ca88af3b5967e (patch)
treee614faf25e29f16f71bc5da898fffdee7c4b6486
parent88b8aee5ef69fc95f523ae7a31fe7c6070584365 (diff)
downloadredmine-560e1940472fa4427633a5c4b28ca88af3b5967e.tar.gz
redmine-560e1940472fa4427633a5c4b28ca88af3b5967e.zip
Merged r21081 to 4.1-stable (#34856).
git-svn-id: http://svn.redmine.org/redmine/branches/4.1-stable@21094 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r--app/models/time_entry.rb7
-rw-r--r--test/functional/issues_controller_test.rb23
2 files changed, 30 insertions, 0 deletions
diff --git a/app/models/time_entry.rb b/app/models/time_entry.rb
index 88d9c4cd9..c12a05186 100644
--- a/app/models/time_entry.rb
+++ b/app/models/time_entry.rb
@@ -113,6 +113,13 @@ class TimeEntry < ActiveRecord::Base
self.project_id = issue.project_id
end
@invalid_issue_id = nil
+ elsif user.allowed_to?(:log_time, issue.project) && issue.assigned_to_id_changed? && issue.previous_assignee == User.current
+ current_assignee = issue.assigned_to
+ issue.assigned_to = issue.previous_assignee
+ unless issue.visible?(user)
+ @invalid_issue_id = issue_id
+ end
+ issue.assigned_to = current_assignee
else
@invalid_issue_id = issue_id
end
diff --git a/test/functional/issues_controller_test.rb b/test/functional/issues_controller_test.rb
index 2ee1a2c41..48ecddafd 100644
--- a/test/functional/issues_controller_test.rb
+++ b/test/functional/issues_controller_test.rb
@@ -5640,6 +5640,29 @@ class IssuesControllerTest < Redmine::ControllerTest
assert_select 'input[name=?][value=?]', 'time_entry[comments]', 'this is my comment'
end
+ def test_put_with_spent_time_when_assigned_to_of_private_issue_is_update_at_the_same_time
+ @request.session[:user_id] = 3
+ Role.find(2).update! :issues_visibility => 'own'
+ private_issue = Issue.find(3)
+
+ assert_difference('TimeEntry.count', 1) do
+ put(
+ :update,
+ params: {
+ id: private_issue.id,
+ issue: { assigned_to_id: nil },
+ time_entry: {
+ comments: "add spent time", activity_id: TimeEntryActivity.first.id, hours: 1
+ }
+ }
+ )
+ end
+ assert_select '#errorExplanation', {text: /Log time is invalid/, count: 0}
+ assert_select '#errorExplanation', {text: /Issue is invalid/, count: 0}
+ assert_redirected_to action: 'show', id: private_issue.id
+ assert_not private_issue.reload.visible?
+ end
+
def test_put_update_should_allow_fixed_version_to_be_set_to_a_subproject
issue = Issue.find(2)
@request.session[:user_id] = 2