mirror of
https://github.com/discourse/discourse.git
synced 2024-12-09 15:33:38 +08:00
3137e60653
This PR introduces a basic AdminNotice model to store these notices. Admin notices are categorized by their source/type (currently only notices from problem check.) They also have a priority.
68 lines
2.4 KiB
Ruby
68 lines
2.4 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
RSpec.describe AdminDashboardData do
|
|
after do
|
|
AdminDashboardData.reset_problem_checks
|
|
Discourse.redis.flushdb
|
|
end
|
|
|
|
describe "adding scheduled checks" do
|
|
it "does not add duplicate problems with the same identifier" do
|
|
prob1 = ProblemCheck::Problem.new("test problem", identifier: "test")
|
|
prob2 = ProblemCheck::Problem.new("test problem 2", identifier: "test")
|
|
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
|
|
Discourse.redis.rpush(AdminDashboardData::SCHEDULED_PROBLEM_STORAGE_KEY, "{ 'badjson")
|
|
expect(AdminDashboardData.load_found_scheduled_check_problems).to eq([])
|
|
end
|
|
|
|
it "clears a specific problem by identifier" do
|
|
prob1 = ProblemCheck::Problem.new("test problem 1", identifier: "test")
|
|
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
|
|
prob1 = ProblemCheck::Problem.new("test problem 1")
|
|
prob2 = ProblemCheck::Problem.new("test problem 2", priority: "superbad")
|
|
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
|
|
let(:key) { AdminDashboardData.problem_messages.first }
|
|
|
|
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),
|
|
)
|
|
end
|
|
end
|
|
end
|