Try renaming moderator -> super_moderator (#18261)

* Try renaming moderator -> super_moderator

* Still finding 'moderator' words

* Fixes for failing specs

* Update test with new role name

* Update app/services/moderator/manage_activity_and_roles.rb

Co-authored-by: Suzanne Aitchison <suzanne@forem.com>

Co-authored-by: Suzanne Aitchison <suzanne@forem.com>
This commit is contained in:
Joshua Wehner 2022-08-10 16:43:30 +02:00 committed by GitHub
parent d121916c84
commit 445fd0f9e5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
23 changed files with 82 additions and 28 deletions

View file

@ -125,7 +125,7 @@ class ReactionsController < ApplicationController
reactable_type: params[:reactable_type],
category: category
}
if (current_user&.any_admin? || current_user&.moderator?) &&
if (current_user&.any_admin? || current_user&.super_moderator?) &&
Reaction::NEGATIVE_PRIVILEGED_CATEGORIES.include?(category)
create_params[:status] = "confirmed"
end

View file

@ -5,7 +5,7 @@ module Admin
if logged_in_user.super_admin?
special_roles = Constants::Role::SPECIAL_ROLES
if FeatureFlag.enabled?(:moderator_role)
special_roles = special_roles.dup << "Moderator"
special_roles = special_roles.dup << "Super Moderator"
end
options["Roles"] = special_roles
end

View file

@ -5,7 +5,7 @@ class Role < ApplicationRecord
comment_suspended
creator
mod_relations_admin
moderator
super_moderator
podcast_admin
restricted_liquid_tag
single_resource_admin

View file

@ -19,7 +19,7 @@ class TagAdjustment < ApplicationRecord
end
def elevated_user?
user.any_admin? || user.moderator?
user.any_admin? || user.super_moderator?
end
def has_privilege_to_adjust?

View file

@ -402,7 +402,7 @@ class User < ApplicationRecord
:comment_suspended?,
:creator?,
:has_trusted_role?,
:moderator?,
:super_moderator?,
:podcast_admin_for?,
:restricted_liquid_tag_for?,
:single_resource_admin_for?,

View file

@ -199,7 +199,7 @@ class ApplicationPolicy
delegate :support_admin?, to: :user
delegate :moderator?, :super_admin?, :any_admin?, :suspended?, to: :user, prefix: true
delegate :super_moderator?, :super_admin?, :any_admin?, :suspended?, to: :user, prefix: true
alias minimal_admin? user_any_admin?
deprecate minimal_admin?: "Deprecating #{self}#minimal_admin?, use #{self}#user_any_admin?"

View file

@ -150,7 +150,7 @@ class ArticlePolicy < ApplicationPolicy
end
def elevated_user?
user_any_admin? || user_moderator?
user_any_admin? || user_super_moderator?
end
# this method performs the same checks that determine:

View file

@ -76,7 +76,7 @@ module Authorizer
end
def accesses_mod_response_templates?
has_trusted_role? || any_admin? || moderator? || tag_moderator?
has_trusted_role? || any_admin? || super_moderator? || tag_moderator?
end
# When you need to know if we trust the user, but don't want to
@ -96,8 +96,8 @@ module Authorizer
has_role?(:trusted)
end
def moderator?
has_role?(:moderator)
def super_moderator?
has_role?(:super_moderator)
end
def podcast_admin_for?(podcast)

View file

@ -32,6 +32,7 @@ class CommentPolicy < ApplicationPolicy
end
def moderator_create?
# NOTE: Here, when we say "moderator", we mean "tag_moderator"
user_moderator? || user_any_admin?
end

View file

@ -62,7 +62,7 @@ class ResponseTemplatePolicy < ApplicationPolicy
end
def user_moderator?
user_any_admin? || user.moderator_for_tags&.present?
user_any_admin? || user.super_moderator? || user.moderator_for_tags&.present?
end
def mod_comment?

View file

@ -90,7 +90,7 @@ class UserPolicy < ApplicationPolicy
end
def elevated_user?
user_any_admin? || user_moderator?
user_any_admin? || user_super_moderator?
end
alias toggle_suspension_status? elevated_user?

View file

@ -68,8 +68,8 @@ module Moderator
when "Suspended" || "Spammer"
user.add_role(:suspended)
remove_privileges
when "Moderator"
assign_elevated_role_to_user(user, :moderator)
when "Super Moderator"
assign_elevated_role_to_user(user, :super_moderator)
TagModerators::AddTrustedRole.call(user)
when "Good standing"
regular_member

View file

@ -0,0 +1,7 @@
module DataUpdateScripts
class RenameModeratorToSuperModerator
def run
Role.where(name: "moderator").update_all(name: "super_moderator")
end
end
end

View file

