mirror of
https://github.com/discourse/discourse.git
synced 2025-05-28 13:51:18 +08:00
DEV: Move problem checks to app directory (#26120)
There are a couple of reasons for this. The first one is practical, and related to eager loading. Since /lib is not eager loaded, when the application boots, ProblemCheck["identifier"] will be nil because the child classes aren't loaded. The second one is more conceptual. There turns out to be a lot of inter-dependencies between the part of the problem check system that live in /app and the parts that live in /lib, which probably suggests it should all go in /app.
This commit is contained in:
41
spec/models/problem_check_spec.rb
Normal file
41
spec/models/problem_check_spec.rb
Normal file
@ -0,0 +1,41 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
RSpec.describe ProblemCheck do
|
||||
# rubocop:disable RSpec/BeforeAfterAll
|
||||
before(:all) do
|
||||
ScheduledCheck = Class.new(described_class) { self.perform_every = 30.minutes }
|
||||
UnscheduledCheck = Class.new(described_class)
|
||||
end
|
||||
|
||||
after(:all) do
|
||||
Object.send(:remove_const, ScheduledCheck.name)
|
||||
Object.send(:remove_const, UnscheduledCheck.name)
|
||||
end
|
||||
# rubocop:enable RSpec/BeforeAfterAll
|
||||
|
||||
let(:scheduled_check) { ScheduledCheck }
|
||||
let(:unscheduled_check) { UnscheduledCheck }
|
||||
|
||||
describe ".[]" do
|
||||
it { expect(described_class[:scheduled_check]).to eq(scheduled_check) }
|
||||
it { expect(described_class[:foo]).to eq(nil) }
|
||||
end
|
||||
|
||||
describe ".identifier" do
|
||||
it { expect(scheduled_check.identifier).to eq(:scheduled_check) }
|
||||
end
|
||||
|
||||
describe ".checks" do
|
||||
it { expect(described_class.checks).to include(scheduled_check, unscheduled_check) }
|
||||
end
|
||||
|
||||
describe ".scheduled" do
|
||||
it { expect(described_class.scheduled).to include(scheduled_check) }
|
||||
it { expect(described_class.scheduled).not_to include(unscheduled_check) }
|
||||
end
|
||||
|
||||
describe ".scheduled?" do
|
||||
it { expect(scheduled_check).to be_scheduled }
|
||||
it { expect(unscheduled_check).to_not be_scheduled }
|
||||
end
|
||||
end
|
Reference in New Issue
Block a user