[deploy] Fix badge count update after merge (#8210)
This commit is contained in:
parent
753cc49062
commit
780d254690
3 changed files with 18 additions and 8 deletions
|
|
@ -65,7 +65,7 @@ class Internal::UsersController < Internal::ApplicationController
|
|||
def merge
|
||||
@user = User.find(params[:id])
|
||||
begin
|
||||
Moderator::MergeUser.call_merge(admin: current_user, keep_user: @user, delete_user_id: user_params["merge_user_id"])
|
||||
Moderator::MergeUser.call(admin: current_user, keep_user: @user, delete_user_id: user_params["merge_user_id"])
|
||||
rescue StandardError => e
|
||||
flash[:danger] = e.message
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,5 +1,9 @@
|
|||
module Moderator
|
||||
class MergeUser < ManageActivityAndRoles
|
||||
def self.call(admin:, keep_user:, delete_user_id:)
|
||||
new(keep_user: keep_user, admin: admin, delete_user_id: delete_user_id).merge
|
||||
end
|
||||
|
||||
attr_reader :keep_user, :admin, :delete_user_id
|
||||
|
||||
def initialize(admin:, keep_user:, delete_user_id:)
|
||||
|
|
@ -8,10 +12,6 @@ module Moderator
|
|||
@delete_user = User.find(delete_user_id.to_i)
|
||||
end
|
||||
|
||||
def self.call_merge(admin:, keep_user:, delete_user_id:)
|
||||
new(keep_user: keep_user, admin: admin, delete_user_id: delete_user_id).merge
|
||||
end
|
||||
|
||||
def merge
|
||||
raise "You cannot merge the same two user id#s" if @delete_user.id == @keep_user.id
|
||||
|
||||
|
|
@ -56,7 +56,7 @@ module Moderator
|
|||
end
|
||||
if @delete_user.badge_achievements.any?
|
||||
@delete_user.badge_achievements.update_all(user_id: @keep_user.id)
|
||||
@keep_user.badge_achievements_count = @keep_user.badge_achievements.size
|
||||
BadgeAchievement.counter_culture_fix_counts(where: { users: { id: @keep_user.id } })
|
||||
end
|
||||
|
||||
@keep_user.update_columns(created_at: @delete_user.created_at) if @delete_user.created_at < @keep_user.created_at
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ RSpec.describe Moderator::MergeUser, type: :service do
|
|||
|
||||
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)
|
||||
described_class.call(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
|
||||
|
|
@ -32,7 +32,7 @@ RSpec.describe Moderator::MergeUser, type: :service do
|
|||
expect(article_reaction.elasticsearch_doc.dig("_source", "reactable", "user", "id")).to eq(delete_user_id)
|
||||
|
||||
sidekiq_perform_enqueued_jobs do
|
||||
described_class.call_merge(admin: admin, keep_user: keep_user, delete_user_id: delete_user.id)
|
||||
described_class.call(admin: admin, keep_user: keep_user, delete_user_id: delete_user.id)
|
||||
end
|
||||
drain_all_sidekiq_jobs
|
||||
expect(article.reload.elasticsearch_doc.dig("_source", "user", "id")).to eq(keep_user.id)
|
||||
|
|
@ -40,5 +40,15 @@ RSpec.describe Moderator::MergeUser, type: :service do
|
|||
expect(reaction.reload.elasticsearch_doc.dig("_source", "user_id")).to eq(keep_user.id)
|
||||
expect(article_reaction.reload.elasticsearch_doc.dig("_source", "reactable", "user", "id")).to eq(keep_user.id)
|
||||
end
|
||||
|
||||
it "updates badge_achievements_count" do
|
||||
create_list(:badge_achievement, 2, user: delete_user)
|
||||
|
||||
sidekiq_perform_enqueued_jobs do
|
||||
described_class.call(admin: admin, keep_user: keep_user, delete_user_id: delete_user.id)
|
||||
end
|
||||
|
||||
expect(keep_user.reload.badge_achievements_count).to eq(2)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue