diff options
author | Go MAEDA <maeda@farend.jp> | 2023-10-16 15:03:08 +0000 |
---|---|---|
committer | Go MAEDA <maeda@farend.jp> | 2023-10-16 15:03:08 +0000 |
commit | fd132a8e82fed2f059b2dbbf5b30eca46cdc2005 (patch) | |
tree | c08cded9c98af1c61b288b8bd927f1de6bdd1757 /test/unit/watcher_test.rb | |
parent | fba6d08b68b41c42c6f98f769198302c0016057e (diff) | |
download | redmine-fd132a8e82fed2f059b2dbbf5b30eca46cdc2005.tar.gz redmine-fd132a8e82fed2f059b2dbbf5b30eca46cdc2005.zip |
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
Diffstat (limited to 'test/unit/watcher_test.rb')
-rw-r--r-- | test/unit/watcher_test.rb | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/test/unit/watcher_test.rb b/test/unit/watcher_test.rb index ced499712..a5c00f946 100644 --- a/test/unit/watcher_test.rb +++ b/test/unit/watcher_test.rb @@ -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)} |