0
0
Fork 0
mirror of https://github.com/discourse/discourse.git synced 2026-08-13 13:17:29 +08:00
discourse/plugins/discourse-assign/spec/serializers/group_show_serializer_spec.rb
Mark VanLandingham 2aaa6a5ca3
FEATURE: Add category-level assignment permissions (#40412)
Previously, assignment permissions only came from the global
`assign_allowed_on_groups` site setting.

This change lets categories grant assignment permission to additional
groups, keeping assignment controls and assignee suggestions scoped to
the relevant category.
2026-06-08 09:59:40 -05:00

33 lines
1.1 KiB
Ruby
Vendored

# frozen_string_literal: true
RSpec.describe GroupShowSerializer do
fab!(:user)
fab!(:group) { Fabricate(:group, assignable_level: Group::ALIAS_LEVELS[:everyone]) }
fab!(:group_user) { Fabricate(:group_user, group: group, user: user) }
fab!(:topic)
fab!(:post) { Fabricate(:post, topic: topic) }
fab!(:topic2, :topic)
fab!(:post2) { Fabricate(:post, topic: topic2) }
let(:guardian) { Guardian.new(user) }
let(:serializer) { described_class.new(group, scope: guardian) }
before do
SiteSetting.assign_enabled = true
SiteSetting.assign_allowed_on_groups = group.id.to_s
end
it "counts assigned users and groups" do
Assigner.new(topic, user).assign(user)
expect(serializer.as_json[:group_show][:assignment_count]).to eq(1)
Assigner.new(topic2, user).assign(group)
expect(serializer.as_json[:group_show][:assignment_count]).to eq(2)
end
it "omits assignment count for scoped users" do
SiteSetting.assign_allowed_on_groups = ""
allow_group_to_assign_in_category(Fabricate(:category), group)
expect(serializer.as_json[:group_show]).not_to have_key(:assignment_count)
end
end