[deploy] Delete all users via the DeleteWorker for consistency (#7013)
This commit is contained in:
parent
6904854629
commit
40f15e68d0
5 changed files with 34 additions and 27 deletions
|
|
@ -20,17 +20,14 @@ module Moderator
|
|||
@ghost = User.find_by(username: "ghost")
|
||||
reassign_articles
|
||||
reassign_comments
|
||||
delete_non_content_activity_and_user
|
||||
delete_user
|
||||
CacheBuster.bust("/ghost")
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def delete_non_content_activity_and_user
|
||||
delete_user_activity
|
||||
user.unsubscribe_from_newsletters
|
||||
CacheBuster.bust("/#{user.username}")
|
||||
user.delete
|
||||
def delete_user
|
||||
Users::DeleteWorker.new.perform(user.id, true)
|
||||
end
|
||||
|
||||
def reassign_comments
|
||||
|
|
|
|||
|
|
@ -20,9 +20,8 @@ module Moderator
|
|||
merge_follows
|
||||
merge_chat_mentions
|
||||
merge_profile
|
||||
remove_additional_email
|
||||
update_social
|
||||
@delete_user.delete
|
||||
Users::DeleteWorker.new.perform(@delete_user.id, true)
|
||||
@keep_user.touch(:profile_updated_at)
|
||||
|
||||
CacheBuster.bust("/#{@keep_user.username}")
|
||||
|
|
@ -49,24 +48,6 @@ module Moderator
|
|||
end
|
||||
end
|
||||
|
||||
def remove_additional_email
|
||||
return if @delete_user.email.blank?
|
||||
|
||||
email_attr = {
|
||||
email_comment_notifications: false,
|
||||
email_digest_periodic: false,
|
||||
email_follower_notifications: false,
|
||||
email_mention_notifications: false,
|
||||
email_newsletter: false,
|
||||
email_unread_notifications: false,
|
||||
email_badge_notifications: false,
|
||||
email_membership_newsletter: false
|
||||
}
|
||||
|
||||
@delete_user.update(email_attr)
|
||||
@delete_user.unsubscribe_from_newsletters
|
||||
end
|
||||
|
||||
def merge_profile
|
||||
if @delete_user.github_repos.any?
|
||||
@delete_user.github_repos.update_all(user_id: @keep_user.id)
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ module Users
|
|||
delete_user_activity
|
||||
user.unsubscribe_from_newsletters
|
||||
CacheBuster.bust("/#{user.username}")
|
||||
user.delete
|
||||
user.destroy
|
||||
Rails.cache.delete("user-destroy-token-#{user.id}")
|
||||
end
|
||||
|
||||
|
|
|
|||
20
spec/services/moderator/merge_user_spec.rb
Normal file
20
spec/services/moderator/merge_user_spec.rb
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
require "rails_helper"
|
||||
|
||||
RSpec.describe Moderator::MergeUser, type: :service do
|
||||
let!(:keep_user) { create(:user) }
|
||||
let!(:delete_user) { create(:user) }
|
||||
let(:delete_user_id) { delete_user.id }
|
||||
let(:admin) { create(:user, :super_admin) }
|
||||
|
||||
describe "#merge" do
|
||||
before { sidekiq_perform_enqueued_jobs }
|
||||
|
||||
it "deletes delete_user_id and keeps keep_user" do
|
||||
sidekiq_perform_enqueued_jobs do
|
||||
described_class.call_merge(admin: admin, keep_user: keep_user, delete_user_id: delete_user.id)
|
||||
end
|
||||
expect(User.find_by(id: delete_user_id)).to be_nil
|
||||
expect(User.find_by(id: keep_user.id)).not_to be_nil
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -35,6 +35,15 @@ RSpec.describe Users::Delete, type: :service do
|
|||
expect(Rails.cache).to have_received(:delete).with("user-destroy-token-#{user.id}")
|
||||
end
|
||||
|
||||
it "removes user from Elasticsearch" do
|
||||
sidekiq_perform_enqueued_jobs { user }
|
||||
expect(user.elasticsearch_doc).not_to be_nil
|
||||
sidekiq_perform_enqueued_jobs do
|
||||
described_class.call(user)
|
||||
end
|
||||
expect { user.elasticsearch_doc }.to raise_error(Search::Errors::Transport::NotFound)
|
||||
end
|
||||
|
||||
# check that all the associated records are being destroyed, except for those that are kept explicitly (kept_associations)
|
||||
describe "deleting associations" do
|
||||
let(:kept_association_names) { %i[created_podcasts notes offender_feedback_messages reporter_feedback_messages affected_feedback_messages] }
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue