From da50217b8899f36137c5405423a41b8520dfdfb2 Mon Sep 17 00:00:00 2001
From: Matt Jankowski <matt@jankowski.online>
Date: Wed, 7 Feb 2024 05:59:32 -0500
Subject: [PATCH] Combine repeated requests in `admin/accounts` controller spec
 (#29119)

---
 .../admin/accounts_controller_spec.rb         | 50 +++++++++----------
 1 file changed, 25 insertions(+), 25 deletions(-)

diff --git a/spec/controllers/admin/accounts_controller_spec.rb b/spec/controllers/admin/accounts_controller_spec.rb
index ef3053b6b..b90bb414b 100644
--- a/spec/controllers/admin/accounts_controller_spec.rb
+++ b/spec/controllers/admin/accounts_controller_spec.rb
@@ -9,18 +9,8 @@ RSpec.describe Admin::AccountsController do
 
   describe 'GET #index' do
     let(:current_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
-
-    around do |example|
-      default_per_page = Account.default_per_page
-      Account.paginates_per 1
-      example.run
-      Account.paginates_per default_per_page
-    end
-
-    it 'filters with parameters' do
-      account_filter = instance_double(AccountFilter, results: Account.all)
-      allow(AccountFilter).to receive(:new).and_return(account_filter)
-      params = {
+    let(:params) do
+      {
         origin: 'local',
         by_domain: 'domain',
         status: 'active',
@@ -29,25 +19,35 @@ RSpec.describe Admin::AccountsController do
         email: 'local-part@domain',
         ip: '0.0.0.42',
       }
-
-      get :index, params: params
-
-      expect(AccountFilter).to have_received(:new).with(hash_including(params))
     end
 
-    it 'paginates accounts' do
+    around do |example|
+      default_per_page = Account.default_per_page
+      Account.paginates_per 1
+      example.run
+      Account.paginates_per default_per_page
+    end
+
+    before do
       Fabricate(:account)
 
-      get :index, params: { page: 2 }
-
-      accounts = assigns(:accounts)
-      expect(accounts.count).to eq 1
-      expect(accounts.klass).to be Account
+      account_filter = instance_double(AccountFilter, results: Account.all)
+      allow(AccountFilter).to receive(:new).and_return(account_filter)
     end
 
-    it 'returns http success' do
-      get :index
-      expect(response).to have_http_status(200)
+    it 'returns success and paginates and filters with parameters' do
+      get :index, params: params.merge(page: 2)
+
+      expect(response)
+        .to have_http_status(200)
+      expect(assigns(:accounts))
+        .to have_attributes(
+          count: eq(1),
+          klass: be(Account)
+        )
+      expect(AccountFilter)
+        .to have_received(:new)
+        .with(hash_including(params))
     end
   end