discourse/spec/jobs/problem_checks_spec.rb

32 lines
982 B
Ruby

# frozen_string_literal: true
RSpec.describe Jobs::ProblemChecks do
before { Jobs.run_immediately! }
after do
Discourse.redis.flushdb
AdminDashboardData.reset_problem_checks
end
class TestCheck
def self.max_retries = 0
def self.retry_wait = 0.seconds
end
it "starts with a blank slate every time the checks are run to avoid duplicate problems and to clear no longer firing problems" do
problem_should_fire = true
AdminDashboardData.reset_problem_checks
AdminDashboardData.add_scheduled_problem_check(:test_identifier, TestCheck) do
if problem_should_fire
problem_should_fire = false
AdminDashboardData::Problem.new("yuge problem", priority: "high")
end
end
described_class.new.execute(nil)
expect(AdminDashboardData.load_found_scheduled_check_problems.count).to eq(1)
described_class.new.execute(nil)
expect(AdminDashboardData.load_found_scheduled_check_problems.count).to eq(0)
end
end