frankfurter/spec/schedule_spec.rb

34 lines
1 KiB
Ruby
Raw Permalink Normal View History

2026-05-21 01:38:14 -06:00
# frozen_string_literal: true
require_relative "helper"
require "fugit"
require "provider/adapters"
describe "bin/schedule --dry-run" do
let(:output) do
%x(APP_ENV=test bundle exec ruby bin/schedule --dry-run 2>&1)
end
let(:startup_lines) { output.lines.select { |l| l.start_with?("startup:") } }
let(:cron_lines) { output.lines.select { |l| l.start_with?("cron:") } }
let(:enabled_count) { Provider.all.count { |p| Provider::Adapters.const_defined?(p.key) } }
let(:scheduled_count) do
Provider.all.count { |p| Provider::Adapters.const_defined?(p.key) && p.publish_schedule }
end
it "schedules all enabled providers for startup and only configured providers for cron" do
_(startup_lines.size).must_equal(enabled_count)
_(cron_lines.size).must_equal(scheduled_count)
end
it "generates valid cron expressions" do
cron_lines.each do |line|
expression = line.match(/cron: (.+) backfill\[/)[1]
parsed = Fugit::Cron.parse(expression)
_(parsed).wont_be_nil("Invalid cron: #{expression}")
end
end
end