Files
postal/spec/lib/worker/process_spec.rb
T

39 lines
1.3 KiB
Ruby

# frozen_string_literal: true
require "rails_helper"
module Worker
RSpec.describe Process do
subject(:process) { described_class.new(thread_count: 1) }
before do
# Each process registers its metrics so each example needs its own registry
allow(Prometheus::Client).to receive(:registry).and_return(Prometheus::Client::Registry.new)
# Errors are normally logged and swallowed, raise them so they fail the example instead
allow(process).to receive(:capture_errors).and_yield
end
describe "#work" do
it "runs each job and returns false when there was no work to do" do
expect(process.send(:work, 0)).to be false
end
end
describe "#run_task" do
it "runs a task which is due and schedules its next run" do
scheduled_task = ScheduledTask.create!(name: "PruneWebhookRequestsScheduledTask", next_run_after: 1.minute.ago)
task = instance_double(PruneWebhookRequestsScheduledTask, call: nil)
allow(PruneWebhookRequestsScheduledTask).to receive(:new).and_return(task)
process.send(:run_task, PruneWebhookRequestsScheduledTask)
expect(task).to have_received(:call)
expect(scheduled_task.reload.next_run_after).to be > Time.current
end
end
end
end