diff --git a/app/services/user_destroyer.rb b/app/services/user_destroyer.rb index 0936d5cffa4..15bd0bb5e43 100644 --- a/app/services/user_destroyer.rb +++ b/app/services/user_destroyer.rb @@ -137,6 +137,14 @@ class UserDestroyer reviewable.perform(@actor, :agree_and_keep) end end + + ReviewablePost + .where(target_created_by: user) + .find_each do |reviewable| + if reviewable.actions_for(@guardian).has?(:reject_and_delete) + reviewable.perform(@actor, :reject_and_delete) + end + end end def delete_posts(user, category_topic_ids, opts) diff --git a/spec/services/user_destroyer_spec.rb b/spec/services/user_destroyer_spec.rb index 46df20a9a75..1816993a066 100644 --- a/spec/services/user_destroyer_spec.rb +++ b/spec/services/user_destroyer_spec.rb @@ -203,6 +203,26 @@ RSpec.describe UserDestroyer do reviewable.reload expect(reviewable).to be_approved end + + it "rejects pending posts" do + post = Fabricate(:post, user: user) + reviewable = + Fabricate( + :reviewable, + type: "ReviewablePost", + target_type: "Post", + target_id: post.id, + created_by: Discourse.system_user, + target_created_by: user, + ) + + expect(reviewable).to be_pending + + destroy + + reviewable.reload + expect(reviewable).to be_rejected + end end end