2019-04-29 19:27:42 -05:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2022-07-27 21:27:38 -05:00
|
|
|
RSpec.describe AdminDashboardData do
|
2021-12-19 17:59:11 -06:00
|
|
|
after do
|
|
|
|
AdminDashboardData.reset_problem_checks
|
|
|
|
Discourse.redis.flushdb
|
|
|
|
end
|
2013-03-19 22:18:00 -05:00
|
|
|
|
2021-12-19 17:59:11 -06:00
|
|
|
describe "adding scheduled checks" do
|
|
|
|
it "does not add duplicate problems with the same identifier" do
|
2024-03-13 21:55:01 -05:00
|
|
|
prob1 = ProblemCheck::Problem.new("test problem", identifier: "test")
|
|
|
|
prob2 = ProblemCheck::Problem.new("test problem 2", identifier: "test")
|
2021-12-19 17:59:11 -06:00
|
|
|
AdminDashboardData.add_found_scheduled_check_problem(prob1)
|
|
|
|
AdminDashboardData.add_found_scheduled_check_problem(prob2)
|
|
|
|
expect(AdminDashboardData.load_found_scheduled_check_problems.map(&:to_s)).to eq(
|
|
|
|
["test problem"],
|
|
|
|
)
|
|
|
|
end
|
|
|
|
|
|
|
|
it "does not error when loading malformed problems saved in redis" do
|
2023-11-02 20:05:29 -05:00
|
|
|
Discourse.redis.rpush(AdminDashboardData::SCHEDULED_PROBLEM_STORAGE_KEY, "{ 'badjson")
|
2021-12-19 17:59:11 -06:00
|
|
|
expect(AdminDashboardData.load_found_scheduled_check_problems).to eq([])
|
|
|
|
end
|
|
|
|
|
|
|
|
it "clears a specific problem by identifier" do
|
2024-03-13 21:55:01 -05:00
|
|
|
prob1 = ProblemCheck::Problem.new("test problem 1", identifier: "test")
|
2021-12-19 17:59:11 -06:00
|
|
|
AdminDashboardData.add_found_scheduled_check_problem(prob1)
|
|
|
|
AdminDashboardData.clear_found_problem("test")
|
|
|
|
expect(AdminDashboardData.load_found_scheduled_check_problems).to eq([])
|
|
|
|
end
|
|
|
|
|
|
|
|
it "defaults to low priority, and uses low priority if an invalid priority is passed" do
|
2024-03-13 21:55:01 -05:00
|
|
|
prob1 = ProblemCheck::Problem.new("test problem 1")
|
|
|
|
prob2 = ProblemCheck::Problem.new("test problem 2", priority: "superbad")
|
2021-12-19 17:59:11 -06:00
|
|
|
expect(prob1.priority).to eq("low")
|
|
|
|
expect(prob2.priority).to eq("low")
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe "stats cache" do
|
|
|
|
include_examples "stats cacheable"
|
|
|
|
end
|
|
|
|
|
|
|
|
describe "#problem_message_check" do
|
2024-06-26 11:55:05 -05:00
|
|
|
let(:key) { AdminDashboardData.problem_messages.first }
|
2021-12-19 17:59:11 -06:00
|
|
|
|
|
|
|
after { described_class.clear_problem_message(key) }
|
|
|
|
|
|
|
|
it "returns nil if message has not been added" do
|
|
|
|
expect(described_class.problem_message_check(key)).to be_nil
|
|
|
|
end
|
|
|
|
|
|
|
|
it "returns a message if it was added" do
|
|
|
|
described_class.add_problem_message(key)
|
|
|
|
expect(described_class.problem_message_check(key)).to eq(
|
|
|
|
I18n.t(key, base_path: Discourse.base_path),
|
|
|
|
)
|
|
|
|
end
|
|
|
|
|
|
|
|
it "returns a message if it was added with an expiry" do
|
|
|
|
described_class.add_problem_message(key, 300)
|
|
|
|
expect(described_class.problem_message_check(key)).to eq(
|
|
|
|
I18n.t(key, base_path: Discourse.base_path),
|
|
|
|
)
|
2015-08-25 19:07:40 -05:00
|
|
|
end
|
|
|
|
end
|
2013-04-29 21:43:21 -05:00
|
|
|
end
|