From cf18cc2891be6f63fc1f4d96120901be81820fa6 Mon Sep 17 00:00:00 2001
From: Matt Jankowski <matt@jankowski.online>
Date: Wed, 3 May 2023 23:48:35 -0400
Subject: [PATCH] Fix RSpec/MultipleSubjects cop (#24738)

---
 .rubocop_todo.yml                                     | 11 -----------
 .../activitypub/collections_controller_spec.rb        |  3 +--
 .../followers_synchronizations_controller_spec.rb     |  3 +--
 .../activitypub/outboxes_controller_spec.rb           |  3 +--
 spec/controllers/api/web/embeds_controller_spec.rb    |  4 ++--
 spec/controllers/emojis_controller_spec.rb            |  4 ++--
 spec/controllers/follower_accounts_controller_spec.rb |  4 ++--
 .../controllers/following_accounts_controller_spec.rb |  4 ++--
 8 files changed, 11 insertions(+), 25 deletions(-)

diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml
index 6a7b7ef83..e5d05c1cb 100644
--- a/.rubocop_todo.yml
+++ b/.rubocop_todo.yml
@@ -732,17 +732,6 @@ RSpec/MultipleExpectations:
 RSpec/MultipleMemoizedHelpers:
   Max: 21
 
-# This cop supports safe autocorrection (--autocorrect).
-RSpec/MultipleSubjects:
-  Exclude:
-    - 'spec/controllers/activitypub/collections_controller_spec.rb'
-    - 'spec/controllers/activitypub/followers_synchronizations_controller_spec.rb'
-    - 'spec/controllers/activitypub/outboxes_controller_spec.rb'
-    - 'spec/controllers/api/web/embeds_controller_spec.rb'
-    - 'spec/controllers/emojis_controller_spec.rb'
-    - 'spec/controllers/follower_accounts_controller_spec.rb'
-    - 'spec/controllers/following_accounts_controller_spec.rb'
-
 # Configuration parameters: AllowedGroups.
 RSpec/NestedGroups:
   Max: 6
diff --git a/spec/controllers/activitypub/collections_controller_spec.rb b/spec/controllers/activitypub/collections_controller_spec.rb
index 77901131e..6b35a1206 100644
--- a/spec/controllers/activitypub/collections_controller_spec.rb
+++ b/spec/controllers/activitypub/collections_controller_spec.rb
@@ -35,10 +35,9 @@ RSpec.describe ActivityPub::CollectionsController, type: :controller do
   describe 'GET #show' do
     context 'when id is "featured"' do
       context 'without signature' do
-        subject(:body) { body_as_json }
-
         subject(:response) { get :show, params: { id: 'featured', account_username: account.username } }
 
+        let(:body) { body_as_json }
         let(:remote_account) { nil }
 
         it 'returns http success' do
diff --git a/spec/controllers/activitypub/followers_synchronizations_controller_spec.rb b/spec/controllers/activitypub/followers_synchronizations_controller_spec.rb
index c99d59eda..5935049dc 100644
--- a/spec/controllers/activitypub/followers_synchronizations_controller_spec.rb
+++ b/spec/controllers/activitypub/followers_synchronizations_controller_spec.rb
@@ -34,10 +34,9 @@ RSpec.describe ActivityPub::FollowersSynchronizationsController, type: :controll
     end
 
     context 'with signature from example.com' do
-      subject(:body) { body_as_json }
-
       subject(:response) { get :show, params: { account_username: account.username } }
 
+      let(:body) { body_as_json }
       let(:remote_account) { Fabricate(:account, domain: 'example.com', uri: 'https://example.com/instance') }
 
       it 'returns http success' do
diff --git a/spec/controllers/activitypub/outboxes_controller_spec.rb b/spec/controllers/activitypub/outboxes_controller_spec.rb
index 167bbcc21..189b46a7d 100644
--- a/spec/controllers/activitypub/outboxes_controller_spec.rb
+++ b/spec/controllers/activitypub/outboxes_controller_spec.rb
@@ -35,10 +35,9 @@ RSpec.describe ActivityPub::OutboxesController, type: :controller do
 
   describe 'GET #show' do
     context 'without signature' do
-      subject(:body) { body_as_json }
-
       subject(:response) { get :show, params: { account_username: account.username, page: page } }
 
+      let(:body) { body_as_json }
       let(:remote_account) { nil }
 
       context 'with page not requested' do
diff --git a/spec/controllers/api/web/embeds_controller_spec.rb b/spec/controllers/api/web/embeds_controller_spec.rb
index e03f5a371..b0c48a5ae 100644
--- a/spec/controllers/api/web/embeds_controller_spec.rb
+++ b/spec/controllers/api/web/embeds_controller_spec.rb
@@ -10,10 +10,10 @@ describe Api::Web::EmbedsController do
   before { sign_in user }
 
   describe 'POST #create' do
-    subject(:response) { post :create, params: { url: url } }
-
     subject(:body) { JSON.parse(response.body, symbolize_names: true) }
 
+    let(:response) { post :create, params: { url: url } }
+
     context 'when successfully finds status' do
       let(:status) { Fabricate(:status) }
       let(:url) { "http://#{Rails.configuration.x.web_domain}/@#{status.account.username}/#{status.id}" }
diff --git a/spec/controllers/emojis_controller_spec.rb b/spec/controllers/emojis_controller_spec.rb
index 710d23d92..249dfd9d5 100644
--- a/spec/controllers/emojis_controller_spec.rb
+++ b/spec/controllers/emojis_controller_spec.rb
@@ -8,10 +8,10 @@ describe EmojisController do
   let(:emoji) { Fabricate(:custom_emoji) }
 
   describe 'GET #show' do
-    subject(:response) { get :show, params: { id: emoji.id, format: :json } }
-
     subject(:body) { JSON.parse(response.body, symbolize_names: true) }
 
+    let(:response) { get :show, params: { id: emoji.id, format: :json } }
+
     it 'returns the right response' do
       expect(response).to have_http_status 200
       expect(body[:name]).to eq ':coolcat:'
diff --git a/spec/controllers/follower_accounts_controller_spec.rb b/spec/controllers/follower_accounts_controller_spec.rb
index 0551dfcde..b5b8ff9cb 100644
--- a/spec/controllers/follower_accounts_controller_spec.rb
+++ b/spec/controllers/follower_accounts_controller_spec.rb
@@ -39,10 +39,10 @@ describe FollowerAccountsController do
     end
 
     context 'when format is json' do
-      subject(:response) { get :index, params: { account_username: alice.username, page: page, format: :json } }
-
       subject(:body) { response.parsed_body }
 
+      let(:response) { get :index, params: { account_username: alice.username, page: page, format: :json } }
+
       context 'with page' do
         let(:page) { 1 }
 
diff --git a/spec/controllers/following_accounts_controller_spec.rb b/spec/controllers/following_accounts_controller_spec.rb
index b049df890..d1efeec25 100644
--- a/spec/controllers/following_accounts_controller_spec.rb
+++ b/spec/controllers/following_accounts_controller_spec.rb
@@ -39,10 +39,10 @@ describe FollowingAccountsController do
     end
 
     context 'when format is json' do
-      subject(:response) { get :index, params: { account_username: alice.username, page: page, format: :json } }
-
       subject(:body) { response.parsed_body }
 
+      let(:response) { get :index, params: { account_username: alice.username, page: page, format: :json } }
+
       context 'with page' do
         let(:page) { 1 }