mirror of
https://github.com/discourse/discourse.git
synced 2025-06-03 02:48:28 +08:00
FIX: Enqueue notify_mailing_list_subscribers when post is recovered (#19888)
This commit fixes the following issue: * User creates a post * Akismet or some other thing like requiring posts to be approved puts the post in the review queue, deleting it * Admin approves the post * Email is never sent to mailing list mode subscribers We intentionally do not enqueue this for every single post when recovering a topic (i.e. recovering the first post) since the topics could have a lot of posts with emails already sent, and we don't want to clog sidekiq with thousands of notify jobs.
This commit is contained in:
@ -1201,4 +1201,26 @@ RSpec.describe PostDestroyer do
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
describe "mailing_list_mode emails on recovery" do
|
||||
fab!(:topic) { Fabricate(:topic) }
|
||||
fab!(:post_1) { Fabricate(:post, topic: topic) }
|
||||
fab!(:post_2) { Fabricate(:post, topic: topic) }
|
||||
|
||||
it "enqueues the notify_mailing_list_subscribers_job for the post" do
|
||||
PostDestroyer.new(admin, post_2).destroy
|
||||
post_2.reload
|
||||
expect_enqueued_with(job: :notify_mailing_list_subscribers, args: { post_id: post_2.id }) do
|
||||
PostDestroyer.new(admin, post_2).recover
|
||||
end
|
||||
end
|
||||
|
||||
it "enqueues the notify_mailing_list_subscribers_job for the op" do
|
||||
PostDestroyer.new(admin, post_1).destroy
|
||||
post_1.reload
|
||||
expect_enqueued_with(job: :notify_mailing_list_subscribers, args: { post_id: post_1.id }) do
|
||||
PostDestroyer.new(admin, post_1).recover
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Reference in New Issue
Block a user