From f9e85aadb93ba69a8f29dfa8206d56c3e4eed71b Mon Sep 17 00:00:00 2001 From: Ahmad Farhat Date: Thu, 4 Jun 2020 12:05:58 -0400 Subject: [PATCH] Fix home room not being created if user gets assigned new role (#1750) --- app/controllers/concerns/rolify.rb | 2 +- spec/controllers/users_controller_spec.rb | 28 +++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/app/controllers/concerns/rolify.rb b/app/controllers/concerns/rolify.rb index 099d2fb7..f580ed2f 100644 --- a/app/controllers/concerns/rolify.rb +++ b/app/controllers/concerns/rolify.rb @@ -62,7 +62,7 @@ module Rolify # Send promoted/demoted emails send_user_promoted_email(@user, new_role) if new_role.get_permission("send_promoted_email") - @user.update_attribute(:role_id, role_id) + @user.set_role(new_role.name) end # Updates a roles priority diff --git a/spec/controllers/users_controller_spec.rb b/spec/controllers/users_controller_spec.rb index 1159ee11..2a4624d2 100644 --- a/spec/controllers/users_controller_spec.rb +++ b/spec/controllers/users_controller_spec.rb @@ -358,6 +358,34 @@ describe UsersController, type: :controller do expect(user.role.name).to eq("test1") expect(response).to redirect_to(admins_path) end + + it "creates the home room for a user if needed" do + old_role = Role.create(name: "test1", priority: 2, provider: "greenlight") + old_role.update_permission("can_create_rooms", "false") + + new_role = Role.create(name: "test2", priority: 3, provider: "greenlight") + new_role.update_permission("can_create_rooms", "true") + + user = create(:user, role: old_role) + admin = create(:user) + + admin.set_role :admin + + @request.session[:user_id] = admin.id + + params = random_valid_user_params + params = params.merge!(user_uid: user, user: { role_id: new_role.id.to_s }) + + expect(user.role.name).to eq("test1") + expect(user.main_room).to be_nil + + post :update, params: params + + user.reload + expect(user.role.name).to eq("test2") + expect(user.main_room).not_to be_nil + expect(response).to redirect_to(admins_path) + end end end