mirror of
https://github.com/discourse/discourse.git
synced 2024-11-24 15:49:55 +08:00
59 lines
1.9 KiB
Ruby
59 lines
1.9 KiB
Ruby
require 'rails_helper'
|
|
|
|
describe Jobs::PendingFlagsReminder do
|
|
context "notify_about_flags_after is 0" do
|
|
before { SiteSetting.notify_about_flags_after = 0 }
|
|
|
|
it "never notifies" do
|
|
PostAction.stubs(:flagged_posts_count).returns(1)
|
|
PostCreator.expects(:create).never
|
|
described_class.new.execute({})
|
|
end
|
|
end
|
|
|
|
context "notify_about_flags_after is 48" do
|
|
before do
|
|
SiteSetting.notify_about_flags_after = 48
|
|
$redis.del described_class.last_notified_key
|
|
end
|
|
|
|
after do
|
|
$redis.del described_class.last_notified_key
|
|
end
|
|
|
|
it "doesn't send message when flags are less than 48 hours old" do
|
|
Fabricate(:flag, created_at: 47.hours.ago)
|
|
PostAction.stubs(:flagged_posts_count).returns(1)
|
|
PostCreator.expects(:create).never
|
|
described_class.new.execute({})
|
|
end
|
|
|
|
it "doesn't send a message if there are no new flags older than 48 hours old" do
|
|
old_flag = Fabricate(:flag, created_at: 50.hours.ago)
|
|
new_flag = Fabricate(:flag, created_at: 47.hours.ago)
|
|
PostAction.stubs(:flagged_posts_count).returns(2)
|
|
job = described_class.new
|
|
job.last_notified_id = old_flag.id
|
|
PostCreator.expects(:create).never
|
|
job.execute({})
|
|
expect(job.last_notified_id).to eq(old_flag.id)
|
|
end
|
|
|
|
it "doesn't send a message when min_flags_staff_visibility is not met" do
|
|
SiteSetting.min_flags_staff_visibility = 2
|
|
Fabricate(:flag, created_at: 49.hours.ago)
|
|
PostAction.stubs(:flagged_posts_count).returns(1)
|
|
PostCreator.expects(:create).never
|
|
described_class.new.execute({})
|
|
end
|
|
|
|
it "sends message when there is a flag older than 48 hours" do
|
|
Fabricate(:flag, created_at: 49.hours.ago)
|
|
PostAction.stubs(:flagged_posts_count).returns(1)
|
|
PostCreator.expects(:create).once.returns(true)
|
|
described_class.new.execute({})
|
|
end
|
|
|
|
end
|
|
end
|