UX: New group membership management workflow.

https://meta.discourse.org/t/adding-owners-members-ux-is-inconsistent-and-misleading/58084
This commit is contained in:
Guo Xiang Tan
2018-03-26 16:15:02 +08:00
parent da6c268e56
commit 35745166b5
18 changed files with 218 additions and 60 deletions
+31 -3
View File
@@ -427,12 +427,16 @@ describe GroupsController do
email = 'uniquetest@discourse.org'
user1.update!(email: email)
[email.upcase, 'QUEtes'].each do |filter|
{
email.upcase => [user1.id],
'QUEtes' => [user1.id],
"#{user1.email},#{user2.email}" => [user1.id, user2.id]
}.each do |filter, ids|
get "/groups/#{group.name}/members.json", params: { filter: filter }
expect(response.status).to eq(200)
members = JSON.parse(response.body)["members"]
expect(members.map { |m| m["id"] }).to contain_exactly(user1.id)
expect(members.map { |m| m["id"] }).to contain_exactly(*ids)
end
end
@@ -519,7 +523,7 @@ describe GroupsController do
sign_in(admin)
end
context 'add_members' do
context '#add_members' do
it "can make incremental adds" do
user2 = Fabricate(:user)
@@ -573,12 +577,36 @@ describe GroupsController do
expect(response).to be_success
end
it 'fails when multiple member already exists' do
user3 = Fabricate(:user)
[user2, user3].each { |user| group.add(user) }
expect do
put "/groups/#{group.id}/members.json",
params: { user_emails: [user1.email, user2.email, user3.email].join(",") }
end.to change { group.users.count }.by(0)
expect(response.status).to eq(422)
expect(JSON.parse(response.body)["errors"]).to include(I18n.t(
"groups.errors.member_already_exist",
username: "#{user2.username}, #{user3.username}",
count: 2
))
end
end
it "returns 422 if member already exists" do
put "/groups/#{group.id}/members.json", params: { usernames: user.username }
expect(response.status).to eq(422)
expect(JSON.parse(response.body)["errors"]).to include(I18n.t(
"groups.errors.member_already_exist",
username: user.username,
count: 1
))
end
it "returns 404 if member is not found" do