mirror of
https://github.com/discourse/discourse.git
synced 2024-12-02 04:43:43 +08:00
384135845b
This commit introduces an ultra low priority queue for post rebakes. This way rebakes can never interfere with regular sidekiq processing for cases where we perform a large scale rebake. Additionally it allows Post.rebake_old to be run with rate_limiter: false to avoid triggering the limiter when rebaking. This is handy for cases where you want to just force the full rebake and not wait for it to trickle
38 lines
928 B
Ruby
38 lines
928 B
Ruby
require 'rails_helper'
|
|
require_dependency 'jobs/scheduled/periodical_updates'
|
|
|
|
describe Jobs::PeriodicalUpdates do
|
|
|
|
it "works" do
|
|
|
|
# does not blow up, no mocks, everything is called
|
|
Jobs::PeriodicalUpdates.new.execute(nil)
|
|
end
|
|
|
|
it "can rebake old posts when automatically_download_gravatars is false" do
|
|
SiteSetting.automatically_download_gravatars = false
|
|
post = create_post
|
|
post.update_columns(baked_at: Time.new(2000, 1, 1), baked_version: -1)
|
|
|
|
Sidekiq::Testing.fake! do
|
|
Jobs::ProcessPost.jobs.clear
|
|
|
|
Jobs::PeriodicalUpdates.new.execute
|
|
|
|
jobs = Jobs::ProcessPost.jobs
|
|
expect(jobs.length).to eq(1)
|
|
|
|
expect(jobs[0]["queue"]).to eq("ultra_low")
|
|
end
|
|
|
|
post.reload
|
|
expect(post.baked_at).to be > 1.day.ago
|
|
baked = post.baked_at
|
|
|
|
# does not rebake
|
|
Jobs::PeriodicalUpdates.new.execute
|
|
post.reload
|
|
expect(post.baked_at).to eq(baked)
|
|
end
|
|
end
|