FEATURE: Support designating multiple groups as mods on category (#28655)

Currently, categories support designating only 1 group as a moderation group on the category. This commit removes the one group limitation and makes it possible to designate multiple groups as mods on a category.

Internal topic: t/124648.
This commit is contained in:
Osama Sayegh
2024-09-04 04:38:46 +03:00
committed by GitHub
parent 7092d88ee4
commit 280adda09c
49 changed files with 388 additions and 273 deletions

View File

@@ -54,8 +54,9 @@ RSpec.describe Jobs::NotifyReviewable do
moderator.update!(last_seen_reviewable_id: moderator_reviewable.id)
# Content for a group
group_reviewable =
Fabricate(:reviewable, reviewable_by_moderator: true, reviewable_by_group: group)
category = Fabricate(:category)
Fabricate(:category_moderation_group, category:, group:)
group_reviewable = Fabricate(:reviewable, reviewable_by_moderator: true, category:)
messages =
MessageBus.track_publish { described_class.new.execute(reviewable_id: group_reviewable.id) }
@@ -85,7 +86,9 @@ RSpec.describe Jobs::NotifyReviewable do
SiteSetting.enable_category_group_moderation = false
GroupUser.create!(group_id: group.id, user_id: moderator.id)
reviewable = Fabricate(:reviewable, reviewable_by_moderator: true, reviewable_by_group: group)
category = Fabricate(:category)
Fabricate(:category_moderation_group, category:, group:)
reviewable = Fabricate(:reviewable, reviewable_by_moderator: true, category:)
messages =
MessageBus.track_publish("/reviewable_counts") do

View File

@@ -5,20 +5,16 @@ RSpec.describe Jobs::RefreshUsersReviewableCounts do
fab!(:moderator)
fab!(:user)
fab!(:group)
fab!(:topic)
fab!(:reviewable1) do
Fabricate(:reviewable, reviewable_by_group: group, reviewable_by_moderator: true, topic: topic)
end
fab!(:group) { Fabricate(:group, users: [user]) }
fab!(:category)
fab!(:topic) { Fabricate(:topic, category:) }
fab!(:category_moderation_group) { Fabricate(:category_moderation_group, category:, group:) }
fab!(:reviewable1) { Fabricate(:reviewable, reviewable_by_moderator: true, topic:, category:) }
fab!(:reviewable2) { Fabricate(:reviewable, reviewable_by_moderator: false) }
fab!(:reviewable3) { Fabricate(:reviewable, reviewable_by_moderator: true) }
before do
SiteSetting.enable_category_group_moderation = true
group.add(user)
topic.category.update!(reviewable_by_group: group)
end
before { SiteSetting.enable_category_group_moderation = true }
describe "#execute" do
it "publishes reviewable counts for the members of the specified groups" do