diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml
index eb0910fe6c70992be1b5dc00170806f3bd0a642a..1eb039110e42019c3213c8cc20b3e181200ff790 100644
--- a/.rubocop_todo.yml
+++ b/.rubocop_todo.yml
@@ -952,88 +952,6 @@ RSpec/InstanceVariable:
     - 'spec/services/search_service_spec.rb'
     - 'spec/services/unblock_domain_service_spec.rb'
 
-# Offense count: 118
-# This cop supports safe autocorrection (--autocorrect).
-RSpec/LeadingSubject:
-  Exclude:
-    - 'spec/controllers/activitypub/collections_controller_spec.rb'
-    - 'spec/controllers/activitypub/followers_synchronizations_controller_spec.rb'
-    - 'spec/controllers/activitypub/inboxes_controller_spec.rb'
-    - 'spec/controllers/activitypub/outboxes_controller_spec.rb'
-    - 'spec/controllers/admin/invites_controller_spec.rb'
-    - 'spec/controllers/auth/registrations_controller_spec.rb'
-    - 'spec/controllers/well_known/webfinger_controller_spec.rb'
-    - 'spec/lib/activitypub/activity/accept_spec.rb'
-    - 'spec/lib/activitypub/activity/announce_spec.rb'
-    - 'spec/lib/activitypub/activity/create_spec.rb'
-    - 'spec/lib/activitypub/activity/reject_spec.rb'
-    - 'spec/lib/activitypub/activity/undo_spec.rb'
-    - 'spec/lib/activitypub/activity/update_spec.rb'
-    - 'spec/lib/activitypub/adapter_spec.rb'
-    - 'spec/lib/activitypub/dereferencer_spec.rb'
-    - 'spec/lib/activitypub/linked_data_signature_spec.rb'
-    - 'spec/lib/link_details_extractor_spec.rb'
-    - 'spec/lib/status_filter_spec.rb'
-    - 'spec/lib/status_reach_finder_spec.rb'
-    - 'spec/lib/suspicious_sign_in_detector_spec.rb'
-    - 'spec/lib/text_formatter_spec.rb'
-    - 'spec/lib/vacuum/backups_vacuum_spec.rb'
-    - 'spec/lib/vacuum/media_attachments_vacuum_spec.rb'
-    - 'spec/lib/vacuum/preview_cards_vacuum_spec.rb'
-    - 'spec/lib/vacuum/statuses_vacuum_spec.rb'
-    - 'spec/models/account/field_spec.rb'
-    - 'spec/models/account_spec.rb'
-    - 'spec/models/account_statuses_cleanup_policy_spec.rb'
-    - 'spec/models/account_statuses_filter_spec.rb'
-    - 'spec/models/concerns/account_interactions_spec.rb'
-    - 'spec/models/custom_emoji_filter_spec.rb'
-    - 'spec/models/custom_emoji_spec.rb'
-    - 'spec/models/home_feed_spec.rb'
-    - 'spec/models/media_attachment_spec.rb'
-    - 'spec/models/public_feed_spec.rb'
-    - 'spec/models/remote_follow_spec.rb'
-    - 'spec/models/setting_spec.rb'
-    - 'spec/models/status_spec.rb'
-    - 'spec/models/user_spec.rb'
-    - 'spec/models/web/push_subscription_spec.rb'
-    - 'spec/presenters/familiar_followers_presenter_spec.rb'
-    - 'spec/serializers/activitypub/note_spec.rb'
-    - 'spec/serializers/activitypub/update_poll_spec.rb'
-    - 'spec/serializers/rest/account_serializer_spec.rb'
-    - 'spec/services/activitypub/fetch_featured_collection_service_spec.rb'
-    - 'spec/services/activitypub/fetch_featured_tags_collection_service_spec.rb'
-    - 'spec/services/activitypub/fetch_remote_status_service_spec.rb'
-    - 'spec/services/activitypub/fetch_replies_service_spec.rb'
-    - 'spec/services/activitypub/process_account_service_spec.rb'
-    - 'spec/services/activitypub/process_collection_service_spec.rb'
-    - 'spec/services/activitypub/process_status_update_service_spec.rb'
-    - 'spec/services/activitypub/synchronize_followers_service_spec.rb'
-    - 'spec/services/after_block_domain_from_account_service_spec.rb'
-    - 'spec/services/app_sign_up_service_spec.rb'
-    - 'spec/services/authorize_follow_service_spec.rb'
-    - 'spec/services/block_domain_service_spec.rb'
-    - 'spec/services/block_service_spec.rb'
-    - 'spec/services/clear_domain_media_service_spec.rb'
-    - 'spec/services/delete_account_service_spec.rb'
-    - 'spec/services/fan_out_on_write_service_spec.rb'
-    - 'spec/services/favourite_service_spec.rb'
-    - 'spec/services/fetch_resource_service_spec.rb'
-    - 'spec/services/follow_service_spec.rb'
-    - 'spec/services/process_mentions_service_spec.rb'
-    - 'spec/services/purge_domain_service_spec.rb'
-    - 'spec/services/reblog_service_spec.rb'
-    - 'spec/services/reject_follow_service_spec.rb'
-    - 'spec/services/remove_from_follwers_service_spec.rb'
-    - 'spec/services/report_service_spec.rb'
-    - 'spec/services/suspend_account_service_spec.rb'
-    - 'spec/services/unallow_domain_service_spec.rb'
-    - 'spec/services/unblock_service_spec.rb'
-    - 'spec/services/unfollow_service_spec.rb'
-    - 'spec/services/unsuspend_account_service_spec.rb'
-    - 'spec/validators/blacklisted_email_validator_spec.rb'
-    - 'spec/workers/move_worker_spec.rb'
-    - 'spec/workers/unfollow_follow_worker_spec.rb'
-
 # Offense count: 15
 RSpec/LeakyConstantDeclaration:
   Exclude:
diff --git a/spec/controllers/activitypub/collections_controller_spec.rb b/spec/controllers/activitypub/collections_controller_spec.rb
index 19c0e0a646cfd31917998b69397b0df8bc47ce12..77901131e72ca118280d23bd4274714c83190dc7 100644
--- a/spec/controllers/activitypub/collections_controller_spec.rb
+++ b/spec/controllers/activitypub/collections_controller_spec.rb
@@ -35,11 +35,11 @@ RSpec.describe ActivityPub::CollectionsController, type: :controller do
   describe 'GET #show' do
     context 'when id is "featured"' do
       context 'without signature' do
-        let(:remote_account) { nil }
+        subject(:body) { body_as_json }
 
         subject(:response) { get :show, params: { id: 'featured', account_username: account.username } }
 
-        subject(:body) { body_as_json }
+        let(:remote_account) { nil }
 
         it 'returns http success' do
           expect(response).to have_http_status(200)
diff --git a/spec/controllers/activitypub/followers_synchronizations_controller_spec.rb b/spec/controllers/activitypub/followers_synchronizations_controller_spec.rb
index 893c8e14f1ff6ba663adeab353d62d3b0e7e6c03..6ec756d3cf2506f3f425960cc22ebff798b6a47b 100644
--- a/spec/controllers/activitypub/followers_synchronizations_controller_spec.rb
+++ b/spec/controllers/activitypub/followers_synchronizations_controller_spec.rb
@@ -32,11 +32,11 @@ RSpec.describe ActivityPub::FollowersSynchronizationsController, type: :controll
     end
 
     context 'with signature from example.com' do
-      let(:remote_account) { Fabricate(:account, domain: 'example.com', uri: 'https://example.com/instance') }
+      subject(:body) { body_as_json }
 
       subject(:response) { get :show, params: { account_username: account.username } }
 
-      subject(:body) { body_as_json }
+      let(:remote_account) { Fabricate(:account, domain: 'example.com', uri: 'https://example.com/instance') }
 
       it 'returns http success' do
         expect(response).to have_http_status(200)
diff --git a/spec/controllers/activitypub/inboxes_controller_spec.rb b/spec/controllers/activitypub/inboxes_controller_spec.rb
index 7f4d6b2d3ef022cd44f8177b6476d1e509a9b9d9..8d4084648d0a20643c301fc7ae6bad827aaf9f4a 100644
--- a/spec/controllers/activitypub/inboxes_controller_spec.rb
+++ b/spec/controllers/activitypub/inboxes_controller_spec.rb
@@ -22,10 +22,10 @@ RSpec.describe ActivityPub::InboxesController, type: :controller do
       end
 
       context 'for a specific account' do
-        let(:account) { Fabricate(:account) }
-
         subject(:response) { post :create, params: { account_username: account.username }, body: '{}' }
 
+        let(:account) { Fabricate(:account) }
+
         context 'when account is permanently suspended' do
           before do
             account.suspend!
diff --git a/spec/controllers/activitypub/outboxes_controller_spec.rb b/spec/controllers/activitypub/outboxes_controller_spec.rb
index f84a902ea159e6b528b8f916ee02451df5734c27..7369ee41343a56cbd78b074d9f995f13888b7165 100644
--- a/spec/controllers/activitypub/outboxes_controller_spec.rb
+++ b/spec/controllers/activitypub/outboxes_controller_spec.rb
@@ -33,11 +33,11 @@ RSpec.describe ActivityPub::OutboxesController, type: :controller do
 
   describe 'GET #show' do
     context 'without signature' do
-      let(:remote_account) { nil }
+      subject(:body) { body_as_json }
 
       subject(:response) { get :show, params: { account_username: account.username, page: page } }
 
-      subject(:body) { body_as_json }
+      let(:remote_account) { nil }
 
       context 'with page not requested' do
         let(:page) { nil }
diff --git a/spec/controllers/admin/invites_controller_spec.rb b/spec/controllers/admin/invites_controller_spec.rb
index 1fb4887423dcbcca19ec35e15311dca02d94bc85..92ec4e44913ebb75c2be088c27b7603f996e14a2 100644
--- a/spec/controllers/admin/invites_controller_spec.rb
+++ b/spec/controllers/admin/invites_controller_spec.rb
@@ -33,10 +33,10 @@ describe Admin::InvitesController do
   end
 
   describe 'DELETE #destroy' do
-    let!(:invite) { Fabricate(:invite, expires_at: nil) }
-
     subject { delete :destroy, params: { id: invite.id } }
 
+    let!(:invite) { Fabricate(:invite, expires_at: nil) }
+
     it 'expires invite' do
       expect(subject).to redirect_to admin_invites_path
       expect(invite.reload).to be_expired
diff --git a/spec/controllers/auth/registrations_controller_spec.rb b/spec/controllers/auth/registrations_controller_spec.rb
index 52023eb2efaf87b52029dbeb2368d3c3a7942ae2..8cfb8e277ab458217cdc62aa7c0d39f8e601c951 100644
--- a/spec/controllers/auth/registrations_controller_spec.rb
+++ b/spec/controllers/auth/registrations_controller_spec.rb
@@ -95,18 +95,18 @@ RSpec.describe Auth::RegistrationsController, type: :controller do
     before { request.env['devise.mapping'] = Devise.mappings[:user] }
 
     context do
-      around do |example|
-        registrations_mode = Setting.registrations_mode
-        example.run
-        Setting.registrations_mode = registrations_mode
-      end
-
       subject do
         Setting.registrations_mode = 'open'
         request.headers['Accept-Language'] = accept_language
         post :create, params: { user: { account_attributes: { username: 'test' }, email: 'test@example.com', password: '12345678', password_confirmation: '12345678', agreement: 'true' } }
       end
 
+      around do |example|
+        registrations_mode = Setting.registrations_mode
+        example.run
+        Setting.registrations_mode = registrations_mode
+      end
+
       it 'redirects to setup' do
         subject
         expect(response).to redirect_to auth_setup_path
@@ -121,18 +121,18 @@ RSpec.describe Auth::RegistrationsController, type: :controller do
     end
 
     context 'when user has not agreed to terms of service' do
-      around do |example|
-        registrations_mode = Setting.registrations_mode
-        example.run
-        Setting.registrations_mode = registrations_mode
-      end
-
       subject do
         Setting.registrations_mode = 'open'
         request.headers['Accept-Language'] = accept_language
         post :create, params: { user: { account_attributes: { username: 'test' }, email: 'test@example.com', password: '12345678', password_confirmation: '12345678', agreement: 'false' } }
       end
 
+      around do |example|
+        registrations_mode = Setting.registrations_mode
+        example.run
+        Setting.registrations_mode = registrations_mode
+      end
+
       it 'does not create user' do
         subject
         user = User.find_by(email: 'test@example.com')
@@ -141,18 +141,18 @@ RSpec.describe Auth::RegistrationsController, type: :controller do
     end
 
     context 'approval-based registrations without invite' do
