From b80765f1f416791f3a58ce9328842fd6fbe7a61e Mon Sep 17 00:00:00 2001 From: Bianca Nenciu Date: Fri, 16 Dec 2022 18:42:51 +0200 Subject: [PATCH] DEV: Remove enable_whispers site setting (#19196) * DEV: Remove enable_whispers site setting Whispers are enabled as long as there is at least one group allowed to whisper, see whispers_allowed_groups site setting. * DEV: Always enable whispers for admins if at least one group is allowed. --- .../discourse/app/controllers/composer.js | 6 +-- .../tests/acceptance/composer-actions-test.js | 6 +-- .../acceptance/composer-image-preview-test.js | 4 +- .../tests/acceptance/composer-test.js | 1 - .../acceptance/composer-uncategorized-test.js | 7 +--- app/models/concerns/roleable.rb | 3 +- app/models/site_setting.rb | 2 +- config/locales/server.en.yml | 1 - config/site_settings.yml | 3 -- ...217_remove_enable_whispers_site_setting.rb | 41 +++++++++++++++++++ lib/email/receiver.rb | 2 +- .../acceptance/discourse-presence-test.js | 1 - spec/fabricators/user_fabricator.rb | 4 ++ spec/lib/bookmark_query_spec.rb | 6 +-- spec/lib/email/receiver_spec.rb | 2 +- spec/lib/guardian_spec.rb | 4 +- spec/lib/post_creator_spec.rb | 2 +- spec/lib/post_destroyer_spec.rb | 2 +- spec/lib/search_spec.rb | 3 +- spec/lib/topic_query_spec.rb | 11 ++--- spec/lib/topic_view_spec.rb | 4 +- spec/lib/topics_bulk_action_spec.rb | 2 +- spec/lib/unread_spec.rb | 10 ++--- spec/models/post_action_spec.rb | 2 +- spec/models/post_spec.rb | 2 +- ...ivate_message_topic_tracking_state_spec.rb | 2 +- spec/models/topic_spec.rb | 3 +- spec/models/topic_tracking_state_spec.rb | 8 ++-- spec/models/user_spec.rb | 13 +++--- spec/requests/list_controller_spec.rb | 3 -- spec/requests/posts_controller_spec.rb | 2 +- spec/requests/users_controller_spec.rb | 2 +- .../user_post_bookmark_serializer_spec.rb | 1 - 33 files changed, 89 insertions(+), 76 deletions(-) create mode 100644 db/migrate/20221125173217_remove_enable_whispers_site_setting.rb diff --git a/app/assets/javascripts/discourse/app/controllers/composer.js b/app/assets/javascripts/discourse/app/controllers/composer.js index 54aa7b54515..9dabffdaa5e 100644 --- a/app/assets/javascripts/discourse/app/controllers/composer.js +++ b/app/assets/javascripts/discourse/app/controllers/composer.js @@ -296,11 +296,7 @@ export default Controller.extend({ @discourseComputed("whisperer", "model.action") canWhisper(whisperer, modelAction) { - return ( - this.siteSettings.enable_whispers && - Composer.REPLY === modelAction && - whisperer - ); + return whisperer && modelAction === Composer.REPLY; }, _setupPopupMenuOption(callback) { diff --git a/app/assets/javascripts/discourse/tests/acceptance/composer-actions-test.js b/app/assets/javascripts/discourse/tests/acceptance/composer-actions-test.js index 72a984ef666..35804af7099 100644 --- a/app/assets/javascripts/discourse/tests/acceptance/composer-actions-test.js +++ b/app/assets/javascripts/discourse/tests/acceptance/composer-actions-test.js @@ -25,7 +25,6 @@ acceptance("Composer Actions", function (needs) { needs.settings({ prioritize_username_in_ux: true, display_name_on_posts: false, - enable_whispers: true, }); needs.site({ can_tag_topics: true }); needs.pretender((server, helper) => { @@ -412,10 +411,7 @@ function stubDraftResponse() { } acceptance("Composer Actions With New Topic Draft", function (needs) { - needs.user(); - needs.settings({ - enable_whispers: true, - }); + needs.user({ whisperer: true }); needs.site({ can_tag_topics: true, }); diff --git a/app/assets/javascripts/discourse/tests/acceptance/composer-image-preview-test.js b/app/assets/javascripts/discourse/tests/acceptance/composer-image-preview-test.js index c70bd81d921..4fcedfd2b0e 100644 --- a/app/assets/javascripts/discourse/tests/acceptance/composer-image-preview-test.js +++ b/app/assets/javascripts/discourse/tests/acceptance/composer-image-preview-test.js @@ -10,8 +10,8 @@ import { import { test } from "qunit"; acceptance("Composer - Image Preview", function (needs) { - needs.user(); - needs.settings({ enable_whispers: true, allow_uncategorized_topics: true }); + needs.user({}); + needs.settings({ allow_uncategorized_topics: true }); needs.site({ can_tag_topics: true }); needs.pretender((server, helper) => { server.post("/uploads/lookup-urls", () => { diff --git a/app/assets/javascripts/discourse/tests/acceptance/composer-test.js b/app/assets/javascripts/discourse/tests/acceptance/composer-test.js index 9637fd77d29..f38fdbaf414 100644 --- a/app/assets/javascripts/discourse/tests/acceptance/composer-test.js +++ b/app/assets/javascripts/discourse/tests/acceptance/composer-test.js @@ -39,7 +39,6 @@ acceptance("Composer", function (needs) { whisperer: true, }); needs.settings({ - enable_whispers: true, general_category_id: 1, default_composer_category: 1, }); diff --git a/app/assets/javascripts/discourse/tests/acceptance/composer-uncategorized-test.js b/app/assets/javascripts/discourse/tests/acceptance/composer-uncategorized-test.js index 03499f9f4d9..1b58a7ce192 100644 --- a/app/assets/javascripts/discourse/tests/acceptance/composer-uncategorized-test.js +++ b/app/assets/javascripts/discourse/tests/acceptance/composer-uncategorized-test.js @@ -6,11 +6,8 @@ import { test } from "qunit"; acceptance( "Composer disabled, uncategorized not allowed when any topic_template present", function (needs) { - needs.user(); - needs.settings({ - enable_whispers: true, - allow_uncategorized_topics: false, - }); + needs.user({ whisperer: true }); + needs.settings({ allow_uncategorized_topics: false }); test("Disable body until category is selected", async function (assert) { await visit("/"); diff --git a/app/models/concerns/roleable.rb b/app/models/concerns/roleable.rb index 6dc571f2298..0400db789db 100644 --- a/app/models/concerns/roleable.rb +++ b/app/models/concerns/roleable.rb @@ -20,10 +20,9 @@ module Roleable def whisperer? @whisperer ||= begin - return false if !SiteSetting.enable_whispers? - return true if staff? whispers_allowed_group_ids = SiteSetting.whispers_allowed_group_ids return false if whispers_allowed_group_ids.blank? + return true if admin return true if whispers_allowed_group_ids.include?(primary_group_id) group_users&.exists?(group_id: whispers_allowed_group_ids) end diff --git a/app/models/site_setting.rb b/app/models/site_setting.rb index b87146e52d6..dfd2ae8bf33 100644 --- a/app/models/site_setting.rb +++ b/app/models/site_setting.rb @@ -184,7 +184,7 @@ class SiteSetting < ActiveRecord::Base end def self.whispers_allowed_group_ids - if SiteSetting.enable_whispers && SiteSetting.whispers_allowed_groups.present? + if SiteSetting.whispers_allowed_groups.present? SiteSetting.whispers_allowed_groups_map else [] diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml index ce98828aaa4..69eaaf5d5eb 100644 --- a/config/locales/server.en.yml +++ b/config/locales/server.en.yml @@ -1683,7 +1683,6 @@ en: enable_badges: "Enable the badge system" max_favorite_badges: "Maximum number of badges that user can select" - enable_whispers: "Allow staff private communication within topics." whispers_allowed_groups: "Allow private communication within topics for members of specified groups." allow_index_in_robots_txt: "Specify in robots.txt that this site is allowed to be indexed by web search engines. In exceptional cases you can permanently override robots.txt." diff --git a/config/site_settings.yml b/config/site_settings.yml index 14dacb40295..ba500824f75 100644 --- a/config/site_settings.yml +++ b/config/site_settings.yml @@ -328,9 +328,6 @@ basic: default: 2 min: 0 max: 6 - enable_whispers: - client: true - default: false whispers_allowed_groups: client: true type: group_list diff --git a/db/migrate/20221125173217_remove_enable_whispers_site_setting.rb b/db/migrate/20221125173217_remove_enable_whispers_site_setting.rb new file mode 100644 index 00000000000..4044cdd9f3b --- /dev/null +++ b/db/migrate/20221125173217_remove_enable_whispers_site_setting.rb @@ -0,0 +1,41 @@ +# frozen_string_literal: true + +class RemoveEnableWhispersSiteSetting < ActiveRecord::Migration[7.0] + def up + # If enable_whispers was true, insert whispers_allowed_groups or add + # staff group to whispers_allowed_groups. This is necessary to keep + # the current behavior which has a bypass for staff members. + execute <<~SQL + INSERT INTO site_settings(name, data_type, value, created_at, updated_at) + SELECT 'whispers_allowed_groups', '20', '3', created_at, NOW() + FROM site_settings + WHERE name = 'enable_whispers' AND value = 't' + ON CONFLICT DO NOTHING + SQL + + execute <<~SQL + UPDATE site_settings + SET value = array_to_string(array_append(string_to_array(value, '|'), '3'), '|') + WHERE name = 'whispers_allowed_groups' AND + EXISTS(SELECT 1 FROM site_settings WHERE name = 'enable_whispers' AND value = 't') AND + NOT '3' = ANY(string_to_array(value, '|')) + SQL + + # If enable_whispers was false, reset whispers_allowed_groups + execute <<~SQL + UPDATE site_settings + SET value = '' + WHERE name = 'whispers_allowed_groups' AND + NOT EXISTS(SELECT 1 FROM site_settings WHERE name = 'enable_whispers' AND value = 't') + SQL + + # Delete enable_whispers site setting + execute <<~SQL + DELETE FROM site_settings WHERE name = 'enable_whispers' + SQL + end + + def down + raise ActiveRecord::IrreversibleMigration + end +end diff --git a/lib/email/receiver.rb b/lib/email/receiver.rb index 7f4d7599691..ab318439ba8 100644 --- a/lib/email/receiver.rb +++ b/lib/email/receiver.rb @@ -286,7 +286,7 @@ module Email Email::Receiver.update_bounce_score(@from_email, SiteSetting.hard_bounce_score) end - if SiteSetting.enable_whispers? && @from_user&.staged? + if SiteSetting.whispers_allowed_groups.present? && @from_user&.staged? return if email_log.blank? if post.present? && topic.present? && topic.archetype == Archetype.private_message diff --git a/plugins/discourse-presence/test/javascripts/acceptance/discourse-presence-test.js b/plugins/discourse-presence/test/javascripts/acceptance/discourse-presence-test.js index 9487e88c96d..ad1a2ae4fd4 100644 --- a/plugins/discourse-presence/test/javascripts/acceptance/discourse-presence-test.js +++ b/plugins/discourse-presence/test/javascripts/acceptance/discourse-presence-test.js @@ -16,7 +16,6 @@ import selectKit from "discourse/tests/helpers/select-kit-helper"; acceptance("Discourse Presence Plugin", function (needs) { needs.user({ whisperer: true }); - needs.settings({ enable_whispers: true }); test("Doesn't break topic creation", async function (assert) { await visit("/"); diff --git a/spec/fabricators/user_fabricator.rb b/spec/fabricators/user_fabricator.rb index 09ad6c57cc1..457a742edea 100644 --- a/spec/fabricators/user_fabricator.rb +++ b/spec/fabricators/user_fabricator.rb @@ -54,6 +54,8 @@ Fabricator(:moderator, from: :user) do after_create do |user| user.group_users << Fabricate(:group_user, user: user, group: Group[:moderators]) + # HACK: Some plugins add the user to staff group already which breaks because of duplication + user.group_users << Fabricate(:group_user, user: user, group: Group[:staff]) if group_users.none? { |gu| gu.group == Group[:staff] } end end @@ -65,6 +67,8 @@ Fabricator(:admin, from: :user) do after_create do |user| user.group_users << Fabricate(:group_user, user: user, group: Group[:admins]) + # HACK: Some plugins add the user to staff group already which breaks because of duplication + user.group_users << Fabricate(:group_user, user: user, group: Group[:staff]) if group_users.none? { |gu| gu.group == Group[:staff] } end end diff --git a/spec/lib/bookmark_query_spec.rb b/spec/lib/bookmark_query_spec.rb index cac0fd205dc..69d218aa572 100644 --- a/spec/lib/bookmark_query_spec.rb +++ b/spec/lib/bookmark_query_spec.rb @@ -119,19 +119,19 @@ RSpec.describe BookmarkQuery do context "for a whispered post" do before do post_bookmark.bookmarkable.update(post_type: Post.types[:whisper]) - SiteSetting.enable_whispers = true + SiteSetting.whispers_allowed_groups = "#{Group::AUTO_GROUPS[:staff]}" end fab!(:whisperers_group) { Fabricate(:group) } context "when the user is moderator" do it "does return the whispered post" do - user.update!(moderator: true) + user.grant_moderation! expect(bookmark_query.list_all.count).to eq(3) end end context "when the user is admin" do it "does return the whispered post" do - user.update!(admin: true) + user.grant_admin! expect(bookmark_query.list_all.count).to eq(3) end end diff --git a/spec/lib/email/receiver_spec.rb b/spec/lib/email/receiver_spec.rb index fe906377420..01565f420eb 100644 --- a/spec/lib/email/receiver_spec.rb +++ b/spec/lib/email/receiver_spec.rb @@ -126,7 +126,7 @@ RSpec.describe Email::Receiver do before do SiteSetting.enable_staged_users = true - SiteSetting.enable_whispers = true + SiteSetting.whispers_allowed_groups = "#{Group::AUTO_GROUPS[:staff]}" end def create_post_reply_key(value) diff --git a/spec/lib/guardian_spec.rb b/spec/lib/guardian_spec.rb index c6c21bd4bab..22d3b85f617 100644 --- a/spec/lib/guardian_spec.rb +++ b/spec/lib/guardian_spec.rb @@ -997,8 +997,8 @@ RSpec.describe Guardian do end it 'respects whispers' do - SiteSetting.enable_whispers = true - SiteSetting.whispers_allowed_groups = "#{group.id}" + SiteSetting.whispers_allowed_groups = "#{Group::AUTO_GROUPS[:staff]}|#{group.id}" + regular_post = post whisper_post = Fabricate(:post, post_type: Post.types[:whisper]) diff --git a/spec/lib/post_creator_spec.rb b/spec/lib/post_creator_spec.rb index 1f497b7a9f8..daac32148ce 100644 --- a/spec/lib/post_creator_spec.rb +++ b/spec/lib/post_creator_spec.rb @@ -1046,7 +1046,7 @@ RSpec.describe PostCreator do end it 'does not add whisperers to allowed users of the topic' do - SiteSetting.enable_whispers = true + SiteSetting.whispers_allowed_groups = "#{Group::AUTO_GROUPS[:staff]}" unrelated_user.update!(admin: true) PostCreator.create!( diff --git a/spec/lib/post_destroyer_spec.rb b/spec/lib/post_destroyer_spec.rb index 71935cbc9db..34bfb4d6d98 100644 --- a/spec/lib/post_destroyer_spec.rb +++ b/spec/lib/post_destroyer_spec.rb @@ -647,7 +647,7 @@ RSpec.describe PostDestroyer do describe "deleting a post directly after a whisper" do before do - SiteSetting.enable_whispers = true + SiteSetting.whispers_allowed_groups = "#{Group::AUTO_GROUPS[:staff]}" end it 'should not set Topic#last_post_user_id to a whisperer' do diff --git a/spec/lib/search_spec.rb b/spec/lib/search_spec.rb index c4ca2171c85..b7f9fd283ad 100644 --- a/spec/lib/search_spec.rb +++ b/spec/lib/search_spec.rb @@ -945,8 +945,7 @@ RSpec.describe Search do it 'allows staff and members of whisperers group to search for whispers' do whisperers_group = Fabricate(:group) user = Fabricate(:user) - SiteSetting.enable_whispers = true - SiteSetting.whispers_allowed_groups = "#{whisperers_group.id}" + SiteSetting.whispers_allowed_groups = "#{Group::AUTO_GROUPS[:staff]}|#{whisperers_group.id}" post.update!(post_type: Post.types[:whisper], raw: 'this is a tiger') diff --git a/spec/lib/topic_query_spec.rb b/spec/lib/topic_query_spec.rb index 3b689982f5d..3f3b64c41ae 100644 --- a/spec/lib/topic_query_spec.rb +++ b/spec/lib/topic_query_spec.rb @@ -829,7 +829,7 @@ RSpec.describe TopicQuery do context 'with whispers' do before do - SiteSetting.enable_whispers = true + SiteSetting.whispers_allowed_groups = "#{Group::AUTO_GROUPS[:staff]}" end it 'correctly shows up in unread for staff' do @@ -1079,13 +1079,8 @@ RSpec.describe TopicQuery do end describe '#list_related_for' do - let(:user) do - Fabricate(:admin) - end - - let(:sender) do - Fabricate(:admin) - end + let(:user) { Fabricate(:user) } + let(:sender) { Fabricate(:user) } let(:group_with_user) do group = Fabricate(:group, messageable_level: Group::ALIAS_LEVELS[:everyone]) diff --git a/spec/lib/topic_view_spec.rb b/spec/lib/topic_view_spec.rb index 4e75ee2d36e..f31def4d8c3 100644 --- a/spec/lib/topic_view_spec.rb +++ b/spec/lib/topic_view_spec.rb @@ -342,7 +342,7 @@ RSpec.describe TopicView do describe '.post_counts_by_user' do it 'returns the two posters with their appropriate counts' do - SiteSetting.enable_whispers = true + SiteSetting.whispers_allowed_groups = "#{Group::AUTO_GROUPS[:staff]}" Fabricate(:post, topic: topic, user: evil_trout, post_type: Post.types[:whisper]) # Should not be counted Fabricate(:post, topic: topic, user: evil_trout, post_type: Post.types[:whisper], action_code: 'assign') @@ -480,7 +480,7 @@ RSpec.describe TopicView do describe 'whispers' do it "handles their visibility properly" do - SiteSetting.enable_whispers = true + SiteSetting.whispers_allowed_groups = "#{Group::AUTO_GROUPS[:staff]}" p1 = Fabricate(:post, topic: topic, user: evil_trout) p2 = Fabricate(:post, topic: topic, user: evil_trout, post_type: Post.types[:whisper]) p3 = Fabricate(:post, topic: topic, user: evil_trout) diff --git a/spec/lib/topics_bulk_action_spec.rb b/spec/lib/topics_bulk_action_spec.rb index 886e4dc243e..06b4380a692 100644 --- a/spec/lib/topics_bulk_action_spec.rb +++ b/spec/lib/topics_bulk_action_spec.rb @@ -95,7 +95,7 @@ RSpec.describe TopicsBulkAction do context "when the highest_staff_post_number is > highest_post_number for a topic (e.g. whisper is last post)" do it "dismisses posts" do - SiteSetting.enable_whispers = true + SiteSetting.whispers_allowed_groups = "#{Group::AUTO_GROUPS[:staff]}" post1 = create_post(user: user) p = create_post(topic_id: post1.topic_id) create_post(topic_id: post1.topic_id) diff --git a/spec/lib/unread_spec.rb b/spec/lib/unread_spec.rb index 88d3a1c66a1..b817454c7b7 100644 --- a/spec/lib/unread_spec.rb +++ b/spec/lib/unread_spec.rb @@ -27,8 +27,8 @@ RSpec.describe Unread do describe 'staff counts' do it 'should correctly return based on staff post number' do - SiteSetting.enable_whispers = true - user.admin = true + SiteSetting.whispers_allowed_groups = "#{Group::AUTO_GROUPS[:staff]}" + user.grant_admin! topic_user.last_read_post_number = 13 @@ -48,15 +48,13 @@ RSpec.describe Unread do end it 'returns the right unread posts for a staff user' do - SiteSetting.enable_whispers = true - SiteSetting.whispers_allowed_groups = "" - user.admin = true + SiteSetting.whispers_allowed_groups = "#{Group::AUTO_GROUPS[:staff]}" + user.grant_admin! topic_user.last_read_post_number = 10 expect(unread.unread_posts).to eq(5) end it 'returns the right unread posts for a whisperer user' do - SiteSetting.enable_whispers = true SiteSetting.whispers_allowed_groups = "#{whisperers_group.id}" topic_user.last_read_post_number = 10 expect(unread.unread_posts).to eq(5) diff --git a/spec/models/post_action_spec.rb b/spec/models/post_action_spec.rb index c24c8d17ac5..584a543d5ba 100644 --- a/spec/models/post_action_spec.rb +++ b/spec/models/post_action_spec.rb @@ -427,7 +427,7 @@ RSpec.describe PostAction do end it 'should not increase topic like count when liking a whisper' do - SiteSetting.set(:enable_whispers, true) + SiteSetting.whispers_allowed_groups = "#{Group::AUTO_GROUPS[:staff]}" post.revise(admin, post_type: Post.types[:whisper]) PostActionCreator.like(admin, post) diff --git a/spec/models/post_spec.rb b/spec/models/post_spec.rb index a8c10b99a75..54fc03cd9b3 100644 --- a/spec/models/post_spec.rb +++ b/spec/models/post_spec.rb @@ -1616,7 +1616,7 @@ RSpec.describe Post do end it "will update topic updated_at for all topic related events" do - SiteSetting.enable_whispers = true + SiteSetting.whispers_allowed_groups = "#{Group::AUTO_GROUPS[:staff]}" post = updates_topic_updated_at do create_post(topic_id: topic.id, post_type: Post.types[:whisper]) diff --git a/spec/models/private_message_topic_tracking_state_spec.rb b/spec/models/private_message_topic_tracking_state_spec.rb index 2e24ecd2081..5d3968a0ed9 100644 --- a/spec/models/private_message_topic_tracking_state_spec.rb +++ b/spec/models/private_message_topic_tracking_state_spec.rb @@ -69,7 +69,7 @@ RSpec.describe PrivateMessageTopicTrackingState do end it 'returns the right tracking state when topics contain whispers' do - SiteSetting.enable_whispers = true + SiteSetting.whispers_allowed_groups = "#{Group::AUTO_GROUPS[:staff]}" TopicUser.find_by(user: user_2, topic: private_message).update!( last_read_post_number: 1 ) diff --git a/spec/models/topic_spec.rb b/spec/models/topic_spec.rb index 11c13e0a91f..c21004fbbab 100644 --- a/spec/models/topic_spec.rb +++ b/spec/models/topic_spec.rb @@ -168,8 +168,7 @@ RSpec.describe Topic do let(:types) { Post.types } before do - SiteSetting.enable_whispers = true - SiteSetting.whispers_allowed_groups = "#{whisperers_group.id}" + SiteSetting.whispers_allowed_groups = "#{Group::AUTO_GROUPS[:staff]}|#{whisperers_group.id}" end it "returns the appropriate types for anonymous users" do diff --git a/spec/models/topic_tracking_state_spec.rb b/spec/models/topic_tracking_state_spec.rb index e3e271a621b..87ed69c45ce 100644 --- a/spec/models/topic_tracking_state_spec.rb +++ b/spec/models/topic_tracking_state_spec.rb @@ -29,7 +29,6 @@ RSpec.describe TopicTrackingState do whisperers_group = Fabricate(:group) Fabricate(:user, groups: [whisperers_group]) Fabricate(:topic_user_watching, topic: topic, user: user) - SiteSetting.enable_whispers = true SiteSetting.whispers_allowed_groups = "#{whisperers_group.id}" post.update!(post_type: Post.types[:whisper]) @@ -69,7 +68,7 @@ RSpec.describe TopicTrackingState do end it 'correctly publish read for staff' do - SiteSetting.enable_whispers = true + SiteSetting.whispers_allowed_groups = "#{Group::AUTO_GROUPS[:staff]}" create_post( raw: "this is a test post", topic: post.topic, @@ -137,7 +136,6 @@ RSpec.describe TopicTrackingState do it "publishes whisper post to staff users and members of whisperers group" do whisperers_group = Fabricate(:group) Fabricate(:topic_user_watching, topic: topic, user: user) - SiteSetting.enable_whispers = true SiteSetting.whispers_allowed_groups = "#{whisperers_group.id}" post.update!(post_type: Post.types[:whisper]) @@ -159,7 +157,7 @@ RSpec.describe TopicTrackingState do end it "does not publish whisper post to non-staff users" do - SiteSetting.enable_whispers = true + SiteSetting.whispers_allowed_groups = "#{Group::AUTO_GROUPS[:staff]}" post.update!(post_type: Post.types[:whisper]) messages = MessageBus.track_publish("/unread") do @@ -676,7 +674,7 @@ RSpec.describe TopicTrackingState do describe ".report" do it "correctly reports topics with staff posts" do - SiteSetting.enable_whispers = true + SiteSetting.whispers_allowed_groups = "#{Group::AUTO_GROUPS[:staff]}" create_post( raw: "this is a test post", topic: topic, diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index f201ceb4c9f..bba50c396e7 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -2920,24 +2920,21 @@ RSpec.describe User do end describe "#whisperer?" do - before do - SiteSetting.enable_whispers = true - end + fab!(:group) { Fabricate(:group) } it 'returns true for an admin user' do + SiteSetting.whispers_allowed_groups = "#{group.id}" + admin = Fabricate.create(:admin) expect(admin.whisperer?).to eq(true) end it 'returns false for an admin user when whispers are not enabled' do - SiteSetting.enable_whispers = false - admin = Fabricate.create(:admin) expect(admin.whisperer?).to eq(false) end it 'returns true for user belonging to whisperers groups' do - group = Fabricate(:group) whisperer = Fabricate(:user) user = Fabricate(:user) SiteSetting.whispers_allowed_groups = "#{group.id}" @@ -2950,6 +2947,10 @@ RSpec.describe User do expect(whisperer.whisperer?).to eq(true) expect(user.whisperer?).to eq(false) end + + it 'returns false if no whispers groups exist' do + expect(subject.whisperer?).to eq(false) + end end describe "#grouped_unread_notifications" do diff --git a/spec/requests/list_controller_spec.rb b/spec/requests/list_controller_spec.rb index d98121066c4..a23955f681a 100644 --- a/spec/requests/list_controller_spec.rb +++ b/spec/requests/list_controller_spec.rb @@ -209,8 +209,6 @@ RSpec.describe ListController do end describe '#private_messages_group' do - fab!(:user) { Fabricate(:user) } - describe 'when user not in personal_message_enabled_groups group' do let!(:topic) { Fabricate(:private_message_topic, allowed_groups: [group]) } @@ -245,7 +243,6 @@ RSpec.describe ListController do it "should not display group private messages for a moderator's group" do moderator = Fabricate(:moderator) sign_in(moderator) - group.add(moderator) get "/topics/private-messages-group/#{user.username}/#{group.name}.json" diff --git a/spec/requests/posts_controller_spec.rb b/spec/requests/posts_controller_spec.rb index c2bc9181519..33c9c21e173 100644 --- a/spec/requests/posts_controller_spec.rb +++ b/spec/requests/posts_controller_spec.rb @@ -806,7 +806,7 @@ RSpec.describe PostsController do before do SiteSetting.min_first_post_typing_time = 0 - SiteSetting.enable_whispers = true + SiteSetting.whispers_allowed_groups = "#{Group::AUTO_GROUPS[:staff]}" end context 'with api' do diff --git a/spec/requests/users_controller_spec.rb b/spec/requests/users_controller_spec.rb index 3f6014298cc..9c451a2b88a 100644 --- a/spec/requests/users_controller_spec.rb +++ b/spec/requests/users_controller_spec.rb @@ -4202,7 +4202,7 @@ RSpec.describe UsersController do end it "includes all post types for staff members" do - SiteSetting.enable_whispers = true + SiteSetting.whispers_allowed_groups = "#{Group::AUTO_GROUPS[:staff]}" sign_in(admin) get "/u/#{admin.username}.json", params: { include_post_count_for: topic.id } diff --git a/spec/serializers/user_post_bookmark_serializer_spec.rb b/spec/serializers/user_post_bookmark_serializer_spec.rb index 13dacd5d9ab..676ebae13fe 100644 --- a/spec/serializers/user_post_bookmark_serializer_spec.rb +++ b/spec/serializers/user_post_bookmark_serializer_spec.rb @@ -10,7 +10,6 @@ RSpec.describe UserPostBookmarkSerializer do let(:whisperers_group) { Fabricate(:group) } before do - SiteSetting.enable_whispers = true SiteSetting.whispers_allowed_groups = "#{whisperers_group.id}" end