33 lines
1 KiB
Ruby
33 lines
1 KiB
Ruby
# 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
|