-      around do |example|
-        registrations_mode = Setting.registrations_mode
-        example.run
-        Setting.registrations_mode = registrations_mode
-      end
-
       subject do
         Setting.registrations_mode = 'approved'
         request.headers['Accept-Language'] = accept_language
         post :create, params: { user: { account_attributes: { username: 'test' }, email: 'test@example.com', password: '12345678', password_confirmation: '12345678', agreement: 'true' } }
       end
 
+      around do |example|
+        registrations_mode = Setting.registrations_mode
+        example.run
+        Setting.registrations_mode = registrations_mode
+      end
+
       it 'redirects to setup' do
         subject
         expect(response).to redirect_to auth_setup_path
@@ -168,12 +168,6 @@ RSpec.describe Auth::RegistrationsController, type: :controller do
     end
 
     context 'approval-based registrations with expired invite' do
-      around do |example|
-        registrations_mode = Setting.registrations_mode
-        example.run
-        Setting.registrations_mode = registrations_mode
-      end
-
       subject do
         Setting.registrations_mode = 'approved'
         request.headers['Accept-Language'] = accept_language
@@ -181,6 +175,12 @@ RSpec.describe Auth::RegistrationsController, type: :controller do
         post :create, params: { user: { account_attributes: { username: 'test' }, email: 'test@example.com', password: '12345678', password_confirmation: '12345678', invite_code: invite.code, agreement: 'true' } }
       end
 
+      around do |example|
+        registrations_mode = Setting.registrations_mode
+        example.run
+        Setting.registrations_mode = registrations_mode
+      end
+
       it 'redirects to setup' do
         subject
         expect(response).to redirect_to auth_setup_path
@@ -196,14 +196,6 @@ RSpec.describe Auth::RegistrationsController, type: :controller do
     end
 
     context 'approval-based registrations with valid invite and required invite text' do
-      around do |example|
-        registrations_mode = Setting.registrations_mode
-        require_invite_text = Setting.require_invite_text
-        example.run
-        Setting.require_invite_text = require_invite_text
-        Setting.registrations_mode = registrations_mode
-      end
-
       subject do
         inviter = Fabricate(:user, confirmed_at: 2.days.ago)
         Setting.registrations_mode = 'approved'
@@ -213,6 +205,14 @@ RSpec.describe Auth::RegistrationsController, type: :controller do
         post :create, params: { user: { account_attributes: { username: 'test' }, email: 'test@example.com', password: '12345678', password_confirmation: '12345678', invite_code: invite.code, agreement: 'true' } }
       end
 
+      around do |example|
+        registrations_mode = Setting.registrations_mode
+        require_invite_text = Setting.require_invite_text
+        example.run
+        Setting.require_invite_text = require_invite_text
+        Setting.registrations_mode = registrations_mode
+      end
+
       it 'redirects to setup' do
         subject
         expect(response).to redirect_to auth_setup_path
diff --git a/spec/controllers/well_known/webfinger_controller_spec.rb b/spec/controllers/well_known/webfinger_controller_spec.rb
index 8574d369d19d5e8ddf0da627a3d97dcb77254e74..1ccfb218e8d73e3b5d428a2c8e7acde00c5697dd 100644
--- a/spec/controllers/well_known/webfinger_controller_spec.rb
+++ b/spec/controllers/well_known/webfinger_controller_spec.rb
@@ -4,6 +4,10 @@ describe WellKnown::WebfingerController, type: :controller do
   render_views
 
   describe 'GET #show' do
+    subject do
+      get :show, params: { resource: resource }, format: :json
+    end
+
     let(:alternate_domains) { [] }
     let(:alice) { Fabricate(:account, username: 'alice') }
     let(:resource) { nil }
@@ -15,10 +19,6 @@ describe WellKnown::WebfingerController, type: :controller do
       Rails.configuration.x.alternate_domains = tmp
     end
 
-    subject do
-      get :show, params: { resource: resource }, format: :json
-    end
-
     shared_examples 'a successful response' do
       it 'returns http success' do
         expect(response).to have_http_status(200)
diff --git a/spec/lib/activitypub/activity/accept_spec.rb b/spec/lib/activitypub/activity/accept_spec.rb
index 304cf2208af7f58098baee6010af441b8be1006d..95a5a8747d106b77d02788874b4f3270c315ee95 100644
--- a/spec/lib/activitypub/activity/accept_spec.rb
+++ b/spec/lib/activitypub/activity/accept_spec.rb
@@ -42,6 +42,8 @@ RSpec.describe ActivityPub::Activity::Accept do
   end
 
   context 'given a relay' do
+    subject { described_class.new(json, sender) }
+
     let!(:relay) { Fabricate(:relay, state: :pending, follow_activity_id: 'https://abc-123/456') }
 
     let(:json) do
@@ -59,8 +61,6 @@ RSpec.describe ActivityPub::Activity::Accept do
       }.with_indifferent_access
     end
 
-    subject { described_class.new(json, sender) }
-
     it 'marks the relay as accepted' do
       subject.perform
       expect(relay.reload.accepted?).to be true
diff --git a/spec/lib/activitypub/activity/announce_spec.rb b/spec/lib/activitypub/activity/announce_spec.rb
index adb13acc21297fbbc71a3a1f123c7bac00d8a52d..b3257e881fe81f814d8b9f6aa3901339315f52dc 100644
--- a/spec/lib/activitypub/activity/announce_spec.rb
+++ b/spec/lib/activitypub/activity/announce_spec.rb
@@ -1,6 +1,8 @@
 require 'rails_helper'
 
 RSpec.describe ActivityPub::Activity::Announce do
+  subject { described_class.new(json, sender) }
+
   let(:sender)    { Fabricate(:account, followers_url: 'http://example.com/followers', uri: 'https://example.com/actor') }
   let(:recipient) { Fabricate(:account) }
   let(:status)    { Fabricate(:status, account: recipient) }
@@ -27,8 +29,6 @@ RSpec.describe ActivityPub::Activity::Announce do
     }
   end
 
-  subject { described_class.new(json, sender) }
-
   describe '#perform' do
     context 'when sender is followed by a local account' do
       before do
@@ -110,13 +110,13 @@ RSpec.describe ActivityPub::Activity::Announce do
     end
 
     context 'when the sender is relayed' do
+      subject { described_class.new(json, sender, relayed_through_actor: relay_account) }
+
       let!(:relay_account) { Fabricate(:account, inbox_url: 'https://relay.example.com/inbox') }
       let!(:relay) { Fabricate(:relay, inbox_url: 'https://relay.example.com/inbox') }
 
       let(:object_json) { 'https://example.com/actor/hello-world' }
 
-      subject { described_class.new(json, sender, relayed_through_actor: relay_account) }
-
       before do
         stub_request(:get, 'https://example.com/actor/hello-world').to_return(body: Oj.dump(unknown_object_json))
       end
diff --git a/spec/lib/activitypub/activity/create_spec.rb b/spec/lib/activitypub/activity/create_spec.rb
index ddbdb07aa855ffb60229ce8ca61d0a3465502cfd..c26c8b3580dd65ce109b40473010996efa4e7ce1 100644
--- a/spec/lib/activitypub/activity/create_spec.rb
+++ b/spec/lib/activitypub/activity/create_spec.rb
@@ -752,6 +752,8 @@ RSpec.describe ActivityPub::Activity::Create do
     end
 
     context 'with an encrypted message' do
+      subject { described_class.new(json, sender, delivery: true, delivered_to_account_id: recipient.id) }
+
       let(:recipient) { Fabricate(:account) }
       let(:object_json) do
         {
@@ -776,8 +778,6 @@ RSpec.describe ActivityPub::Activity::Create do
       end
       let(:target_device) { Fabricate(:device, account: recipient) }
 
-      subject { described_class.new(json, sender, delivery: true, delivered_to_account_id: recipient.id) }
-
       before do
         subject.perform
       end
@@ -831,6 +831,8 @@ RSpec.describe ActivityPub::Activity::Create do
     end
 
     context 'when sender replies to local status' do
+      subject { described_class.new(json, sender, delivery: true) }
+
       let!(:local_status) { Fabricate(:status) }
       let(:object_json) do
         {
@@ -841,8 +843,6 @@ RSpec.describe ActivityPub::Activity::Create do
         }
       end
 
-      subject { described_class.new(json, sender, delivery: true) }
-
       before do
         subject.perform
       end
@@ -856,6 +856,8 @@ RSpec.describe ActivityPub::Activity::Create do
     end
 
     context 'when sender targets a local user' do
+      subject { described_class.new(json, sender, delivery: true) }
+
       let!(:local_account) { Fabricate(:account) }
       let(:object_json) do
         {
@@ -866,8 +868,6 @@ RSpec.describe ActivityPub::Activity::Create do
         }
       end
 
-      subject { described_class.new(json, sender, delivery: true) }
-
       before do
         subject.perform
       end
@@ -881,6 +881,8 @@ RSpec.describe ActivityPub::Activity::Create do
     end
 
     context 'when sender cc\'s a local user' do
+      subject { described_class.new(json, sender, delivery: true) }
+
       let!(:local_account) { Fabricate(:account) }
       let(:object_json) do
         {
@@ -891,8 +893,6 @@ RSpec.describe ActivityPub::Activity::Create do
         }
       end
 
-      subject { described_class.new(json, sender, delivery: true) }
-
       before do
         subject.perform
       end
diff --git a/spec/lib/activitypub/activity/reject_spec.rb b/spec/lib/activitypub/activity/reject_spec.rb
index fed4cd8cdc47eb61608748793dd25a0d90e758a8..7f04db4e61f6afb03f81a64eb8b88749524c301c 100644
--- a/spec/lib/activitypub/activity/reject_spec.rb
+++ b/spec/lib/activitypub/activity/reject_spec.rb
@@ -121,6 +121,8 @@ RSpec.describe ActivityPub::Activity::Reject do
   end
 
   context 'given a relay' do
+    subject { described_class.new(json, sender) }
+
     let!(:relay) { Fabricate(:relay, state: :pending, follow_activity_id: 'https://abc-123/456') }
 
     let(:json) do
@@ -138,8 +140,6 @@ RSpec.describe ActivityPub::Activity::Reject do
       }.with_indifferent_access
     end
 
-    subject { described_class.new(json, sender) }
-
     it 'marks the relay as rejected' do
       subject.perform
       expect(relay.reload.rejected?).to be true
diff --git a/spec/lib/activitypub/activity/undo_spec.rb b/spec/lib/activitypub/activity/undo_spec.rb
index c0309e49dafcee0f6f523ec14957f4815d7b1f67..0bd1f17d351fc1dd00c98cde7bcf59a1ac074360 100644
--- a/spec/lib/activitypub/activity/undo_spec.rb
+++ b/spec/lib/activitypub/activity/undo_spec.rb
@@ -1,6 +1,8 @@
 require 'rails_helper'
 
 RSpec.describe ActivityPub::Activity::Undo do
+  subject { described_class.new(json, sender) }
+
   let(:sender) { Fabricate(:account, domain: 'example.com') }
 
   let(:json) do
@@ -13,8 +15,6 @@ RSpec.describe ActivityPub::Activity::Undo do
     }.with_indifferent_access
   end
 
-  subject { described_class.new(json, sender) }
-
   describe '#perform' do
     context 'with Announce' do
       let(:status) { Fabricate(:status) }
diff --git a/spec/lib/activitypub/activity/update_spec.rb b/spec/lib/activitypub/activity/update_spec.rb
index 4cd853af215acdea5ca221f63cc448f32ac36e63..d2a1edd7a0ac9c798c5d335bd4e0109bd1b73cea 100644
--- a/spec/lib/activitypub/activity/update_spec.rb
+++ b/spec/lib/activitypub/activity/update_spec.rb
@@ -1,14 +1,14 @@
 require 'rails_helper'
 
 RSpec.describe ActivityPub::Activity::Update do
+  subject { described_class.new(json, sender) }
+
   let!(:sender) { Fabricate(:account) }
 
   before do
     sender.update!(uri: ActivityPub::TagManager.instance.uri_for(sender))
   end
 
-  subject { described_class.new(json, sender) }
-
   describe '#perform' do
     context 'with an Actor object' do
       let(:modified_sender) do
diff --git a/spec/lib/activitypub/adapter_spec.rb b/spec/lib/activitypub/adapter_spec.rb
index ea03797aab2819a7a5da31456ae7928150cc9d1a..e4c403abb9d245fcb00de321949ba4844b866f62 100644
--- a/spec/lib/activitypub/adapter_spec.rb
+++ b/spec/lib/activitypub/adapter_spec.rb
@@ -41,10 +41,10 @@ RSpec.describe ActivityPub::Adapter do
   end
 
   describe '#serializable_hash' do
