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:
Roman Rizzi
2022-07-27 11:34:08 -03:00
committed by GitHub
parent c9d22b643f
commit f1c3670d74
5 changed files with 152 additions and 7 deletions

View File

@@ -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])