DEV: Plugin modifier application for About admins (#27261)

This commit is contained in:
Mark VanLandingham 2024-05-30 10:44:53 -05:00 committed by GitHub
parent 766231b102
commit 8eec9da0b4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 23 additions and 1 deletions

View File

@ -59,7 +59,11 @@ class About
end
def admins
@admins ||= User.where(admin: true).human_users.order("last_seen_at DESC")
@admins ||=
DiscoursePluginRegistry.apply_modifier(
:about_admins,
User.where(admin: true).human_users.order("last_seen_at DESC"),
)
end
def stats

View File

@ -112,4 +112,22 @@ RSpec.describe About do
results.each { |res| expect(res.moderators.size).to eq(2) }
end
end
describe "#admins" do
fab!(:admin_mark) { Fabricate(:admin, name: "mark") }
fab!(:admin_matt) { Fabricate(:admin, name: "matt") }
fab!(:admin_kate) { Fabricate(:admin, name: "kate") }
context "with about_admins plugin modifier registered" do
let(:modifier_block) { Proc.new { |admins| admins.select { |admin| admin.name != "mark" } } }
it "Applies registered modifiers (filtering out admins in this case)" do
plugin_instance = Plugin::Instance.new
plugin_instance.register_modifier(:about_admins, &modifier_block)
expect(About.new(Fabricate(:user)).admins).to match_array([admin_matt, admin_kate])
ensure
DiscoursePluginRegistry.unregister_modifier(plugin_instance, :about_admins, &modifier_block)
end
end
end
end