-    let(:serializer_class) {}
-
     subject { ActiveModelSerializers::SerializableResource.new(TestObject.new(foo: 'bar'), serializer: serializer_class, adapter: described_class).as_json }
 
+    let(:serializer_class) {}
+
     context 'when serializer defines no context' do
       let(:serializer_class) { TestWithBasicContextSerializer }
 
diff --git a/spec/lib/activitypub/dereferencer_spec.rb b/spec/lib/activitypub/dereferencer_spec.rb
index e50b497c7ec3288be1b51b2658dbf7408f7a03ce..800473a7ca6039bf1e82e59bc4f519efc8b2c69b 100644
--- a/spec/lib/activitypub/dereferencer_spec.rb
+++ b/spec/lib/activitypub/dereferencer_spec.rb
@@ -2,13 +2,13 @@ require 'rails_helper'
 
 RSpec.describe ActivityPub::Dereferencer do
   describe '#object' do
+    subject { described_class.new(uri, permitted_origin: permitted_origin, signature_actor: signature_actor).object }
+
     let(:object) { { '@context': 'https://www.w3.org/ns/activitystreams', id: 'https://example.com/foo', type: 'Note', content: 'Hoge' } }
     let(:permitted_origin) { 'https://example.com' }
     let(:signature_actor) { nil }
     let(:uri) { nil }
 
-    subject { described_class.new(uri, permitted_origin: permitted_origin, signature_actor: signature_actor).object }
-
     before do
       stub_request(:get, 'https://example.com/foo').to_return(body: Oj.dump(object), headers: { 'Content-Type' => 'application/activity+json' })
     end
diff --git a/spec/lib/activitypub/linked_data_signature_spec.rb b/spec/lib/activitypub/linked_data_signature_spec.rb
index d55a7c7fa85e942ca2ac6ccce7b2aae92a9ae7e6..ecb1e16db7880c8898fe48b460a2a49d5404ba2c 100644
--- a/spec/lib/activitypub/linked_data_signature_spec.rb
+++ b/spec/lib/activitypub/linked_data_signature_spec.rb
@@ -3,6 +3,8 @@ require 'rails_helper'
 RSpec.describe ActivityPub::LinkedDataSignature do
   include JsonLdHelper
 
+  subject { described_class.new(json) }
+
   let!(:sender) { Fabricate(:account, uri: 'http://example.com/alice') }
 
   let(:raw_json) do
@@ -14,8 +16,6 @@ RSpec.describe ActivityPub::LinkedDataSignature do
 
   let(:json) { raw_json.merge('signature' => signature) }
 
-  subject { described_class.new(json) }
-
   before do
     stub_jsonld_contexts!
   end
diff --git a/spec/lib/link_details_extractor_spec.rb b/spec/lib/link_details_extractor_spec.rb
index 7eb15ced3ace1a1ae499bd4b8f4c9c7a7520277f..fcc2654744bd65aae8fa615dd97b38591fe93c45 100644
--- a/spec/lib/link_details_extractor_spec.rb
+++ b/spec/lib/link_details_extractor_spec.rb
@@ -1,12 +1,12 @@
 require 'rails_helper'
 
 RSpec.describe LinkDetailsExtractor do
+  subject { described_class.new(original_url, html, html_charset) }
+
   let(:original_url) { '' }
   let(:html) { '' }
   let(:html_charset) { nil }
 
-  subject { described_class.new(original_url, html, html_charset) }
-
   describe '#canonical_url' do
     let(:original_url) { 'https://foo.com/article?bar=baz123' }
 
diff --git a/spec/lib/status_filter_spec.rb b/spec/lib/status_filter_spec.rb
index cdb4820590416b84e10d9bfbe7791f9d65331540..08519bc59036665429c645e0a1f4cfdf56566720 100644
--- a/spec/lib/status_filter_spec.rb
+++ b/spec/lib/status_filter_spec.rb
@@ -31,10 +31,10 @@ describe StatusFilter do
     end
 
     context 'with real account' do
-      let(:account) { Fabricate(:account) }
-
       subject { described_class.new(status, account) }
 
+      let(:account) { Fabricate(:account) }
+
       context 'when there are no connections' do
         it { is_expected.to_not be_filtered }
       end
diff --git a/spec/lib/status_reach_finder_spec.rb b/spec/lib/status_reach_finder_spec.rb
index f0c22b16510cfe4db961767c42ac0663a9859733..785ce28a0ea6e6f5fb71d5daa85b7915ecee8836 100644
--- a/spec/lib/status_reach_finder_spec.rb
+++ b/spec/lib/status_reach_finder_spec.rb
@@ -5,13 +5,13 @@ require 'rails_helper'
 describe StatusReachFinder do
   describe '#inboxes' do
     context 'for a local status' do
+      subject { described_class.new(status) }
+
       let(:parent_status) { nil }
       let(:visibility) { :public }
       let(:alice) { Fabricate(:account, username: 'alice') }
       let(:status) { Fabricate(:status, account: alice, thread: parent_status, visibility: visibility) }
 
-      subject { described_class.new(status) }
-
       context 'when it contains mentions of remote accounts' do
         let(:bob) { Fabricate(:account, username: 'bob', domain: 'foo.bar', protocol: :activitypub, inbox_url: 'https://foo.bar/inbox') }
 
diff --git a/spec/lib/suspicious_sign_in_detector_spec.rb b/spec/lib/suspicious_sign_in_detector_spec.rb
index 101a18aa01708429b3b3fa520fafd9fb9fb23ddd..05aadfd8faeee80a01eb0f9cc428139e9d16a3b2 100644
--- a/spec/lib/suspicious_sign_in_detector_spec.rb
+++ b/spec/lib/suspicious_sign_in_detector_spec.rb
@@ -2,12 +2,12 @@ require 'rails_helper'
 
 RSpec.describe SuspiciousSignInDetector do
   describe '#suspicious?' do
+    subject { described_class.new(user).suspicious?(request) }
+
     let(:user) { Fabricate(:user, current_sign_in_at: 1.day.ago) }
     let(:request) { double(remote_ip: remote_ip) }
     let(:remote_ip) { nil }
 
-    subject { described_class.new(user).suspicious?(request) }
-
     context 'when user has 2FA enabled' do
       before do
         user.update!(otp_required_for_login: true)
diff --git a/spec/lib/text_formatter_spec.rb b/spec/lib/text_formatter_spec.rb
index 63a9075c7c37892bdea0cfa7a6cdb3bf3386bdc5..04ae4e02c058f1f2495ed6fe894ed02ed1972310 100644
--- a/spec/lib/text_formatter_spec.rb
+++ b/spec/lib/text_formatter_spec.rb
@@ -2,10 +2,10 @@ require 'rails_helper'
 
 RSpec.describe TextFormatter do
   describe '#to_s' do
-    let(:preloaded_accounts) { nil }
-
     subject { described_class.new(text, preloaded_accounts: preloaded_accounts).to_s }
 
+    let(:preloaded_accounts) { nil }
+
     context 'given text containing plain text' do
       let(:text) { 'text' }
 
diff --git a/spec/lib/vacuum/backups_vacuum_spec.rb b/spec/lib/vacuum/backups_vacuum_spec.rb
index 4e2de083f8c34c25ee8a7bcb911b191a0194c5b7..c505a3e1ae6eed7cf8adc9b0109de7bc27449471 100644
--- a/spec/lib/vacuum/backups_vacuum_spec.rb
+++ b/spec/lib/vacuum/backups_vacuum_spec.rb
@@ -1,10 +1,10 @@
 require 'rails_helper'
 
 RSpec.describe Vacuum::BackupsVacuum do
-  let(:retention_period) { 7.days }
-
   subject { described_class.new(retention_period) }
 
+  let(:retention_period) { 7.days }
+
   describe '#perform' do
     let!(:expired_backup) { Fabricate(:backup, created_at: (retention_period + 1.day).ago) }
     let!(:current_backup) { Fabricate(:backup) }
diff --git a/spec/lib/vacuum/media_attachments_vacuum_spec.rb b/spec/lib/vacuum/media_attachments_vacuum_spec.rb
index 436237b25f43176743077085ba0589994e1d1637..afcb6f878a950b662c895cce5b65d0281c1b1ec8 100644
--- a/spec/lib/vacuum/media_attachments_vacuum_spec.rb
+++ b/spec/lib/vacuum/media_attachments_vacuum_spec.rb
@@ -1,12 +1,12 @@
 require 'rails_helper'
 
 RSpec.describe Vacuum::MediaAttachmentsVacuum do
+  subject { described_class.new(retention_period) }
+
   let(:retention_period) { 7.days }
   let(:remote_status) { Fabricate(:status, account: Fabricate(:account, domain: 'example.com')) }
   let(:local_status) { Fabricate(:status) }
 
-  subject { described_class.new(retention_period) }
-
   describe '#perform' do
     let!(:old_remote_media) { Fabricate(:media_attachment, remote_url: 'https://example.com/foo.png', status: remote_status, created_at: (retention_period + 1.day).ago, updated_at: (retention_period + 1.day).ago) }
     let!(:old_local_media) { Fabricate(:media_attachment, status: local_status, created_at: (retention_period + 1.day).ago, updated_at: (retention_period + 1.day).ago) }
diff --git a/spec/lib/vacuum/preview_cards_vacuum_spec.rb b/spec/lib/vacuum/preview_cards_vacuum_spec.rb
index 275f9ba92fa637dbb0f13617d0e7ef3eec0f2813..524f4c92748ddbd531ca9918670c9356634f01dd 100644
--- a/spec/lib/vacuum/preview_cards_vacuum_spec.rb
+++ b/spec/lib/vacuum/preview_cards_vacuum_spec.rb
@@ -1,10 +1,10 @@
 require 'rails_helper'
 
 RSpec.describe Vacuum::PreviewCardsVacuum do
-  let(:retention_period) { 7.days }
-
   subject { described_class.new(retention_period) }
 
+  let(:retention_period) { 7.days }
+
   describe '#perform' do
     let!(:orphaned_preview_card) { Fabricate(:preview_card, created_at: 2.days.ago) }
     let!(:old_preview_card) { Fabricate(:preview_card, updated_at: (retention_period + 1.day).ago) }
diff --git a/spec/lib/vacuum/statuses_vacuum_spec.rb b/spec/lib/vacuum/statuses_vacuum_spec.rb
index 83f3c5c9f14f7a8f056dcc33bc1329da4cbe7e5b..9583376b72d2bc07bdd5803e58503ed0e92f2c08 100644
--- a/spec/lib/vacuum/statuses_vacuum_spec.rb
+++ b/spec/lib/vacuum/statuses_vacuum_spec.rb
@@ -1,12 +1,12 @@
 require 'rails_helper'
 
 RSpec.describe Vacuum::StatusesVacuum do
+  subject { described_class.new(retention_period) }
+
   let(:retention_period) { 7.days }
 
   let(:remote_account) { Fabricate(:account, domain: 'example.com') }
 
-  subject { described_class.new(retention_period) }
-
   describe '#perform' do
     let!(:remote_status_old) { Fabricate(:status, account: remote_account, created_at: (retention_period + 2.days).ago) }
     let!(:remote_status_recent) { Fabricate(:status, account: remote_account, created_at: (retention_period - 2.days).ago) }
diff --git a/spec/models/account/field_spec.rb b/spec/models/account/field_spec.rb
index 40bbee025f7a9f75b8037c0c7343821644322ac8..36e1a8595af9cbdeda0d39ef9ac735e8f0146cb5 100644
--- a/spec/models/account/field_spec.rb
+++ b/spec/models/account/field_spec.rb
@@ -2,10 +2,10 @@ require 'rails_helper'
 
 RSpec.describe Account::Field, type: :model do
   describe '#verified?' do
-    let(:account) { double('Account', local?: true) }
-
     subject { described_class.new(account, 'name' => 'Foo', 'value' => 'Bar', 'verified_at' => verified_at) }
 
+    let(:account) { double('Account', local?: true) }
+
     context 'when verified_at is set' do
       let(:verified_at) { Time.now.utc.iso8601 }
 
@@ -24,11 +24,11 @@ RSpec.describe Account::Field, type: :model do
   end
 
   describe '#mark_verified!' do
+    subject { described_class.new(account, original_hash) }
+
     let(:account) { double('Account', local?: true) }
     let(:original_hash) { { 'name' => 'Foo', 'value' => 'Bar' } }
 
-    subject { described_class.new(account, original_hash) }
-
     before do
       subject.mark_verified!
     end
@@ -43,10 +43,10 @@ RSpec.describe Account::Field, type: :model do
   end
 
   describe '#verifiable?' do
-    let(:account) { double('Account', local?: local) }
-
     subject { described_class.new(account, 'name' => 'Foo', 'value' => value) }
 
