From 6de01094977c128b75b822d3a91ae34a1e14766b Mon Sep 17 00:00:00 2001 From: "marius.balteanu" Date: Sat, 19 Mar 2022 13:14:57 +0200 Subject: [PATCH] Add option to auto watch issues assigned to me --- app/models/journal.rb | 6 ++++++ app/models/user_preference.rb | 2 +- config/locales/en.yml | 1 + test/unit/journal_test.rb | 34 ++++++++++++++++++++++++++++++- test/unit/user_preference_test.rb | 2 +- 5 files changed, 42 insertions(+), 3 deletions(-) diff --git a/app/models/journal.rb b/app/models/journal.rb index 01d5debcd..61df2f30c 100644 --- a/app/models/journal.rb +++ b/app/models/journal.rb @@ -335,6 +335,12 @@ class Journal < ActiveRecord::Base !Watcher.any_watched?(Array.wrap(journalized), user) journalized.set_watcher(user, true) end + + if journalized.assigned_to && + journalized.assigned_to.pref.auto_watch_on?('issue_assigned_to_me') && + !Watcher.any_watched?(Array.wrap(journalized), journalized.assigned_to) + journalized.set_watcher(journalized.assigned_to, true) + end end def send_notification diff --git a/app/models/user_preference.rb b/app/models/user_preference.rb index 758736824..f6546029e 100644 --- a/app/models/user_preference.rb +++ b/app/models/user_preference.rb @@ -44,7 +44,7 @@ class UserPreference < ActiveRecord::Base TEXTAREA_FONT_OPTIONS = ['monospace', 'proportional'] DEFAULT_TOOLBAR_LANGUAGE_OPTIONS = %w[c cpp csharp css diff go groovy html java javascript objc perl php python r ruby sass scala shell sql swift xml yaml] - AUTO_WATCH_ON_OPTIONS = ['issue_contributed_to'] + AUTO_WATCH_ON_OPTIONS = ['issue_contributed_to', 'issue_assigned_to_me'] def initialize(attributes=nil, *args) super diff --git a/config/locales/en.yml b/config/locales/en.yml index 62577376f..7a7981787 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -958,6 +958,7 @@ en: label_add_another_file: Add another file label_auto_watch_on: Auto watch label_auto_watch_on_issue_contributed_to: Issues I contributed to + label_auto_watch_on_issue_assigned_to_me: Issues assigned to me label_preferences: Preferences label_chronological_order: In chronological order label_reverse_chronological_order: In reverse chronological order diff --git a/test/unit/journal_test.rb b/test/unit/journal_test.rb index cf86a7990..e3cc907d6 100644 --- a/test/unit/journal_test.rb +++ b/test/unit/journal_test.rb @@ -120,7 +120,7 @@ class JournalTest < ActiveSupport::TestCase end end - def test_create_should_add_wacher + def test_create_should_add_watcher user = User.first user.pref.auto_watch_on=['issue_contributed_to'] user.save @@ -142,6 +142,38 @@ class JournalTest < ActiveSupport::TestCase end end + def test_create_should_add_assignee_as_watcher + user = User.find(2) + user.pref.auto_watch_on=['issue_assigned_to_me'] + user.save + + issue = Issue.find(2) + issue.assigned_to = user + issue.save + + journal = Journal.new(:journalized => issue, :notes => 'notes', :user => user) + + assert_difference 'Watcher.count', 1 do + assert_equal true, journal.save + end + end + + def test_create_should_not_add_assignee_as_watcher + user = User.find(2) + user.pref.auto_watch_on=[] + user.save + + issue = Issue.find(2) + issue.assigned_to = user + issue.save + + journal = Journal.new(:journalized => issue, :notes => 'notes', :user => user) + + assert_no_difference 'Watcher.count' do + assert_equal true, journal.save + end + end + def test_visible_scope_for_anonymous # Anonymous user should see issues of public projects only journals = Journal.visible(User.anonymous).to_a diff --git a/test/unit/user_preference_test.rb b/test/unit/user_preference_test.rb index 4ca79400e..8e06d1212 100644 --- a/test/unit/user_preference_test.rb +++ b/test/unit/user_preference_test.rb @@ -59,7 +59,7 @@ class UserPreferenceTest < ActiveSupport::TestCase def test_auto_watch_on_should_default_to_setting preference = UserPreference.new - assert_equal ['issue_contributed_to'], preference.auto_watch_on + assert_equal ['issue_contributed_to', 'issue_assigned_to_me'], preference.auto_watch_on end def test_create -- 2.35.1