mirror of
https://github.com/discourse/discourse.git
synced 2025-05-30 07:11:34 +08:00
FEATURE: Allow bulk removing users from a group
This change maintains backwards compatibility to allow you to remove a single user from a group but allows you to specify a comma separated list of users for bulk removal from a group. Also it extracts out common functionality for fetching users from params used in bulk adding users so it can also be used for removing users.
This commit is contained in:
@ -992,7 +992,7 @@ describe GroupsController do
|
||||
|
||||
it "raises an error if user to be removed is not found" do
|
||||
delete "/groups/#{group.id}/members.json", params: { user_id: -10 }
|
||||
expect(response.status).to eq(404)
|
||||
expect(response.status).to eq(400)
|
||||
end
|
||||
|
||||
context "is able to remove a member" do
|
||||
@ -1065,6 +1065,49 @@ describe GroupsController do
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context '#remove_members' do
|
||||
context "is able to remove several members from a group" do
|
||||
let(:user1) { Fabricate(:user) }
|
||||
let(:user2) { Fabricate(:user) }
|
||||
let(:group1) { Fabricate(:group, users: [user1, user2]) }
|
||||
|
||||
it "removes by username" do
|
||||
expect do
|
||||
delete "/groups/#{group1.id}/members.json",
|
||||
params: { usernames: [user1.username, user2.username].join(",") }
|
||||
end.to change { group1.users.count }.by(-2)
|
||||
expect(response.status).to eq(200)
|
||||
end
|
||||
|
||||
it "removes by id" do
|
||||
expect do
|
||||
delete "/groups/#{group1.id}/members.json",
|
||||
params: { user_ids: [user1.id, user2.id].join(",") }
|
||||
end.to change { group1.users.count }.by(-2)
|
||||
|
||||
expect(response.status).to eq(200)
|
||||
end
|
||||
|
||||
it "removes by email" do
|
||||
expect do
|
||||
delete "/groups/#{group1.id}/members.json",
|
||||
params: { user_emails: [user1.email, user2.email].join(",") }
|
||||
end.to change { group1.users.count }.by(-2)
|
||||
|
||||
expect(response.status).to eq(200)
|
||||
end
|
||||
|
||||
it "only removes users in that group" do
|
||||
expect do
|
||||
delete "/groups/#{group1.id}/members.json",
|
||||
params: { usernames: [user.username, user2.username].join(",") }
|
||||
end.to change { group1.users.count }.by(-1)
|
||||
|
||||
expect(response.status).to eq(200)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
Reference in New Issue
Block a user