+    let(:account) { double('Account', local?: local) }
+
     context 'for local accounts' do
       let(:local) { true }
 
diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb
index 03ed12d7804ac953f8f545ce32654d5aeed2c79c..726e33048e0a9c73747de0ee76ab46010a750748 100644
--- a/spec/models/account_spec.rb
+++ b/spec/models/account_spec.rb
@@ -2,10 +2,10 @@ require 'rails_helper'
 
 RSpec.describe Account, type: :model do
   context do
-    let(:bob) { Fabricate(:account, username: 'bob') }
-
     subject { Fabricate(:account) }
 
+    let(:bob) { Fabricate(:account, username: 'bob') }
+
     describe '#suspend!' do
       it 'marks the account as suspended' do
         subject.suspend!
@@ -87,14 +87,14 @@ RSpec.describe Account, type: :model do
   end
 
   describe 'Local domain user methods' do
+    subject { Fabricate(:account, domain: nil, username: 'alice') }
+
     around do |example|
       before = Rails.configuration.x.local_domain
       example.run
       Rails.configuration.x.local_domain = before
     end
 
-    subject { Fabricate(:account, domain: nil, username: 'alice') }
-
     describe '#to_webfinger_s' do
       it 'returns a webfinger string for the account' do
         Rails.configuration.x.local_domain = 'example.com'
@@ -243,13 +243,13 @@ RSpec.describe Account, type: :model do
   end
 
   describe '#favourited?' do
+    subject { Fabricate(:account) }
+
     let(:original_status) do
       author = Fabricate(:account, username: 'original')
       Fabricate(:status, account: author)
     end
 
-    subject { Fabricate(:account) }
-
     context 'when the status is a reblog of another status' do
       let(:original_reblog) do
         author = Fabricate(:account, username: 'original_reblogger')
@@ -281,13 +281,13 @@ RSpec.describe Account, type: :model do
   end
 
   describe '#reblogged?' do
+    subject { Fabricate(:account) }
+
     let(:original_status) do
       author = Fabricate(:account, username: 'original')
       Fabricate(:status, account: author)
     end
 
-    subject { Fabricate(:account) }
-
     context 'when the status is a reblog of another status' do
       let(:original_reblog) do
         author = Fabricate(:account, username: 'original_reblogger')
diff --git a/spec/models/account_statuses_cleanup_policy_spec.rb b/spec/models/account_statuses_cleanup_policy_spec.rb
index d3c011b3a2dd759181b2f090e7520affdd40c4e1..8bd86730bc083008ecffac7027873a9455271798 100644
--- a/spec/models/account_statuses_cleanup_policy_spec.rb
+++ b/spec/models/account_statuses_cleanup_policy_spec.rb
@@ -132,11 +132,11 @@ RSpec.describe AccountStatusesCleanupPolicy, type: :model do
   end
 
   describe '#invalidate_last_inspected' do
+    subject { account_statuses_cleanup_policy.invalidate_last_inspected(status, action) }
+
     let(:account_statuses_cleanup_policy) { Fabricate(:account_statuses_cleanup_policy, account: account) }
     let(:status) { Fabricate(:status, id: 10, account: account) }
 
-    subject { account_statuses_cleanup_policy.invalidate_last_inspected(status, action) }
-
     before do
       account_statuses_cleanup_policy.record_last_inspected(42)
     end
@@ -231,11 +231,11 @@ RSpec.describe AccountStatusesCleanupPolicy, type: :model do
   end
 
   describe '#compute_cutoff_id' do
+    subject { account_statuses_cleanup_policy.compute_cutoff_id }
+
     let!(:unrelated_status) { Fabricate(:status, created_at: 3.years.ago) }
     let(:account_statuses_cleanup_policy) { Fabricate(:account_statuses_cleanup_policy, account: account) }
 
-    subject { account_statuses_cleanup_policy.compute_cutoff_id }
-
     context 'when the account has posted multiple toots' do
       let!(:very_old_status)   { Fabricate(:status, created_at: 3.years.ago, account: account) }
       let!(:old_status)        { Fabricate(:status, created_at: 3.weeks.ago, account: account) }
@@ -254,6 +254,8 @@ RSpec.describe AccountStatusesCleanupPolicy, type: :model do
   end
 
   describe '#statuses_to_delete' do
+    subject { account_statuses_cleanup_policy.statuses_to_delete }
+
     let!(:unrelated_status)  { Fabricate(:status, created_at: 3.years.ago) }
     let!(:very_old_status)   { Fabricate(:status, created_at: 3.years.ago, account: account) }
     let!(:pinned_status)     { Fabricate(:status, created_at: 1.year.ago, account: account) }
@@ -275,8 +277,6 @@ RSpec.describe AccountStatusesCleanupPolicy, type: :model do
 
     let(:account_statuses_cleanup_policy) { Fabricate(:account_statuses_cleanup_policy, account: account) }
 
-    subject { account_statuses_cleanup_policy.statuses_to_delete }
-
     before do
       4.times { faved4.increment_count!(:favourites_count) }
       5.times { faved5.increment_count!(:favourites_count) }
@@ -285,11 +285,11 @@ RSpec.describe AccountStatusesCleanupPolicy, type: :model do
     end
 
     context 'when passed a max_id' do
+      subject { account_statuses_cleanup_policy.statuses_to_delete(50, old_status.id).pluck(:id) }
+
       let!(:old_status)               { Fabricate(:status, created_at: 1.year.ago, account: account) }
       let!(:slightly_less_old_status) { Fabricate(:status, created_at: 6.months.ago, account: account) }
 
-      subject { account_statuses_cleanup_policy.statuses_to_delete(50, old_status.id).pluck(:id) }
-
       it 'returns statuses including max_id' do
         expect(subject).to include(old_status.id)
       end
@@ -304,11 +304,11 @@ RSpec.describe AccountStatusesCleanupPolicy, type: :model do
     end
 
     context 'when passed a min_id' do
+      subject { account_statuses_cleanup_policy.statuses_to_delete(50, recent_status.id, old_status.id).pluck(:id) }
+
       let!(:old_status)               { Fabricate(:status, created_at: 1.year.ago, account: account) }
       let!(:slightly_less_old_status) { Fabricate(:status, created_at: 6.months.ago, account: account) }
 
-      subject { account_statuses_cleanup_policy.statuses_to_delete(50, recent_status.id, old_status.id).pluck(:id) }
-
       it 'returns statuses including min_id' do
         expect(subject).to include(old_status.id)
       end
diff --git a/spec/models/account_statuses_filter_spec.rb b/spec/models/account_statuses_filter_spec.rb
index 03f0ffeb062c4ffc837754c1def23c14b8adaaff..fa7664d921528fca5c02fc5353fd32fdca2ba128 100644
--- a/spec/models/account_statuses_filter_spec.rb
+++ b/spec/models/account_statuses_filter_spec.rb
@@ -3,12 +3,12 @@
 require 'rails_helper'
 
 RSpec.describe AccountStatusesFilter do
+  subject { described_class.new(account, current_account, params) }
+
   let(:account) { Fabricate(:account) }
   let(:current_account) { nil }
   let(:params) { {} }
 
-  subject { described_class.new(account, current_account, params) }
-
   def status!(visibility)
     Fabricate(:status, account: account, visibility: visibility)
   end
diff --git a/spec/models/concerns/account_interactions_spec.rb b/spec/models/concerns/account_interactions_spec.rb
index fbfc9fbbc5249f6c701fdc76c16fc246ae5bf532..ed3fc056b2fe118a95d40bfb3c73b85a8a462316 100644
--- a/spec/models/concerns/account_interactions_spec.rb
+++ b/spec/models/concerns/account_interactions_spec.rb
@@ -225,10 +225,10 @@ describe AccountInteractions do
   end
 
   describe '#mute_conversation!' do
-    let(:conversation) { Fabricate(:conversation) }
-
     subject { account.mute_conversation!(conversation) }
 
+    let(:conversation) { Fabricate(:conversation) }
+
     it 'creates and returns ConversationMute' do
       expect do
         expect(subject).to be_a ConversationMute
@@ -237,10 +237,10 @@ describe AccountInteractions do
   end
 
   describe '#block_domain!' do
-    let(:domain) { 'example.com' }
-
     subject { account.block_domain!(domain) }
 
+    let(:domain) { 'example.com' }
+
     it 'creates and returns AccountDomainBlock' do
       expect do
         expect(subject).to be_a AccountDomainBlock
@@ -303,10 +303,10 @@ describe AccountInteractions do
   end
 
   describe '#unmute_conversation!' do
-    let(:conversation) { Fabricate(:conversation) }
-
     subject { account.unmute_conversation!(conversation) }
 
+    let(:conversation) { Fabricate(:conversation) }
+
     context 'muting the conversation' do
       it 'returns destroyed ConversationMute' do
         account.conversation_mutes.create(conversation: conversation)
@@ -323,10 +323,10 @@ describe AccountInteractions do
   end
 
   describe '#unblock_domain!' do
-    let(:domain) { 'example.com' }
-
     subject { account.unblock_domain!(domain) }
 
+    let(:domain) { 'example.com' }
+
     context 'blocking the domain' do
       it 'returns destroyed AccountDomainBlock' do
         account_domain_block = Fabricate(:account_domain_block, domain: domain)
@@ -395,10 +395,10 @@ describe AccountInteractions do
   end
 
   describe '#domain_blocking?' do
-    let(:domain)               { 'example.com' }
-
     subject { account.domain_blocking?(domain) }
 
+    let(:domain) { 'example.com' }
+
     context 'blocking the domain' do
       it 'returns true' do
         account_domain_block = Fabricate(:account_domain_block, domain: domain)
@@ -433,10 +433,10 @@ describe AccountInteractions do
   end
 
   describe '#muting_conversation?' do
-    let(:conversation) { Fabricate(:conversation) }
-
     subject { account.muting_conversation?(conversation) }
 
+    let(:conversation) { Fabricate(:conversation) }
+
     context 'muting the conversation' do
       it 'returns true' do
         account.conversation_mutes.create(conversation: conversation)
@@ -452,13 +452,13 @@ describe AccountInteractions do
   end
 
   describe '#muting_notifications?' do
+    subject { account.muting_notifications?(target_account) }
+
     before do
       mute = Fabricate(:mute, target_account: target_account, account: account, hide_notifications: hide)
       account.mute_relationships << mute
     end
 
-    subject { account.muting_notifications?(target_account) }
-
     context 'muting notifications of target_account' do
       let(:hide) { true }
 
@@ -494,10 +494,10 @@ describe AccountInteractions do
   end
 
   describe '#favourited?' do
-    let(:status) { Fabricate(:status, account: account, favourites: favourites) }
-
     subject { account.favourited?(status) }
 
+    let(:status) { Fabricate(:status, account: account, favourites: favourites) }
+
     context 'favorited' do
       let(:favourites) { [Fabricate(:favourite, account: account)] }
 
@@ -516,10 +516,10 @@ describe AccountInteractions do
   end
 
   describe '#reblogged?' do
-    let(:status) { Fabricate(:status, account: account, reblogs: reblogs) }
-
     subject { account.reblogged?(status) }
 
+    let(:status) { Fabricate(:status, account: account, reblogs: reblogs) }
+
     context 'reblogged' do
       let(:reblogs) { [Fabricate(:status, account: account)] }
 
@@ -538,10 +538,10 @@ describe AccountInteractions do
   end
 
   describe '#pinned?' do
-    let(:status) { Fabricate(:status, account: account) }
-
     subject { account.pinned?(status) }
 
+    let(:status) { Fabricate(:status, account: account) }
+
     context 'pinned' do
       it 'returns true' do
         Fabricate(:status_pin, account: account, status: status)
diff --git a/spec/models/custom_emoji_filter_spec.rb b/spec/models/custom_emoji_filter_spec.rb
index 515c0a7156a6709f44e3a3e6203d0b22215d5e70..30f0ec2b23d96c2e8fb3ee6a8eefdf5d3ee44588 100644
--- a/spec/models/custom_emoji_filter_spec.rb
+++ b/spec/models/custom_emoji_filter_spec.rb
@@ -4,12 +4,12 @@ require 'rails_helper'
 
 RSpec.describe CustomEmojiFilter do
   describe '#results' do
+    subject { described_class.new(params).results }
+
     let!(:custom_emoji_0) { Fabricate(:custom_emoji, domain: 'a') }
     let!(:custom_emoji_1) { Fabricate(:custom_emoji, domain: 'b') }
     let!(:custom_emoji_2) { Fabricate(:custom_emoji, domain: nil, shortcode: 'hoge') }
 
-    subject { described_class.new(params).results }
-
     context 'params have values' do
       context 'local' do
         let(:params) { { local: true } }
