maintenance: break maintenance tasks into individual jobs.

Break the hourly/daily/weekly/monthly maintenance tasks down into
individual delayed jobs. This way if one task fails, it won't prevent
other tasks from running. Also, jobs can be run in parallel, and can be
individually retried if they fail.
This commit is contained in:
evazion
2021-09-26 20:05:39 -05:00
parent 7d3e491dc6
commit 52bf4a3a6b
21 changed files with 227 additions and 70 deletions

View File

@@ -0,0 +1,22 @@
require 'test_helper'
class PrunePostsJobTest < ActiveJob::TestCase
context "PrunePostsJob" do
should "prune expired posts" do
@pending = create(:post, is_pending: true, created_at: 5.days.ago)
@flagged = create(:post, is_flagged: true, created_at: 5.days.ago)
@appealed = create(:post, is_deleted: true, created_at: 5.days.ago)
@flag = create(:post_flag, post: @flagged, created_at: 4.days.ago)
@appeal = create(:post_appeal, post: @appealed, created_at: 4.days.ago)
PrunePostsJob.perform_now
assert_equal(true, @pending.reload.is_deleted?)
assert_equal(true, @flagged.reload.is_deleted?)
assert_equal(true, @appealed.reload.is_deleted?)
assert_equal(true, @flag.reload.succeeded?)
assert_equal(true, @appeal.reload.rejected?)
end
end
end