Fix watcher handling on unsaved objects (#39186).

Patch by Holger Just.


git-svn-id: https://svn.redmine.org/redmine/trunk@22349 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Go MAEDA
2023-10-16 15:03:08 +00:00
parent fba6d08b68
commit fd132a8e82
2 changed files with 53 additions and 6 deletions

View File

@@ -126,6 +126,43 @@ class WatcherTest < ActiveSupport::TestCase
end
end
def test_add_watcher_with_unsaved_object
issue = Issue.new(project: Project.find(1), tracker_id: 1, subject: "test", author: User.find(2))
assert_not issue.persisted?
issue.add_watcher(@user)
assert issue.watched_by?(@user)
assert_equal [@user.id], issue.watcher_user_ids
assert_equal [@user], issue.watcher_users
assert_equal [nil], issue.watcher_ids
assert_equal 1, issue.watchers.size
issue.save!
assert 1, Watcher.where(watchable: issue).count
end
def test_remove_watcher_with_unsaved_object
issue = Issue.new(project: Project.find(1), tracker_id: 1, subject: "test", author: User.find(2))
assert_not issue.persisted?
issue.add_watcher(@user)
assert_equal [@user], issue.watcher_users
issue.remove_watcher(@user)
assert_not issue.watched_by?(@user)
assert_equal [], issue.watcher_user_ids
assert_equal [], issue.watcher_users
assert_equal [], issue.watcher_ids
assert_equal [], issue.watchers
issue.save!
assert 0, Watcher.where(watchable: issue).count
end
def test_addable_watcher_users_should_not_include_user_that_cannot_view_the_object
issue = Issue.new(:project => Project.find(1), :is_private => true)
assert_nil issue.addable_watcher_users.detect {|user| user.is_a?(User) && !issue.visible?(user)}