From dffd8baa91d26c029c23ff7109f6ab90caac7a21 Mon Sep 17 00:00:00 2001 From: Ming HU Date: Tue, 18 Oct 2016 17:10:47 +0800 Subject: [PATCH 1/2] Remove user from a group by user email --- app/controllers/groups_controller.rb | 2 ++ spec/controllers/groups_controller_spec.rb | 7 +++++++ 2 files changed, 9 insertions(+) diff --git a/app/controllers/groups_controller.rb b/app/controllers/groups_controller.rb index 311a11b2f91..b4024a280ad 100644 --- a/app/controllers/groups_controller.rb +++ b/app/controllers/groups_controller.rb @@ -128,6 +128,8 @@ class GroupsController < ApplicationController user = User.find(params[:user_id]) elsif params[:username].present? user = User.find_by_username(params[:username]) + elsif params[:user_email].present? + user = User.find_by_email(params[:user_email]) else raise Discourse::InvalidParameters.new('user_id or username must be present') end diff --git a/spec/controllers/groups_controller_spec.rb b/spec/controllers/groups_controller_spec.rb index fded427a080..c770d8408d5 100644 --- a/spec/controllers/groups_controller_spec.rb +++ b/spec/controllers/groups_controller_spec.rb @@ -224,6 +224,13 @@ describe GroupsController do user.reload expect(user.primary_group_id).to eq(nil) end + + it "removes by user_email" do + xhr :delete, :remove_member, id: group.id, user_email: user.email + expect(response).to be_success + group.reload + expect(group.users.count).to eq(0) + end end end From 7803a06e50844c2dbb4018e7920ab6e93855a34d Mon Sep 17 00:00:00 2001 From: Ming HU Date: Mon, 24 Oct 2016 10:32:21 +0800 Subject: [PATCH 2/2] Use expect change for groups_controller_spec.rb --- spec/controllers/groups_controller_spec.rb | 28 ++++++++++++---------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/spec/controllers/groups_controller_spec.rb b/spec/controllers/groups_controller_spec.rb index c770d8408d5..b926e4d6c62 100644 --- a/spec/controllers/groups_controller_spec.rb +++ b/spec/controllers/groups_controller_spec.rb @@ -200,19 +200,22 @@ describe GroupsController do end it "removes by id" do - xhr :delete, :remove_member, id: group.id, user_id: user.id + expect do + xhr :delete, :remove_member, id: group.id, user_id: user.id - expect(response).to be_success - group.reload - expect(group.users.count).to eq(0) + expect(response).to be_success + group.reload + end.to change{group.users.count}.from(1).to(0) end it "removes by username" do - xhr :delete, :remove_member, id: group.id, username: user.username + expect do + xhr :delete, :remove_member, id: group.id, username: user.username - expect(response).to be_success - group.reload - expect(group.users.count).to eq(0) + expect(response).to be_success + group.reload + + end.to change{group.users.count}.from(1).to(0) end it "removes user.primary_group_id when user is removed from group" do @@ -226,10 +229,11 @@ describe GroupsController do end it "removes by user_email" do - xhr :delete, :remove_member, id: group.id, user_email: user.email - expect(response).to be_success - group.reload - expect(group.users.count).to eq(0) + expect do + xhr :delete, :remove_member, id: group.id, user_email: user.email + expect(response).to be_success + group.reload + end.to change{group.users.count}.from(1).to(0) end end