diff --git a/spec/models/custom_emoji_spec.rb b/spec/models/custom_emoji_spec.rb
index 1fc112db3cc255e1ed4778d3b002746beb86e7dd..f6fcd468bc5dffaccc2925d0f76f9a7f3a5c5547 100644
--- a/spec/models/custom_emoji_spec.rb
+++ b/spec/models/custom_emoji_spec.rb
@@ -2,10 +2,10 @@ require 'rails_helper'
 
 RSpec.describe CustomEmoji, type: :model do
   describe '#search' do
-    let(:custom_emoji) { Fabricate(:custom_emoji, shortcode: shortcode) }
-
     subject { described_class.search(search_term) }
 
+    let(:custom_emoji) { Fabricate(:custom_emoji, shortcode: shortcode) }
+
     context 'shortcode is exact' do
       let(:shortcode) { 'blobpats' }
       let(:search_term) { 'blobpats' }
@@ -26,10 +26,10 @@ RSpec.describe CustomEmoji, type: :model do
   end
 
   describe '#local?' do
-    let(:custom_emoji) { Fabricate(:custom_emoji, domain: domain) }
-
     subject { custom_emoji.local? }
 
+    let(:custom_emoji) { Fabricate(:custom_emoji, domain: domain) }
+
     context 'domain is nil' do
       let(:domain) { nil }
 
@@ -55,10 +55,10 @@ RSpec.describe CustomEmoji, type: :model do
   end
 
   describe '.from_text' do
-    let!(:emojo) { Fabricate(:custom_emoji) }
-
     subject { described_class.from_text(text, nil) }
 
+    let!(:emojo) { Fabricate(:custom_emoji) }
+
     context 'with plain text' do
       let(:text) { 'Hello :coolcat:' }
 
diff --git a/spec/models/home_feed_spec.rb b/spec/models/home_feed_spec.rb
index 80f6edbff6aaa87f1980b6c1623e3a802a65f0cd..196bef1e4954ae14ed8e8a0629f704342b369829 100644
--- a/spec/models/home_feed_spec.rb
+++ b/spec/models/home_feed_spec.rb
@@ -1,10 +1,10 @@
 require 'rails_helper'
 
 RSpec.describe HomeFeed, type: :model do
-  let(:account) { Fabricate(:account) }
-
   subject { described_class.new(account) }
 
+  let(:account) { Fabricate(:account) }
+
   describe '#get' do
     before do
       Fabricate(:status, account: account, id: 1)
diff --git a/spec/models/media_attachment_spec.rb b/spec/models/media_attachment_spec.rb
index 8889d5f7c4ee563743c8e896d20d1ba1e34a687c..57e1314230f8af404115c484527c765384c5a289 100644
--- a/spec/models/media_attachment_spec.rb
+++ b/spec/models/media_attachment_spec.rb
@@ -2,10 +2,10 @@ require 'rails_helper'
 
 RSpec.describe MediaAttachment, type: :model do
   describe 'local?' do
-    let(:media_attachment) { Fabricate(:media_attachment, remote_url: remote_url) }
-
     subject { media_attachment.local? }
 
+    let(:media_attachment) { Fabricate(:media_attachment, remote_url: remote_url) }
+
     context 'remote_url is blank' do
       let(:remote_url) { '' }
 
@@ -24,10 +24,10 @@ RSpec.describe MediaAttachment, type: :model do
   end
 
   describe 'needs_redownload?' do
-    let(:media_attachment) { Fabricate(:media_attachment, remote_url: remote_url, file: file) }
-
     subject { media_attachment.needs_redownload? }
 
+    let(:media_attachment) { Fabricate(:media_attachment, remote_url: remote_url, file: file) }
+
     context 'file is blank' do
       let(:file) { nil }
 
diff --git a/spec/models/public_feed_spec.rb b/spec/models/public_feed_spec.rb
index be46639c527ee2b114e95e3fba502edd93751e57..59c81dd9530a8709d7123e530cfafc115faaa449 100644
--- a/spec/models/public_feed_spec.rb
+++ b/spec/models/public_feed_spec.rb
@@ -40,6 +40,8 @@ RSpec.describe PublicFeed, type: :model do
     end
 
     context 'without local_only option' do
+      subject { described_class.new(viewer).get(20).map(&:id) }
+
       let(:viewer) { nil }
 
       let!(:local_account)  { Fabricate(:account, domain: nil) }
@@ -47,8 +49,6 @@ RSpec.describe PublicFeed, type: :model do
       let!(:local_status)   { Fabricate(:status, account: local_account) }
       let!(:remote_status)  { Fabricate(:status, account: remote_account) }
 
-      subject { described_class.new(viewer).get(20).map(&:id) }
-
       context 'without a viewer' do
         let(:viewer) { nil }
 
@@ -75,13 +75,13 @@ RSpec.describe PublicFeed, type: :model do
     end
 
     context 'with a local_only option set' do
+      subject { described_class.new(viewer, local: true).get(20).map(&:id) }
+
       let!(:local_account)  { Fabricate(:account, domain: nil) }
       let!(:remote_account) { Fabricate(:account, domain: 'test.com') }
       let!(:local_status)   { Fabricate(:status, account: local_account) }
       let!(:remote_status)  { Fabricate(:status, account: remote_account) }
 
-      subject { described_class.new(viewer, local: true).get(20).map(&:id) }
-
       context 'without a viewer' do
         let(:viewer) { nil }
 
@@ -108,13 +108,13 @@ RSpec.describe PublicFeed, type: :model do
     end
 
     context 'with a remote_only option set' do
+      subject { described_class.new(viewer, remote: true).get(20).map(&:id) }
+
       let!(:local_account)  { Fabricate(:account, domain: nil) }
       let!(:remote_account) { Fabricate(:account, domain: 'test.com') }
       let!(:local_status)   { Fabricate(:status, account: local_account) }
       let!(:remote_status)  { Fabricate(:status, account: remote_account) }
 
-      subject { described_class.new(viewer, remote: true).get(20).map(&:id) }
-
       context 'without a viewer' do
         let(:viewer) { nil }
 
@@ -135,12 +135,12 @@ RSpec.describe PublicFeed, type: :model do
     end
 
     describe 'with an account passed in' do
+      subject { described_class.new(@account).get(20).map(&:id) }
+
       before do
         @account = Fabricate(:account)
       end
 
-      subject { described_class.new(@account).get(20).map(&:id) }
-
       it 'excludes statuses from accounts blocked by the account' do
         blocked = Fabricate(:account)
         @account.block!(blocked)
diff --git a/spec/models/remote_follow_spec.rb b/spec/models/remote_follow_spec.rb
index c6bbecf25b52dc88e7d018cf209817b85ac6e808..ea36b00769e80f6636bb4a8600836d8300f38e68 100644
--- a/spec/models/remote_follow_spec.rb
+++ b/spec/models/remote_follow_spec.rb
@@ -51,6 +51,8 @@ RSpec.describe RemoteFollow do
   end
 
   describe '#subscribe_address_for' do
+    subject { remote_follow.subscribe_address_for(account) }
+
     before do
       remote_follow.valid?
     end
@@ -58,8 +60,6 @@ RSpec.describe RemoteFollow do
     let(:attrs)   { { acct: 'gargron@quitter.no' } }
     let(:account) { Fabricate(:account, username: 'alice') }
 
-    subject { remote_follow.subscribe_address_for(account) }
-
     it 'returns subscribe address' do
       expect(subject).to eq 'https://quitter.no/main/ostatussub?profile=https%3A%2F%2Fcb6e6126.ngrok.io%2Fusers%2Falice'
     end
diff --git a/spec/models/setting_spec.rb b/spec/models/setting_spec.rb
index 86fdf4e087cfecc7bdb842c9d3f98ef6cf7d6e76..826a13878f6b788e19067f063cf69006d695c99b 100644
--- a/spec/models/setting_spec.rb
+++ b/spec/models/setting_spec.rb
@@ -163,12 +163,12 @@ RSpec.describe Setting, type: :model do
   end
 
   describe '.default_settings' do
+    subject { described_class.default_settings }
+
     before do
       allow(RailsSettings::Default).to receive(:enabled?).and_return(enabled)
     end
 
-    subject { described_class.default_settings }
-
     context 'RailsSettings::Default.enabled? is false' do
       let(:enabled) { false }
 
diff --git a/spec/models/status_spec.rb b/spec/models/status_spec.rb
index 78cc059596944329fbfed7ef5bc5387656b8bd72..442f14ddfa0257a23274338ee9c9afe1f5710639 100644
--- a/spec/models/status_spec.rb
+++ b/spec/models/status_spec.rb
@@ -1,12 +1,12 @@
 require 'rails_helper'
 
 RSpec.describe Status, type: :model do
+  subject { Fabricate(:status, account: alice) }
+
   let(:alice) { Fabricate(:account, username: 'alice') }
   let(:bob)   { Fabricate(:account, username: 'bob') }
   let(:other) { Fabricate(:status, account: bob, text: 'Skulls for the skull god! The enemy\'s gates are sideways!') }
 
-  subject { Fabricate(:status, account: alice) }
-
   describe '#local?' do
     it 'returns true when no remote URI is set' do
       expect(subject.local?).to be true
@@ -204,11 +204,11 @@ RSpec.describe Status, type: :model do
   end
 
   describe '.mutes_map' do
+    subject { Status.mutes_map([status.conversation.id], account) }
+
     let(:status)  { Fabricate(:status) }
     let(:account) { Fabricate(:account) }
 
-    subject { Status.mutes_map([status.conversation.id], account) }
-
     it 'returns a hash' do
       expect(subject).to be_a Hash
     end
@@ -220,11 +220,11 @@ RSpec.describe Status, type: :model do
   end
 
   describe '.favourites_map' do
+    subject { Status.favourites_map([status], account) }
+
     let(:status)  { Fabricate(:status) }
     let(:account) { Fabricate(:account) }
 
-    subject { Status.favourites_map([status], account) }
-
     it 'returns a hash' do
       expect(subject).to be_a Hash
     end
@@ -236,11 +236,11 @@ RSpec.describe Status, type: :model do
   end
 
   describe '.reblogs_map' do
+    subject { Status.reblogs_map([status], account) }
+
     let(:status)  { Fabricate(:status) }
     let(:account) { Fabricate(:account) }
 
-    subject { Status.reblogs_map([status], account) }
-
     it 'returns a hash' do
       expect(subject).to be_a Hash
     end
diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb
index d23439f1a92048f8501b4cfa56f57092d993aabd..9af616b32a27c8ce40824f0f3f6b1d8bc3c854a5 100644
--- a/spec/models/user_spec.rb
+++ b/spec/models/user_spec.rb
@@ -142,10 +142,10 @@ RSpec.describe User, type: :model do
   end
 
   describe '#confirm' do
-    let(:new_email) { 'new-email@example.com' }
-
     subject { user.confirm }
 
+    let(:new_email) { 'new-email@example.com' }
+
     before do
       allow(TriggerWebhookWorker).to receive(:perform_async)
     end
diff --git a/spec/models/web/push_subscription_spec.rb b/spec/models/web/push_subscription_spec.rb
index eeadbb71c2e9d87c217643fdd83e661769aae91b..388154000c63f0f9fbaaba909b4192639fdc5939 100644
--- a/spec/models/web/push_subscription_spec.rb
+++ b/spec/models/web/push_subscription_spec.rb
@@ -1,6 +1,8 @@
 require 'rails_helper'
 
 RSpec.describe Web::PushSubscription, type: :model do
+  subject { described_class.new(data: data) }
+
   let(:account) { Fabricate(:account) }
 
   let(:policy) { 'all' }
@@ -19,8 +21,6 @@ RSpec.describe Web::PushSubscription, type: :model do
     }
   end
 
-  subject { described_class.new(data: data) }
-
   describe '#pushable?' do
     let(:notification_type) { :mention }
     let(:notification) { Fabricate(:notification, account: account, type: notification_type) }
diff --git a/spec/presenters/familiar_followers_presenter_spec.rb b/spec/presenters/familiar_followers_presenter_spec.rb
index 17be4b9715068686d9caf04196042aa8229f653d..607e3002f872bf9e841446b5b07dbe7f1f1fdeef 100644
--- a/spec/presenters/familiar_followers_presenter_spec.rb
+++ b/spec/presenters/familiar_followers_presenter_spec.rb
@@ -4,12 +4,12 @@ require 'rails_helper'
 
 RSpec.describe FamiliarFollowersPresenter do
   describe '#accounts' do
+    subject { described_class.new(requested_accounts, account.id) }
+
     let(:account) { Fabricate(:account) }
     let(:familiar_follower) { Fabricate(:account) }
     let(:requested_accounts) { Fabricate.times(2, :account) }
 
