2019-04-29 20:27:42 -04:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2019-10-02 00:01:53 -04:00
|
|
|
describe Jobs::PendingQueuedPostsReminder do
|
2019-01-03 12:03:01 -05:00
|
|
|
let(:job) { described_class.new }
|
|
|
|
|
2015-06-18 15:46:50 -04:00
|
|
|
context "notify_about_queued_posts_after is 0" do
|
2017-07-07 02:09:14 -04:00
|
|
|
before { SiteSetting.notify_about_queued_posts_after = 0 }
|
2015-06-18 15:46:50 -04:00
|
|
|
|
|
|
|
it "never emails" do
|
|
|
|
described_class.any_instance.expects(:should_notify_ids).never
|
2017-09-12 17:44:31 -04:00
|
|
|
expect {
|
2019-01-03 12:03:01 -05:00
|
|
|
job.execute({})
|
2017-09-12 17:44:31 -04:00
|
|
|
}.to_not change { Post.count }
|
2015-06-18 15:46:50 -04:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2022-05-04 12:33:43 -04:00
|
|
|
context "notify_about_queued_posts_after accepts a float" do
|
|
|
|
before do
|
|
|
|
SiteSetting.notify_about_queued_posts_after = 0.25
|
|
|
|
job.last_notified_id = nil
|
|
|
|
end
|
|
|
|
|
|
|
|
it "creates system message if there are new queued posts" do
|
|
|
|
Fabricate(:reviewable_queued_post, created_at: 16.minutes.ago)
|
|
|
|
Fabricate(:reviewable_queued_post, created_at: 14.minutes.ago)
|
|
|
|
# expect 16 minute post to be picked up but not 14 min post
|
|
|
|
expect { job.execute({}) }.to change { Post.count }.by(1)
|
|
|
|
expect(Topic.where(
|
|
|
|
subtype: TopicSubtype.system_message,
|
|
|
|
title: I18n.t('system_messages.queued_posts_reminder.subject_template', count: 1)
|
|
|
|
).exists?).to eq(true)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2015-06-18 15:46:50 -04:00
|
|
|
context "notify_about_queued_posts_after is 24" do
|
2017-04-19 16:16:27 -04:00
|
|
|
before do
|
|
|
|
SiteSetting.notify_about_queued_posts_after = 24
|
|
|
|
end
|
2015-06-18 15:46:50 -04:00
|
|
|
|
2019-01-03 12:03:01 -05:00
|
|
|
context "when we haven't been notified in a while" do
|
2015-06-18 15:46:50 -04:00
|
|
|
|
2019-01-03 12:03:01 -05:00
|
|
|
before do
|
|
|
|
job.last_notified_id = nil
|
|
|
|
end
|
|
|
|
|
|
|
|
it "doesn't create system message if there are no queued posts" do
|
|
|
|
expect {
|
|
|
|
job.execute({})
|
|
|
|
}.to_not change { Post.count }
|
|
|
|
end
|
|
|
|
|
|
|
|
it "creates system message if there are new queued posts" do
|
|
|
|
Fabricate(:reviewable_queued_post, created_at: 48.hours.ago)
|
|
|
|
Fabricate(:reviewable_queued_post, created_at: 45.hours.ago)
|
|
|
|
expect { job.execute({}) }.to change { Post.count }.by(1)
|
|
|
|
expect(Topic.where(
|
|
|
|
subtype: TopicSubtype.system_message,
|
|
|
|
title: I18n.t('system_messages.queued_posts_reminder.subject_template', count: 2)
|
|
|
|
).exists?).to eq(true)
|
|
|
|
end
|
2015-06-18 15:46:50 -04:00
|
|
|
end
|
|
|
|
|
2017-09-12 17:44:31 -04:00
|
|
|
it "doesn't create system message again about the same posts" do
|
2019-01-03 12:03:01 -05:00
|
|
|
reviewable = Fabricate(:reviewable_queued_post, created_at: 48.hours.ago)
|
|
|
|
job.last_notified_id = reviewable.id
|
|
|
|
expect { described_class.new.execute({}) }.to_not change { Post.count }
|
2015-06-18 15:46:50 -04:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|