From 8eec9da0b46574fb291417821499ae96297d8cb7 Mon Sep 17 00:00:00 2001 From: Mark VanLandingham Date: Thu, 30 May 2024 10:44:53 -0500 Subject: [PATCH] DEV: Plugin modifier application for About admins (#27261) --- app/models/about.rb | 6 +++++- spec/models/about_spec.rb | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/app/models/about.rb b/app/models/about.rb index d534517f864..476e597d35d 100644 --- a/app/models/about.rb +++ b/app/models/about.rb @@ -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 diff --git a/spec/models/about_spec.rb b/spec/models/about_spec.rb index 7954bc70b5a..713ab2f22b9 100644 --- a/spec/models/about_spec.rb +++ b/spec/models/about_spec.rb @@ -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