-    subject { described_class.new(requested_accounts, account.id) }
-
     before do
       familiar_follower.follow!(requested_accounts.first)
       account.follow!(familiar_follower)
diff --git a/spec/serializers/activitypub/note_spec.rb b/spec/serializers/activitypub/note_spec.rb
index 55bfbc16bf8815f7c4718a3ad00335008f87a337..7ea47baef2286775feba8b5f55b8e410df35a7b7 100644
--- a/spec/serializers/activitypub/note_spec.rb
+++ b/spec/serializers/activitypub/note_spec.rb
@@ -3,6 +3,8 @@
 require 'rails_helper'
 
 describe ActivityPub::NoteSerializer do
+  subject { JSON.parse(@serialization.to_json) }
+
   let!(:account) { Fabricate(:account) }
   let!(:other)   { Fabricate(:account) }
   let!(:parent)  { Fabricate(:status, account: account, visibility: :public) }
@@ -16,8 +18,6 @@ describe ActivityPub::NoteSerializer do
     @serialization = ActiveModelSerializers::SerializableResource.new(parent, serializer: ActivityPub::NoteSerializer, adapter: ActivityPub::Adapter)
   end
 
-  subject { JSON.parse(@serialization.to_json) }
-
   it 'has a Note type' do
     expect(subject['type']).to eql('Note')
   end
diff --git a/spec/serializers/activitypub/update_poll_spec.rb b/spec/serializers/activitypub/update_poll_spec.rb
index f9e035eab581aa654cf1b9c14aa3697fe9759ca7..4360808b50d1783e6b8455dd9ad2efea5fd3fef3 100644
--- a/spec/serializers/activitypub/update_poll_spec.rb
+++ b/spec/serializers/activitypub/update_poll_spec.rb
@@ -3,6 +3,8 @@
 require 'rails_helper'
 
 describe ActivityPub::UpdatePollSerializer do
+  subject { JSON.parse(@serialization.to_json) }
+
   let(:account) { Fabricate(:account) }
   let(:poll)    { Fabricate(:poll, account: account) }
   let!(:status) { Fabricate(:status, account: account, poll: poll) }
@@ -11,8 +13,6 @@ describe ActivityPub::UpdatePollSerializer do
     @serialization = ActiveModelSerializers::SerializableResource.new(status, serializer: ActivityPub::UpdatePollSerializer, adapter: ActivityPub::Adapter)
   end
 
-  subject { JSON.parse(@serialization.to_json) }
-
   it 'has a Update type' do
     expect(subject['type']).to eql('Update')
   end
diff --git a/spec/serializers/rest/account_serializer_spec.rb b/spec/serializers/rest/account_serializer_spec.rb
index 3bca06b73f039979efd6ebd71c441ed8ad67e765..528639943c8b6a4a7267c5b380dedbdfeba97d70 100644
--- a/spec/serializers/rest/account_serializer_spec.rb
+++ b/spec/serializers/rest/account_serializer_spec.rb
@@ -3,12 +3,12 @@
 require 'rails_helper'
 
 describe REST::AccountSerializer do
+  subject { JSON.parse(ActiveModelSerializers::SerializableResource.new(account, serializer: REST::AccountSerializer).to_json) }
+
   let(:role)    { Fabricate(:user_role, name: 'Role', highlighted: true) }
   let(:user)    { Fabricate(:user, role: role) }
   let(:account) { user.account }
 
-  subject { JSON.parse(ActiveModelSerializers::SerializableResource.new(account, serializer: REST::AccountSerializer).to_json) }
-
   context 'when the account is suspended' do
     before do
       account.suspend!
diff --git a/spec/services/activitypub/fetch_featured_collection_service_spec.rb b/spec/services/activitypub/fetch_featured_collection_service_spec.rb
index 23d90a9a2b64ad2cb1aec7a8d85739413aaa1d3b..d9266ffc2e526206581b85b48cfcedb549abcf7d 100644
--- a/spec/services/activitypub/fetch_featured_collection_service_spec.rb
+++ b/spec/services/activitypub/fetch_featured_collection_service_spec.rb
@@ -1,6 +1,8 @@
 require 'rails_helper'
 
 RSpec.describe ActivityPub::FetchFeaturedCollectionService, type: :service do
+  subject { described_class.new }
+
   let(:actor) { Fabricate(:account, domain: 'example.com', uri: 'https://example.com/account', featured_collection_url: 'https://example.com/account/pinned') }
 
   let!(:known_status) { Fabricate(:status, account: actor, uri: 'https://example.com/account/pinned/1') }
@@ -56,8 +58,6 @@ RSpec.describe ActivityPub::FetchFeaturedCollectionService, type: :service do
     }.with_indifferent_access
   end
 
-  subject { described_class.new }
-
   shared_examples 'sets pinned posts' do
     before do
       stub_request(:get, 'https://example.com/account/pinned/1').to_return(status: 200, body: Oj.dump(status_json_1))
diff --git a/spec/services/activitypub/fetch_featured_tags_collection_service_spec.rb b/spec/services/activitypub/fetch_featured_tags_collection_service_spec.rb
index 692866bce9b193f6b314c22f7f5014e17c5d58be..2110baa2d44e4d7c2f8ba503345a22ec69ab691b 100644
--- a/spec/services/activitypub/fetch_featured_tags_collection_service_spec.rb
+++ b/spec/services/activitypub/fetch_featured_tags_collection_service_spec.rb
@@ -1,6 +1,8 @@
 require 'rails_helper'
 
 RSpec.describe ActivityPub::FetchFeaturedTagsCollectionService, type: :service do
+  subject { described_class.new }
+
   let(:collection_url) { 'https://example.com/account/tags' }
   let(:actor) { Fabricate(:account, domain: 'example.com', uri: 'https://example.com/account') }
 
@@ -21,8 +23,6 @@ RSpec.describe ActivityPub::FetchFeaturedTagsCollectionService, type: :service d
     }.with_indifferent_access
   end
 
-  subject { described_class.new }
-
   shared_examples 'sets featured tags' do
     before do
       subject.call(actor, collection_url)
diff --git a/spec/services/activitypub/fetch_remote_status_service_spec.rb b/spec/services/activitypub/fetch_remote_status_service_spec.rb
index 4f3503ac2d03012bd58f726ceaba6dbad62cb48e..6e47392b35607675862818ac99569359a2cf261d 100644
--- a/spec/services/activitypub/fetch_remote_status_service_spec.rb
+++ b/spec/services/activitypub/fetch_remote_status_service_spec.rb
@@ -3,6 +3,8 @@ require 'rails_helper'
 RSpec.describe ActivityPub::FetchRemoteStatusService, type: :service do
   include ActionView::Helpers::TextHelper
 
+  subject { described_class.new }
+
   let!(:sender) { Fabricate(:account, domain: 'foo.bar', uri: 'https://foo.bar') }
   let!(:recipient) { Fabricate(:account) }
 
@@ -18,8 +20,6 @@ RSpec.describe ActivityPub::FetchRemoteStatusService, type: :service do
     }
   end
 
-  subject { described_class.new }
-
   before do
     stub_request(:get, 'https://foo.bar/watch?v=12345').to_return(status: 404, body: '')
     stub_request(:get, object[:id]).to_return(body: Oj.dump(object))
diff --git a/spec/services/activitypub/fetch_replies_service_spec.rb b/spec/services/activitypub/fetch_replies_service_spec.rb
index 5741e0c3fe8c13ccb5b0c359e781e00a6c622403..0231a5e9abc084d308c5b8bd46236fb15fecf2a8 100644
--- a/spec/services/activitypub/fetch_replies_service_spec.rb
+++ b/spec/services/activitypub/fetch_replies_service_spec.rb
@@ -1,6 +1,8 @@
 require 'rails_helper'
 
 RSpec.describe ActivityPub::FetchRepliesService, type: :service do
+  subject { described_class.new }
+
   let(:actor)          { Fabricate(:account, domain: 'example.com', uri: 'http://example.com/account') }
   let(:status)         { Fabricate(:status, account: actor) }
   let(:collection_uri) { 'http://example.com/replies/1' }
@@ -28,8 +30,6 @@ RSpec.describe ActivityPub::FetchRepliesService, type: :service do
     }.with_indifferent_access
   end
 
-  subject { described_class.new }
-
   describe '#call' do
     context 'when the payload is a Collection with inlined replies' do
       context 'when passing the collection itself' do
diff --git a/spec/services/activitypub/process_account_service_spec.rb b/spec/services/activitypub/process_account_service_spec.rb
index d0af7de769211a8cfe396b1588be535eecdd76a4..6c3236bae6fc667f56fc8ff0533ceea15eb0a75b 100644
--- a/spec/services/activitypub/process_account_service_spec.rb
+++ b/spec/services/activitypub/process_account_service_spec.rb
@@ -31,6 +31,8 @@ RSpec.describe ActivityPub::ProcessAccountService, type: :service do
   end
 
   context 'when account is not suspended' do
+    subject { described_class.new.call('alice', 'example.com', payload) }
+
     let!(:account) { Fabricate(:account, username: 'alice', domain: 'example.com') }
 
     let(:payload) do
@@ -46,8 +48,6 @@ RSpec.describe ActivityPub::ProcessAccountService, type: :service do
       allow(Admin::SuspensionWorker).to receive(:perform_async)
     end
 
-    subject { described_class.new.call('alice', 'example.com', payload) }
-
     it 'suspends account remotely' do
       expect(subject.suspended?).to be true
       expect(subject.suspension_origin_remote?).to be true
@@ -60,6 +60,8 @@ RSpec.describe ActivityPub::ProcessAccountService, type: :service do
   end
 
   context 'when account is suspended' do
+    subject { described_class.new.call('alice', 'example.com', payload) }
+
     let!(:account) { Fabricate(:account, username: 'alice', domain: 'example.com', display_name: '') }
 
     let(:payload) do
@@ -78,8 +80,6 @@ RSpec.describe ActivityPub::ProcessAccountService, type: :service do
       account.suspend!(origin: suspension_origin)
     end
 
-    subject { described_class.new.call('alice', 'example.com', payload) }
-
     context 'locally' do
       let(:suspension_origin) { :local }
 
diff --git a/spec/services/activitypub/process_collection_service_spec.rb b/spec/services/activitypub/process_collection_service_spec.rb
index d35d9596dfc67fdb35f80ef5381383404afeec62..c7d0bb92af0801de332db5c36f962666ea798d7a 100644
--- a/spec/services/activitypub/process_collection_service_spec.rb
+++ b/spec/services/activitypub/process_collection_service_spec.rb
@@ -1,6 +1,8 @@
 require 'rails_helper'
 
 RSpec.describe ActivityPub::ProcessCollectionService, type: :service do
+  subject { described_class.new }
+
   let(:actor) { Fabricate(:account, domain: 'example.com', uri: 'http://example.com/account') }
 
   let(:payload) do
@@ -19,8 +21,6 @@ RSpec.describe ActivityPub::ProcessCollectionService, type: :service do
 
   let(:json) { Oj.dump(payload) }
 
-  subject { described_class.new }
-
   describe '#call' do
     context 'when actor is suspended' do
       before do
diff --git a/spec/services/activitypub/process_status_update_service_spec.rb b/spec/services/activitypub/process_status_update_service_spec.rb
index 9a6d75ec049e4f5072d2ca74cabb8c36add5ebc9..3d6f76163eb4fa8f19447dfce0463017b838097f 100644
--- a/spec/services/activitypub/process_status_update_service_spec.rb
+++ b/spec/services/activitypub/process_status_update_service_spec.rb
@@ -5,6 +5,8 @@ def poll_option_json(name, votes)
 end
 
 RSpec.describe ActivityPub::ProcessStatusUpdateService, type: :service do
+  subject { described_class.new }
+
   let!(:status) { Fabricate(:status, text: 'Hello world', account: Fabricate(:account, domain: 'example.com')) }
   let(:payload) do
     {
@@ -35,8 +37,6 @@ RSpec.describe ActivityPub::ProcessStatusUpdateService, type: :service do
     media_attachments.each { |m| status.media_attachments << m }
   end
 
-  subject { described_class.new }
-
   describe '#call' do
     it 'updates text' do
       subject.call(status, json)
diff --git a/spec/services/activitypub/synchronize_followers_service_spec.rb b/spec/services/activitypub/synchronize_followers_service_spec.rb
index 5a37f07333a642c51ea8908e451cef622694ccf5..0e829a3028fc44decf3bb30af4592155f3ec7d1f 100644
--- a/spec/services/activitypub/synchronize_followers_service_spec.rb
+++ b/spec/services/activitypub/synchronize_followers_service_spec.rb
@@ -1,6 +1,8 @@
 require 'rails_helper'
 
 RSpec.describe ActivityPub::SynchronizeFollowersService, type: :service do
+  subject { described_class.new }
+
   let(:actor)          { Fabricate(:account, domain: 'example.com', uri: 'http://example.com/account', inbox_url: 'http://example.com/inbox') }
   let(:alice)          { Fabricate(:account, username: 'alice') }
   let(:bob)            { Fabricate(:account, username: 'bob') }
@@ -25,8 +27,6 @@ RSpec.describe ActivityPub::SynchronizeFollowersService, type: :service do
     }.with_indifferent_access
   end
 