@ -71,8 +71,8 @@ FactoryBot.define do
after(:build) { |user| user.add_role(:admin) }
end
trait :moderator do
after(:build) { |user| user.add_role(:moderator) }
trait :super_moderator do
after(:build) { |user| user.add_role(:super_moderator) }
end
trait :single_resource_admin do

View file

@ -24,7 +24,7 @@ describe Admin::UsersHelper do
roles = helper.role_options(user)
expect(roles).to have_key("Roles")
expect(roles["Roles"]).to include "Moderator"
expect(roles["Roles"]).to include "Super Moderator"
end
end

View file

@ -0,0 +1,46 @@
require "rails_helper"
require Rails.root.join(
"lib/data_update_scripts/20220802100730_rename_moderator_to_super_moderator.rb",
)
describe DataUpdateScripts::RenameModeratorToSuperModerator do
before do
create :user
create :user, :tag_moderator
create :user, :super_admin
end
context "when there are no moderators" do
it "does nothing" do
expect(described_class.new.run).to eq(0)
end
end
context "when there are users with the moderator role" do
let!(:moderator) do
# moderator is no longer a valid name, so to stage a user with the old role
# we can't use the convenience methods as we need to bypass validation
role = Role.new name: "moderator"
role.save validate: false
create(:user) do |user|
user.roles << role
end
end
it "updates those records" do
expect(moderator.roles.pluck(:name)).to contain_exactly("moderator")
expect(described_class.new.run).to eq(1)
expect(moderator.reload).to be_super_moderator
end
end
context "when rename has already run" do
let!(:super_moderator) { create :user, :super_moderator }
it "does nothing" do
expect(described_class.new.run).to eq(0)
expect(super_moderator.reload).to be_super_moderator
end
end
end

View file

@ -10,7 +10,7 @@ RSpec.describe Role, type: :model do
expected_roles = %w[
admin codeland_admin comment_suspended mod_relations_admin podcast_admin
restricted_liquid_tag single_resource_admin super_admin support_admin suspended tag_moderator tech_admin
trusted warned workshop_pass creator moderator
trusted warned workshop_pass creator super_moderator
]
expect(described_class::ROLES).to match_array(expected_roles)
end

View file

@ -15,7 +15,7 @@ RSpec.describe ArticlePolicy do
let(:trusted) { create(:user, :trusted) }
let(:other_users) { create(:user) }
let(:author) { create(:user) }
let(:moderator) { create(:user, :moderator) }
let(:moderator) { create(:user, :super_moderator) }
let(:tag_mod) { create(:user, :tag_moderator) }
let(:tagmod_tag) { tag_mod.roles.find_by(name: "tag_moderator").resource }
let(:random_tag) { create(:tag, name: "randomtag") }

View file

@ -6,7 +6,7 @@ RSpec.describe Authorizer, type: :policy do
let(:authorizer_mod_role) { described_class.for(user: mod_user) }
let(:user) { create(:user) }
let(:mod_user) { create(:user, :moderator) }
let(:mod_user) { create(:user, :super_moderator) }
describe "#any_admin?" do
it "queries the user's roles" do
@ -16,10 +16,10 @@ RSpec.describe Authorizer, type: :policy do
end
end
describe "#moderator?" do
describe "#super_moderator?" do
it "queries the user's roles" do
expect(authorizer.moderator?).to be_falsey
expect(authorizer_mod_role.moderator?).to be_truthy
expect(authorizer.super_moderator?).to be_falsey
expect(authorizer_mod_role.super_moderator?).to be_truthy
end
end

View file

@ -52,7 +52,7 @@ RSpec.describe UserPolicy, type: :policy do
end
context "when the user is a moderator" do
let(:user) { build(:user, :moderator) }
let(:user) { build(:user, :super_moderator) }
it { is_expected.to permit_actions(%i[moderation_routes]) }
end

View file

@ -1212,7 +1212,7 @@ RSpec.describe "Api::V1::Articles", type: :request do
end
context "when authorized as moderator" do
before { user.add_role(:moderator) }
before { user.add_role(:super_moderator) }
it "unpublishes an article" do
expect(published_article.published).to be true

View file

@ -120,12 +120,12 @@ RSpec.describe Moderator::ManageActivityAndRoles, type: :service do
end.to raise_error(StandardError)
end
it "updates user to moderator" do
it "updates user to super moderator" do
expect do
described_class.handle_user_roles(
admin: admin,
user: user,
user_params: { note_for_current_role: "Upgrading to moderator", user_status: "Moderator" },
user_params: { note_for_current_role: "Upgrading to super_moderator", user_status: "Super Moderator" },
)
end.to raise_error(StandardError)
end

View file

@ -200,7 +200,7 @@ seeder.create_if_doesnt_exist(User, "email", "moderator-user@forem.local") do
user.profile.update(website_url: Faker::Internet.url)
user.add_role(:moderator)
user.add_role(:super_moderator)
user.add_role(:trusted)
end