From 285a3df56c70cc82e82b18b3c6ae471bdac7b442 Mon Sep 17 00:00:00 2001
From: Matt Jankowski <matt@jankowski.online>
Date: Thu, 20 Jul 2023 09:50:50 -0400
Subject: [PATCH] Move localized subject mailer shared example to separate file
 (#25889)

---
 spec/mailers/notification_mailer_spec.rb | 13 -------------
 spec/mailers/user_mailer_spec.rb         | 13 -------------
 spec/support/examples/mailers.rb         | 14 ++++++++++++++
 3 files changed, 14 insertions(+), 26 deletions(-)
 create mode 100644 spec/support/examples/mailers.rb

diff --git a/spec/mailers/notification_mailer_spec.rb b/spec/mailers/notification_mailer_spec.rb
index 3efb97cb1..636c2d425 100644
--- a/spec/mailers/notification_mailer_spec.rb
+++ b/spec/mailers/notification_mailer_spec.rb
@@ -8,19 +8,6 @@ RSpec.describe NotificationMailer do
   let(:foreign_status) { Fabricate(:status, account: sender, text: 'The body of the foreign status') }
   let(:own_status)     { Fabricate(:status, account: receiver.account, text: 'The body of the own status') }
 
-  shared_examples 'localized subject' do |*args, **kwrest|
-    it 'renders subject localized for the locale of the receiver' do
-      locale = :de
-      receiver.update!(locale: locale)
-      expect(mail.subject).to eq I18n.t(*args, **kwrest.merge(locale: locale))
-    end
-
-    it 'renders subject localized for the default locale if the locale of the receiver is unavailable' do
-      receiver.update!(locale: nil)
-      expect(mail.subject).to eq I18n.t(*args, **kwrest.merge(locale: I18n.default_locale))
-    end
-  end
-
   describe 'mention' do
     let(:mention) { Mention.create!(account: receiver.account, status: foreign_status) }
     let(:notification) { Notification.create!(account: receiver.account, activity: mention) }
diff --git a/spec/mailers/user_mailer_spec.rb b/spec/mailers/user_mailer_spec.rb
index 3c42a2bb7..5affa66e0 100644
--- a/spec/mailers/user_mailer_spec.rb
+++ b/spec/mailers/user_mailer_spec.rb
@@ -5,19 +5,6 @@ require 'rails_helper'
 describe UserMailer do
   let(:receiver) { Fabricate(:user) }
 
-  shared_examples 'localized subject' do |*args, **kwrest|
-    it 'renders subject localized for the locale of the receiver' do
-      locale = :de
-      receiver.update!(locale: locale)
-      expect(mail.subject).to eq I18n.t(*args, **kwrest.merge(locale: locale))
-    end
-
-    it 'renders subject localized for the default locale if the locale of the receiver is unavailable' do
-      receiver.update!(locale: nil)
-      expect(mail.subject).to eq I18n.t(*args, **kwrest.merge(locale: I18n.default_locale))
-    end
-  end
-
   describe 'confirmation_instructions' do
     let(:mail) { described_class.confirmation_instructions(receiver, 'spec') }
 
diff --git a/spec/support/examples/mailers.rb b/spec/support/examples/mailers.rb
new file mode 100644
index 000000000..213e873b4
--- /dev/null
+++ b/spec/support/examples/mailers.rb
@@ -0,0 +1,14 @@
+# frozen_string_literal: true
+
+shared_examples 'localized subject' do |*args, **kwrest|
+  it 'renders subject localized for the locale of the receiver' do
+    locale = :de
+    receiver.update!(locale: locale)
+    expect(mail.subject).to eq I18n.t(*args, **kwrest.merge(locale: locale))
+  end
+
+  it 'renders subject localized for the default locale if the locale of the receiver is unavailable' do
+    receiver.update!(locale: nil)
+    expect(mail.subject).to eq I18n.t(*args, **kwrest.merge(locale: I18n.default_locale))
+  end
+end