-  subject { described_class.new }
-
   shared_examples 'synchronizes followers' do
     before do
       alice.follow!(actor)
diff --git a/spec/services/after_block_domain_from_account_service_spec.rb b/spec/services/after_block_domain_from_account_service_spec.rb
index 006e3f4d28de7e9d508f6e882aa932221e219524..9cca82bffa523684bfad16582d6a9e394aabeb67 100644
--- a/spec/services/after_block_domain_from_account_service_spec.rb
+++ b/spec/services/after_block_domain_from_account_service_spec.rb
@@ -1,11 +1,11 @@
 require 'rails_helper'
 
 RSpec.describe AfterBlockDomainFromAccountService, type: :service do
+  subject { AfterBlockDomainFromAccountService.new }
+
   let!(:wolf) { Fabricate(:account, username: 'wolf', domain: 'evil.org', inbox_url: 'https://evil.org/inbox', protocol: :activitypub) }
   let!(:alice) { Fabricate(:account, username: 'alice') }
 
-  subject { AfterBlockDomainFromAccountService.new }
-
   before do
     stub_jsonld_contexts!
     allow(ActivityPub::DeliveryWorker).to receive(:perform_async)
diff --git a/spec/services/app_sign_up_service_spec.rb b/spec/services/app_sign_up_service_spec.rb
index 8ec4d4a7a632971ac80ef603c1d291e577b4c529..10da07dcfb678399152f0b5ecda0b738690e9255 100644
--- a/spec/services/app_sign_up_service_spec.rb
+++ b/spec/services/app_sign_up_service_spec.rb
@@ -1,12 +1,12 @@
 require 'rails_helper'
 
 RSpec.describe AppSignUpService, type: :service do
+  subject { described_class.new }
+
   let(:app) { Fabricate(:application, scopes: 'read write') }
   let(:good_params) { { username: 'alice', password: '12345678', email: 'good@email.com', agreement: true } }
   let(:remote_ip) { IPAddr.new('198.0.2.1') }
 
-  subject { described_class.new }
-
   describe '#call' do
     it 'returns nil when registrations are closed' do
       tmp = Setting.registrations_mode
diff --git a/spec/services/authorize_follow_service_spec.rb b/spec/services/authorize_follow_service_spec.rb
index 888d694b610ee6c1d300110bb1deeeccc1799adc..8f8e44ec76155d60da67f0c30e0b0086703e21fe 100644
--- a/spec/services/authorize_follow_service_spec.rb
+++ b/spec/services/authorize_follow_service_spec.rb
@@ -1,10 +1,10 @@
 require 'rails_helper'
 
 RSpec.describe AuthorizeFollowService, type: :service do
-  let(:sender) { Fabricate(:account, username: 'alice') }
-
   subject { AuthorizeFollowService.new }
 
+  let(:sender) { Fabricate(:account, username: 'alice') }
+
   describe 'local' do
     let(:bob) { Fabricate(:account, username: 'bob') }
 
diff --git a/spec/services/block_domain_service_spec.rb b/spec/services/block_domain_service_spec.rb
index e24e48d41512cd7956f782ed5c55b223c52fbee2..56b3a5ad1c4d8b124c8769e5e128c21728b36500 100644
--- a/spec/services/block_domain_service_spec.rb
+++ b/spec/services/block_domain_service_spec.rb
@@ -1,14 +1,14 @@
 require 'rails_helper'
 
 RSpec.describe BlockDomainService, type: :service do
+  subject { BlockDomainService.new }
+
   let!(:bad_account) { Fabricate(:account, username: 'badguy666', domain: 'evil.org') }
   let!(:bad_status1) { Fabricate(:status, account: bad_account, text: 'You suck') }
   let!(:bad_status2) { Fabricate(:status, account: bad_account, text: 'Hahaha') }
   let!(:bad_attachment) { Fabricate(:media_attachment, account: bad_account, status: bad_status2, file: attachment_fixture('attachment.jpg')) }
   let!(:already_banned_account) { Fabricate(:account, username: 'badguy', domain: 'evil.org', suspended: true, silenced: true) }
 
-  subject { BlockDomainService.new }
-
   describe 'for a suspension' do
     before do
       subject.call(DomainBlock.create!(domain: 'evil.org', severity: :suspend))
diff --git a/spec/services/block_service_spec.rb b/spec/services/block_service_spec.rb
index a53e1f928856873f49d03ea0410b1a9ee7408115..049644dbc047478469632504d0dc1d74bc4a72cf 100644
--- a/spec/services/block_service_spec.rb
+++ b/spec/services/block_service_spec.rb
@@ -1,10 +1,10 @@
 require 'rails_helper'
 
 RSpec.describe BlockService, type: :service do
-  let(:sender) { Fabricate(:account, username: 'alice') }
-
   subject { BlockService.new }
 
+  let(:sender) { Fabricate(:account, username: 'alice') }
+
   describe 'local' do
     let(:bob) { Fabricate(:account, username: 'bob') }
 
diff --git a/spec/services/clear_domain_media_service_spec.rb b/spec/services/clear_domain_media_service_spec.rb
index e90faf84d9cc577f5af79d0da51391c40d291c57..993ba789ea31ee027be666b8f1f1a5f8e17f4bd0 100644
--- a/spec/services/clear_domain_media_service_spec.rb
+++ b/spec/services/clear_domain_media_service_spec.rb
@@ -1,13 +1,13 @@
 require 'rails_helper'
 
 RSpec.describe ClearDomainMediaService, type: :service do
+  subject { ClearDomainMediaService.new }
+
   let!(:bad_account) { Fabricate(:account, username: 'badguy666', domain: 'evil.org') }
   let!(:bad_status1) { Fabricate(:status, account: bad_account, text: 'You suck') }
   let!(:bad_status2) { Fabricate(:status, account: bad_account, text: 'Hahaha') }
   let!(:bad_attachment) { Fabricate(:media_attachment, account: bad_account, status: bad_status2, file: attachment_fixture('attachment.jpg')) }
 
-  subject { ClearDomainMediaService.new }
-
   describe 'for a silence with reject media' do
     before do
       subject.call(DomainBlock.create!(domain: 'evil.org', severity: :silence, reject_media: true))
diff --git a/spec/services/delete_account_service_spec.rb b/spec/services/delete_account_service_spec.rb
index cc4b168fcd37c9c21510f75a368dc86019d47f6f..d0cc8d28883d228d4f4ad0612bb308408849ea50 100644
--- a/spec/services/delete_account_service_spec.rb
+++ b/spec/services/delete_account_service_spec.rb
@@ -2,6 +2,8 @@ require 'rails_helper'
 
 RSpec.describe DeleteAccountService, type: :service do
   shared_examples 'common behavior' do
+    subject { described_class.new.call(account) }
+
     let!(:status) { Fabricate(:status, account: account) }
     let!(:mention) { Fabricate(:mention, account: local_follower) }
     let!(:status_with_mention) { Fabricate(:status, account: account, mentions: [mention]) }
@@ -23,8 +25,6 @@ RSpec.describe DeleteAccountService, type: :service do
 
     let!(:account_note) { Fabricate(:account_note, account: account) }
 
