mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
FIX: Publish membership update events when refreshing automatic groups. (#17668)
Adding or removing users from automatic groups is now consistent with `Group#add` and `Group#remove`.
This commit is contained in:
@@ -242,6 +242,41 @@ describe Group do
|
||||
expect(GroupUser.where(user_id: staged.id).count).to eq(2)
|
||||
end
|
||||
|
||||
describe 'after updating automatic group members' do
|
||||
fab!(:user) { Fabricate(:user) }
|
||||
|
||||
it 'triggers an event when a user is removed from an automatic group' do
|
||||
tl3_users = Group.find(Group::AUTO_GROUPS[:trust_level_3])
|
||||
tl3_users.add(user)
|
||||
|
||||
events = DiscourseEvent.track_events do
|
||||
Group.refresh_automatic_group!(:trust_level_3)
|
||||
end
|
||||
|
||||
expect(GroupUser.exists?(group: tl3_users, user: user)).to eq(false)
|
||||
publish_event_job_args = Jobs::PublishGroupMembershipUpdates.jobs.last['args'].first
|
||||
expect(publish_event_job_args["user_ids"]).to include(user.id)
|
||||
expect(publish_event_job_args["group_id"]).to eq(tl3_users.id)
|
||||
expect(publish_event_job_args["type"]).to include('remove')
|
||||
end
|
||||
|
||||
it 'triggers an event when a user is added to an automatic group' do
|
||||
tl0_users = Group.find(Group::AUTO_GROUPS[:trust_level_0])
|
||||
|
||||
expect(GroupUser.exists?(group: tl0_users, user: user)).to eq(false)
|
||||
|
||||
events = DiscourseEvent.track_events do
|
||||
Group.refresh_automatic_group!(:trust_level_0)
|
||||
end
|
||||
|
||||
expect(GroupUser.exists?(group: tl0_users, user: user)).to eq(true)
|
||||
publish_event_job_args = Jobs::PublishGroupMembershipUpdates.jobs.last['args'].first
|
||||
expect(publish_event_job_args["user_ids"]).to include(user.id)
|
||||
expect(publish_event_job_args["group_id"]).to eq(tl0_users.id)
|
||||
expect(publish_event_job_args["type"]).to eq('add')
|
||||
end
|
||||
end
|
||||
|
||||
it "makes sure the everyone group is not visible except to staff" do
|
||||
g = Group.refresh_automatic_group!(:everyone)
|
||||
expect(g.visibility_level).to eq(Group.visibility_levels[:staff])
|
||||
|
||||
Reference in New Issue
Block a user