From f9fcde820581c2bcb24531c4a602fae466eb95ba Mon Sep 17 00:00:00 2001
From: Matt Jankowski <matt@jankowski.online>
Date: Sat, 29 Apr 2023 16:03:36 -0400
Subject: [PATCH] Add pending spec for User.those_who_can (#24724)

---
 .rubocop_todo.yml        |  1 -
 spec/models/user_spec.rb | 24 +++++++++++++++++++++++-
 2 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml
index 9ce404a1de..2b61387830 100644
--- a/.rubocop_todo.yml
+++ b/.rubocop_todo.yml
@@ -857,7 +857,6 @@ RSpec/PendingWithoutReason:
   Exclude:
     - 'spec/controllers/statuses_controller_spec.rb'
     - 'spec/models/account_spec.rb'
-    - 'spec/models/user_spec.rb'
 
 # This cop supports unsafe autocorrection (--autocorrect-all).
 # Configuration parameters: Strict, EnforcedStyle, AllowedExplicitMatchers.
diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb
index 2bb6a334b1..b7754e9265 100644
--- a/spec/models/user_spec.rb
+++ b/spec/models/user_spec.rb
@@ -527,6 +527,28 @@ RSpec.describe User, type: :model do
   end
 
   describe '.those_who_can' do
-    pending
+    let!(:moderator_user) { Fabricate(:user, role: UserRole.find_by(name: 'Moderator')) }
+
+    context 'when there are not any user roles' do
+      before { UserRole.destroy_all }
+
+      it 'returns an empty list' do
+        expect(User.those_who_can(:manage_blocks)).to eq([])
+      end
+    end
+
+    context 'when there are not users with the needed role' do
+      it 'returns an empty list' do
+        expect(User.those_who_can(:manage_blocks)).to eq([])
+      end
+    end
+
+    context 'when there are users with roles' do
+      let!(:admin_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
+
+      it 'returns the users with the role' do
+        expect(User.those_who_can(:manage_blocks)).to eq([admin_user])
+      end
+    end
   end
 end