diff --git a/app/services/moderator/manage_activity_and_roles.rb b/app/services/moderator/manage_activity_and_roles.rb index 7b30cb120..511552d52 100644 --- a/app/services/moderator/manage_activity_and_roles.rb +++ b/app/services/moderator/manage_activity_and_roles.rb @@ -72,10 +72,12 @@ module Moderator check_super_admin remove_negative_roles user.add_role(:admin) + TagModerators::AddTrustedRole.call(user) when "Super Admin" check_super_admin remove_negative_roles user.add_role(:super_admin) + TagModerators::AddTrustedRole.call(user) when "Tech Admin" check_super_admin remove_negative_roles diff --git a/db/seeds.rb b/db/seeds.rb index 76f0710c0..cbdbe4647 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -143,6 +143,7 @@ seeder.create_if_doesnt_exist(User, "email", "admin@forem.local") do ) user.add_role(:super_admin) + user.add_role(:trusted) user.add_role(:tech_admin) end diff --git a/spec/requests/admin/users_manage_spec.rb b/spec/requests/admin/users_manage_spec.rb index d52e42b2f..6372bc587 100644 --- a/spec/requests/admin/users_manage_spec.rb +++ b/spec/requests/admin/users_manage_spec.rb @@ -149,8 +149,7 @@ RSpec.describe "Admin::Users", type: :request do params = { user: { user_status: "Super Admin", note_for_current_role: "they deserve it for some reason" } } patch user_status_admin_user_path(user.id), params: params - expect(user.roles.count).to eq(1) - expect(user.roles.last.name).to eq("super_admin") + expect(user.has_role?(:super_admin)).to be(true) end it "does not allow non-super-admin to doll out admin" do diff --git a/spec/services/moderator/manage_activity_and_roles_spec.rb b/spec/services/moderator/manage_activity_and_roles_spec.rb index 311afc1d3..11c46fc89 100644 --- a/spec/services/moderator/manage_activity_and_roles_spec.rb +++ b/spec/services/moderator/manage_activity_and_roles_spec.rb @@ -25,15 +25,35 @@ RSpec.describe Moderator::ManageActivityAndRoles, type: :service do expect(user.has_role?(:super_admin)).to be true end + it "assigns trusted role to user that's updated to super admin" do + described_class.handle_user_roles( + admin: admin, + user: user, + user_params: { note_for_current_role: "Upgrading to super admin", user_status: "Super Admin" }, + ) + expect(user.has_role?(:super_admin)).to be true + expect(user.has_role?(:trusted)).to be true + end + it "updates user to admin" do described_class.handle_user_roles( admin: admin, user: user, - user_params: { note_for_current_role: "Upgrading to super admin", user_status: "Admin" }, + user_params: { note_for_current_role: "Upgrading to admin", user_status: "Admin" }, ) expect(user.has_role?(:admin)).to be true end + it "assigns trusted role to user that's updated to admin" do + described_class.handle_user_roles( + admin: admin, + user: user, + user_params: { note_for_current_role: "Upgrading to admin", user_status: "Admin" }, + ) + expect(user.has_role?(:admin)).to be true + expect(user.has_role?(:trusted)).to be true + end + it "updates user to tech admin" do described_class.handle_user_roles( admin: admin,