mirror of
https://github.com/discourse/discourse.git
synced 2025-06-01 07:07:43 +08:00
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:
@ -517,7 +517,7 @@ RSpec.describe CategoriesController do
|
||||
slug: "hello-cat",
|
||||
auto_close_hours: 72,
|
||||
search_priority: Searchable::PRIORITIES[:ignore],
|
||||
reviewable_by_group_name: group.name,
|
||||
moderating_group_ids: [group.id],
|
||||
permissions: {
|
||||
"everyone" => readonly,
|
||||
"staff" => create_post,
|
||||
@ -527,7 +527,7 @@ RSpec.describe CategoriesController do
|
||||
expect(response.status).to eq(200)
|
||||
cat_json = response.parsed_body["category"]
|
||||
expect(cat_json).to be_present
|
||||
expect(cat_json["reviewable_by_group_name"]).to eq(group.name)
|
||||
expect(cat_json["moderating_group_ids"]).to eq([group.id])
|
||||
expect(cat_json["name"]).to eq("hello")
|
||||
expect(cat_json["slug"]).to eq("hello-cat")
|
||||
expect(cat_json["color"]).to eq("ff0")
|
||||
@ -634,6 +634,10 @@ RSpec.describe CategoriesController do
|
||||
end
|
||||
|
||||
describe "#update" do
|
||||
fab!(:mod_group_1) { Fabricate(:group) }
|
||||
fab!(:mod_group_2) { Fabricate(:group) }
|
||||
fab!(:mod_group_3) { Fabricate(:group) }
|
||||
|
||||
before { Jobs.run_immediately! }
|
||||
|
||||
it "requires the user to be logged in" do
|
||||
@ -871,6 +875,47 @@ RSpec.describe CategoriesController do
|
||||
expect(category.custom_fields).to eq({ "field_1" => "hi" })
|
||||
expect(category.form_template_ids.count).to eq(0)
|
||||
end
|
||||
|
||||
it "doesn't set category moderation groups if the enable_category_group_moderation setting is false" do
|
||||
SiteSetting.enable_category_group_moderation = false
|
||||
|
||||
put "/categories/#{category.id}.json", params: { moderating_group_ids: [mod_group_1.id] }
|
||||
expect(response.status).to eq(200)
|
||||
expect(category.reload.moderating_groups).to be_blank
|
||||
end
|
||||
|
||||
it "sets category moderation groups if the enable_category_group_moderation setting is true" do
|
||||
SiteSetting.enable_category_group_moderation = true
|
||||
|
||||
put "/categories/#{category.id}.json", params: { moderating_group_ids: [mod_group_1.id] }
|
||||
expect(response.status).to eq(200)
|
||||
expect(category.reload.moderating_groups).to contain_exactly(mod_group_1)
|
||||
end
|
||||
|
||||
it "removes category moderation groups and adds groups according to the moderating_group_ids param" do
|
||||
SiteSetting.enable_category_group_moderation = true
|
||||
|
||||
category.update!(moderating_group_ids: [mod_group_2.id])
|
||||
expect(category.reload.moderating_groups).to contain_exactly(mod_group_2)
|
||||
|
||||
put "/categories/#{category.id}.json",
|
||||
params: {
|
||||
moderating_group_ids: [mod_group_1.id, mod_group_3.id],
|
||||
}
|
||||
expect(response.status).to eq(200)
|
||||
expect(category.reload.moderating_groups).to contain_exactly(mod_group_1, mod_group_3)
|
||||
end
|
||||
|
||||
it "can remove all category moderation groups" do
|
||||
SiteSetting.enable_category_group_moderation = true
|
||||
|
||||
category.update!(moderating_group_ids: [mod_group_2.id, mod_group_1.id])
|
||||
expect(category.reload.moderating_groups).to contain_exactly(mod_group_2, mod_group_1)
|
||||
|
||||
put "/categories/#{category.id}.json", params: { moderating_group_ids: [] }
|
||||
expect(response.status).to eq(200)
|
||||
expect(category.reload.moderating_groups).to be_blank
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Reference in New Issue
Block a user