-    subject { described_class.new.call(account) }
-
     it 'deletes associated owned records' do
       expect { subject }.to change {
         [
diff --git a/spec/services/fan_out_on_write_service_spec.rb b/spec/services/fan_out_on_write_service_spec.rb
index 3c294cf95b23cc8aec38b643284c362505744da4..d09750dd2370d49907cde0535905053fa2b7d862 100644
--- a/spec/services/fan_out_on_write_service_spec.rb
+++ b/spec/services/fan_out_on_write_service_spec.rb
@@ -1,6 +1,8 @@
 require 'rails_helper'
 
 RSpec.describe FanOutOnWriteService, type: :service do
+  subject { described_class.new }
+
   let(:last_active_at) { Time.now.utc }
   let(:status) { Fabricate(:status, account: alice, visibility: visibility, text: 'Hello @bob #hoge') }
 
@@ -8,8 +10,6 @@ RSpec.describe FanOutOnWriteService, type: :service do
   let!(:bob)   { Fabricate(:user, current_sign_in_at: last_active_at, account_attributes: { username: 'bob' }).account }
   let!(:tom)   { Fabricate(:user, current_sign_in_at: last_active_at).account }
 
-  subject { described_class.new }
-
   before do
     bob.follow!(alice)
     tom.follow!(alice)
diff --git a/spec/services/favourite_service_spec.rb b/spec/services/favourite_service_spec.rb
index 8703c2af8faf3d3bad0712a1ac65768e8aff3175..4f621200a238978d8bf661ae6e9b1723ecbb09b5 100644
--- a/spec/services/favourite_service_spec.rb
+++ b/spec/services/favourite_service_spec.rb
@@ -1,10 +1,10 @@
 require 'rails_helper'
 
 RSpec.describe FavouriteService, type: :service do
-  let(:sender) { Fabricate(:account, username: 'alice') }
-
   subject { FavouriteService.new }
 
+  let(:sender) { Fabricate(:account, username: 'alice') }
+
   describe 'local' do
     let(:bob)    { Fabricate(:account) }
     let(:status) { Fabricate(:status, account: bob) }
diff --git a/spec/services/fetch_resource_service_spec.rb b/spec/services/fetch_resource_service_spec.rb
index c39f52632895c8006c5325606f31e95db954e601..84c4035cb166a4fc64e28c6da2b3a1f4f3499fb8 100644
--- a/spec/services/fetch_resource_service_spec.rb
+++ b/spec/services/fetch_resource_service_spec.rb
@@ -2,10 +2,10 @@ require 'rails_helper'
 
 RSpec.describe FetchResourceService, type: :service do
   describe '#call' do
-    let(:url) { 'http://example.com' }
-
     subject { described_class.new.call(url) }
 
+    let(:url) { 'http://example.com' }
+
     context 'with blank url' do
       let(:url) { '' }
 
diff --git a/spec/services/follow_service_spec.rb b/spec/services/follow_service_spec.rb
index 59073c27f258c66b148f41966f003e6fafe90fd6..f95d5944096bcfc405262d95b3fbba0c94cf7f60 100644
--- a/spec/services/follow_service_spec.rb
+++ b/spec/services/follow_service_spec.rb
@@ -1,10 +1,10 @@
 require 'rails_helper'
 
 RSpec.describe FollowService, type: :service do
-  let(:sender) { Fabricate(:account, username: 'alice') }
-
   subject { FollowService.new }
 
+  let(:sender) { Fabricate(:account, username: 'alice') }
+
   context 'local account' do
     describe 'locked account' do
       let(:bob) { Fabricate(:account, locked: true, username: 'bob') }
diff --git a/spec/services/process_mentions_service_spec.rb b/spec/services/process_mentions_service_spec.rb
index 6a16928e024cf6324b360ccb0485cd5f86d1df17..79ccfa3229877f1fd9604801f8c5e5bf23bc8cd9 100644
--- a/spec/services/process_mentions_service_spec.rb
+++ b/spec/services/process_mentions_service_spec.rb
@@ -1,10 +1,10 @@
 require 'rails_helper'
 
 RSpec.describe ProcessMentionsService, type: :service do
-  let(:account) { Fabricate(:account, username: 'alice') }
-
   subject { ProcessMentionsService.new }
 
+  let(:account) { Fabricate(:account, username: 'alice') }
+
   context 'when mentions contain blocked accounts' do
     let(:non_blocked_account)          { Fabricate(:account) }
     let(:individually_blocked_account) { Fabricate(:account) }
diff --git a/spec/services/purge_domain_service_spec.rb b/spec/services/purge_domain_service_spec.rb
index 59285f1269391bf9b90609e5c81a7f21e8308450..7d8969ee89eb8e8974d4873b48a9e6563be177ac 100644
--- a/spec/services/purge_domain_service_spec.rb
+++ b/spec/services/purge_domain_service_spec.rb
@@ -1,13 +1,13 @@
 require 'rails_helper'
 
 RSpec.describe PurgeDomainService, type: :service do
+  subject { PurgeDomainService.new }
+
   let!(:old_account) { Fabricate(:account, domain: 'obsolete.org') }
   let!(:old_status1) { Fabricate(:status, account: old_account) }
   let!(:old_status2) { Fabricate(:status, account: old_account) }
   let!(:old_attachment) { Fabricate(:media_attachment, account: old_account, status: old_status2, file: attachment_fixture('attachment.jpg')) }
 
-  subject { PurgeDomainService.new }
-
   describe 'for a suspension' do
     before do
       subject.call('obsolete.org')
diff --git a/spec/services/reblog_service_spec.rb b/spec/services/reblog_service_spec.rb
index c0ae5eedcc166b963efe2d8218d336c0702c6b5d..e2ac0154ce4b04746d34bef42f10ca85fa4cd5a1 100644
--- a/spec/services/reblog_service_spec.rb
+++ b/spec/services/reblog_service_spec.rb
@@ -4,12 +4,12 @@ RSpec.describe ReblogService, type: :service do
   let(:alice)  { Fabricate(:account, username: 'alice') }
 
   context 'creates a reblog with appropriate visibility' do
+    subject { ReblogService.new }
+
     let(:visibility)        { :public }
     let(:reblog_visibility) { :public }
     let(:status)            { Fabricate(:status, account: alice, visibility: visibility) }
 
-    subject { ReblogService.new }
-
     before do
       subject.call(alice, status, visibility: reblog_visibility)
     end
@@ -45,11 +45,11 @@ RSpec.describe ReblogService, type: :service do
   end
 
   context 'ActivityPub' do
+    subject { ReblogService.new }
+
     let(:bob)    { Fabricate(:account, username: 'bob', protocol: :activitypub, domain: 'example.com', inbox_url: 'http://example.com/inbox') }
     let(:status) { Fabricate(:status, account: bob) }
 
-    subject { ReblogService.new }
-
     before do
       stub_request(:post, bob.inbox_url)
       allow(ActivityPub::DistributionWorker).to receive(:perform_async)
diff --git a/spec/services/reject_follow_service_spec.rb b/spec/services/reject_follow_service_spec.rb
index e14bfa78dc80cab9ca0b8e99512615b8afaeb81d..97b7412b92e6a844b17b58e933716d33811f41a4 100644
--- a/spec/services/reject_follow_service_spec.rb
+++ b/spec/services/reject_follow_service_spec.rb
@@ -1,10 +1,10 @@
 require 'rails_helper'
 
 RSpec.describe RejectFollowService, type: :service do
-  let(:sender) { Fabricate(:account, username: 'alice') }
-
   subject { RejectFollowService.new }
 
+  let(:sender) { Fabricate(:account, username: 'alice') }
+
   describe 'local' do
     let(:bob) { Fabricate(:account) }
 
diff --git a/spec/services/remove_from_follwers_service_spec.rb b/spec/services/remove_from_follwers_service_spec.rb
index 9b9c846cfe71910dc12c2bfacdb032cda43986eb..782f859e29043c32ed68642d0f021be3c58b10ea 100644
--- a/spec/services/remove_from_follwers_service_spec.rb
+++ b/spec/services/remove_from_follwers_service_spec.rb
@@ -1,10 +1,10 @@
 require 'rails_helper'
 
 RSpec.describe RemoveFromFollowersService, type: :service do
-  let(:bob) { Fabricate(:account, username: 'bob') }
-
   subject { RemoveFromFollowersService.new }
 
+  let(:bob) { Fabricate(:account, username: 'bob') }
+
   describe 'local' do
     let(:sender) { Fabricate(:account, username: 'alice') }
 
diff --git a/spec/services/report_service_spec.rb b/spec/services/report_service_spec.rb
index 02bc42ac170d60584ed6c6452396eec88046546c..c3a3fddf8a21f0d78c1c8641bab00499291932bd 100644
--- a/spec/services/report_service_spec.rb
+++ b/spec/services/report_service_spec.rb
@@ -29,13 +29,13 @@ RSpec.describe ReportService, type: :service do
   end
 
   context 'when the reported status is a DM' do
-    let(:target_account) { Fabricate(:account) }
-    let(:status) { Fabricate(:status, account: target_account, visibility: :direct) }
-
     subject do
       -> { described_class.new.call(source_account, target_account, status_ids: [status.id]) }
     end
 
+    let(:target_account) { Fabricate(:account) }
+    let(:status) { Fabricate(:status, account: target_account, visibility: :direct) }
+
     context 'when it is addressed to the reporter' do
       before do
         status.mentions.create(account: source_account)
@@ -85,13 +85,13 @@ RSpec.describe ReportService, type: :service do
   end
 
   context 'when other reports already exist for the same target' do
-    let!(:target_account) { Fabricate(:account) }
-    let!(:other_report)   { Fabricate(:report, target_account: target_account) }
-
     subject do
       -> {  described_class.new.call(source_account, target_account) }
     end
 
+    let!(:target_account) { Fabricate(:account) }
+    let!(:other_report)   { Fabricate(:report, target_account: target_account) }
+
     before do
       ActionMailer::Base.deliveries.clear
       source_account.user.settings.notification_emails['report'] = true
diff --git a/spec/services/suspend_account_service_spec.rb b/spec/services/suspend_account_service_spec.rb
index 126b13986b6ca0ce94661a67e32715ba81f64705..5701090b336cb59cd58a1829d393e0a0827f92a1 100644
--- a/spec/services/suspend_account_service_spec.rb
+++ b/spec/services/suspend_account_service_spec.rb
@@ -2,11 +2,11 @@ require 'rails_helper'
 
 RSpec.describe SuspendAccountService, type: :service do
   shared_examples 'common behavior' do
+    subject { described_class.new.call(account) }
+
     let!(:local_follower) { Fabricate(:user, current_sign_in_at: 1.hour.ago).account }
     let!(:list)           { Fabricate(:list, account: local_follower) }
 
-    subject { described_class.new.call(account) }
-
     before do
       allow(FeedManager.instance).to receive(:unmerge_from_home).and_return(nil)
       allow(FeedManager.instance).to receive(:unmerge_from_list).and_return(nil)
diff --git a/spec/services/unallow_domain_service_spec.rb b/spec/services/unallow_domain_service_spec.rb
index b93945b9a2ae45e04f7d1f5b6be133627982ca1d..ae7d00c7d38ccd6b1e0607a285ef906c2ae69b62 100644
--- a/spec/services/unallow_domain_service_spec.rb
+++ b/spec/services/unallow_domain_service_spec.rb
@@ -1,6 +1,8 @@
 require 'rails_helper'
 
 RSpec.describe UnallowDomainService, type: :service do
+  subject { UnallowDomainService.new }
+
   let!(:bad_account) { Fabricate(:account, username: 'badguy666', domain: 'evil.org') }
   let!(:bad_status1) { Fabricate(:status, account: bad_account, text: 'You suck') }
   let!(:bad_status2) { Fabricate(:status, account: bad_account, text: 'Hahaha') }
@@ -8,8 +10,6 @@ RSpec.describe UnallowDomainService, type: :service do
   let!(:already_banned_account) { Fabricate(:account, username: 'badguy', domain: 'evil.org', suspended: true, silenced: true) }
   let!(:domain_allow) { Fabricate(:domain_allow, domain: 'evil.org') }
 
-  subject { UnallowDomainService.new }
-
   context 'in limited federation mode' do
     before do
       allow(subject).to receive(:whitelist_mode?).and_return(true)
diff --git a/spec/services/unblock_service_spec.rb b/spec/services/unblock_service_spec.rb
index 10448b3403263c549c472760ce4e5e1401974ff1..bd24005f667af9edd455ab366d404edf196904c1 100644
--- a/spec/services/unblock_service_spec.rb
+++ b/spec/services/unblock_service_spec.rb
@@ -1,10 +1,10 @@
 require 'rails_helper'
 
 RSpec.describe UnblockService, type: :service do
-  let(:sender) { Fabricate(:account, username: 'alice') }
-
   subject { UnblockService.new }
 
+  let(:sender) { Fabricate(:account, username: 'alice') }
+
   describe 'local' do
     let(:bob) { Fabricate(:account) }
 
diff --git a/spec/services/unfollow_service_spec.rb b/spec/services/unfollow_service_spec.rb
index bb5bef5c91851ccbdbaf94bbe91d6bf602eac1e8..55969bef9377db4c481f2a7d75a412fd61198477 100644
--- a/spec/services/unfollow_service_spec.rb
+++ b/spec/services/unfollow_service_spec.rb
@@ -1,10 +1,10 @@
 require 'rails_helper'
 
 RSpec.describe UnfollowService, type: :service do
-  let(:sender) { Fabricate(:account, username: 'alice') }
-
   subject { UnfollowService.new }
 
+  let(:sender) { Fabricate(:account, username: 'alice') }
+
   describe 'local' do
     let(:bob) { Fabricate(:account, username: 'bob') }
 
diff --git a/spec/services/unsuspend_account_service_spec.rb b/spec/services/unsuspend_account_service_spec.rb
index 987eb09e234d8ca3f97d4abfd0fad4528ca6d0d6..6675074690dc6c0aa21ffefc108dd48becea7d86 100644
--- a/spec/services/unsuspend_account_service_spec.rb
+++ b/spec/services/unsuspend_account_service_spec.rb
@@ -2,11 +2,11 @@ require 'rails_helper'
 
 RSpec.describe UnsuspendAccountService, type: :service do
   shared_examples 'common behavior' do
+    subject { described_class.new.call(account) }
+
     let!(:local_follower) { Fabricate(:user, current_sign_in_at: 1.hour.ago).account }
     let!(:list)           { Fabricate(:list, account: local_follower) }
 
-    subject { described_class.new.call(account) }
-
     before do
       allow(FeedManager.instance).to receive(:merge_into_home).and_return(nil)
       allow(FeedManager.instance).to receive(:merge_into_list).and_return(nil)
diff --git a/spec/validators/blacklisted_email_validator_spec.rb b/spec/validators/blacklisted_email_validator_spec.rb
index cb807fe24c636817e681aec65bfb778ba64f5f10..a642405ae616a7fb0fb13cc63ad0cbcb08770a8c 100644
--- a/spec/validators/blacklisted_email_validator_spec.rb
+++ b/spec/validators/blacklisted_email_validator_spec.rb
@@ -4,6 +4,8 @@ require 'rails_helper'
 
 RSpec.describe BlacklistedEmailValidator, type: :validator do
   describe '#validate' do
+    subject { described_class.new.validate(user); errors }
+
     let(:user)   { double(email: 'info@mail.com', sign_up_ip: '1.2.3.4', errors: errors) }
     let(:errors) { double(add: nil) }
 
@@ -12,8 +14,6 @@ RSpec.describe BlacklistedEmailValidator, type: :validator do
       allow_any_instance_of(described_class).to receive(:blocked_email_provider?) { blocked_email }
     end
 
-    subject { described_class.new.validate(user); errors }
-
     context 'when e-mail provider is blocked' do
       let(:blocked_email) { true }
 
diff --git a/spec/workers/move_worker_spec.rb b/spec/workers/move_worker_spec.rb
index 3ca6aaf4de4d133623deed86e5677865a39ab41c..e93060adb8f1fb6a10c69283295a64a24bb0838c 100644
--- a/spec/workers/move_worker_spec.rb
+++ b/spec/workers/move_worker_spec.rb
@@ -3,6 +3,8 @@
 require 'rails_helper'
 
 describe MoveWorker do
+  subject { described_class.new }
+
   let(:local_follower)   { Fabricate(:account) }
   let(:blocking_account) { Fabricate(:account) }
   let(:muting_account)   { Fabricate(:account) }
@@ -14,8 +16,6 @@ describe MoveWorker do
 
   let(:block_service) { double }
 
-  subject { described_class.new }
-
   before do
     local_follower.follow!(source_account)
     blocking_account.block!(source_account)
diff --git a/spec/workers/unfollow_follow_worker_spec.rb b/spec/workers/unfollow_follow_worker_spec.rb
index 5ea4256a9bde075e0832a1368281ee527c5aa1df..8025b88c0c366caaf254db387660c8e52bcbc7dd 100644
--- a/spec/workers/unfollow_follow_worker_spec.rb
+++ b/spec/workers/unfollow_follow_worker_spec.rb
@@ -3,13 +3,13 @@
 require 'rails_helper'
 
 describe UnfollowFollowWorker do
+  subject { described_class.new }
+
   let(:local_follower)   { Fabricate(:account) }
   let(:source_account)   { Fabricate(:account) }
   let(:target_account)   { Fabricate(:account) }
   let(:show_reblogs)     { true }
 
-  subject { described_class.new }
-
   before do
     local_follower.follow!(source_account, reblogs: show_reblogs)
   end