',
'@language': 'en',
- }
+ },
],
'https://www.w3.org/ns/activitystreams#published': {
'@type': 'http://www.w3.org/2001/XMLSchema#dateTime',
diff --git a/spec/workers/activitypub/move_distribution_worker_spec.rb b/spec/workers/activitypub/move_distribution_worker_spec.rb
index 57941065a..482fa9db4 100644
--- a/spec/workers/activitypub/move_distribution_worker_spec.rb
+++ b/spec/workers/activitypub/move_distribution_worker_spec.rb
@@ -16,7 +16,7 @@ describe ActivityPub::MoveDistributionWorker do
it 'delivers to followers and known blockers' do
expect_push_bulk_to_match(ActivityPub::DeliveryWorker, [
[kind_of(String), migration.account.id, 'http://example.com'],
- [kind_of(String), migration.account.id, 'http://example2.com']
+ [kind_of(String), migration.account.id, 'http://example2.com'],
])
subject.perform(migration.id)
end
--
cgit
From 167709f6b0731c163619c58afcb0ca11bb393e54 Mon Sep 17 00:00:00 2001
From: Nick Schonning
Date: Sat, 18 Feb 2023 17:00:17 -0500
Subject: Autofix Rubocop Style/BlockDelimiters (#23706)
---
.rubocop_todo.yml | 13 ----------
...084748_add_visible_in_picker_to_custom_emoji.rb | 4 ++--
.../settings/applications_controller_spec.rb | 4 ++--
spec/lib/webfinger_resource_spec.rb | 28 +++++++++++-----------
4 files changed, 18 insertions(+), 31 deletions(-)
(limited to 'spec/lib')
diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml
index 77c4f012c..73dae59c5 100644
--- a/.rubocop_todo.yml
+++ b/.rubocop_todo.yml
@@ -2686,19 +2686,6 @@ Security/IoMethods:
- 'spec/controllers/admin/export_domain_allows_controller_spec.rb'
- 'spec/controllers/admin/export_domain_blocks_controller_spec.rb'
-# Offense count: 9
-# This cop supports safe autocorrection (--autocorrect).
-# Configuration parameters: EnforcedStyle, ProceduralMethods, FunctionalMethods, AllowedMethods, AllowedPatterns, AllowBracesOnProceduralOneLiners, BracesRequiredMethods.
-# SupportedStyles: line_count_based, semantic, braces_for_chaining, always_braces
-# ProceduralMethods: benchmark, bm, bmbm, create, each_with_object, measure, new, realtime, tap, with_object
-# FunctionalMethods: let, let!, subject, watch
-# AllowedMethods: lambda, proc, it
-Style/BlockDelimiters:
- Exclude:
- - 'db/migrate/20171020084748_add_visible_in_picker_to_custom_emoji.rb'
- - 'spec/controllers/settings/applications_controller_spec.rb'
- - 'spec/lib/webfinger_resource_spec.rb'
-
# Offense count: 5
# This cop supports unsafe autocorrection (--autocorrect-all).
Style/CaseLikeIf:
diff --git a/db/migrate/20171020084748_add_visible_in_picker_to_custom_emoji.rb b/db/migrate/20171020084748_add_visible_in_picker_to_custom_emoji.rb
index 60a287101..946e26ff2 100644
--- a/db/migrate/20171020084748_add_visible_in_picker_to_custom_emoji.rb
+++ b/db/migrate/20171020084748_add_visible_in_picker_to_custom_emoji.rb
@@ -1,7 +1,7 @@
class AddVisibleInPickerToCustomEmoji < ActiveRecord::Migration[5.1]
def change
- safety_assured {
+ safety_assured do
add_column :custom_emojis, :visible_in_picker, :boolean, default: true, null: false
- }
+ end
end
end
diff --git a/spec/controllers/settings/applications_controller_spec.rb b/spec/controllers/settings/applications_controller_spec.rb
index 75d3240f9..a882a6fb8 100644
--- a/spec/controllers/settings/applications_controller_spec.rb
+++ b/spec/controllers/settings/applications_controller_spec.rb
@@ -112,11 +112,11 @@ describe Settings::ApplicationsController do
describe 'PATCH #update' do
context 'success' do
- let(:opts) {
+ let(:opts) do
{
website: 'https://foo.bar/',
}
- }
+ end
def call_update
patch :update, params: {
diff --git a/spec/lib/webfinger_resource_spec.rb b/spec/lib/webfinger_resource_spec.rb
index 5c7f475d6..ee007da70 100644
--- a/spec/lib/webfinger_resource_spec.rb
+++ b/spec/lib/webfinger_resource_spec.rb
@@ -14,9 +14,9 @@ describe WebfingerResource do
it 'raises with a route whose controller is not AccountsController' do
resource = 'https://example.com/users/alice/other'
- expect {
+ expect do
WebfingerResource.new(resource).username
- }.to raise_error(ActiveRecord::RecordNotFound)
+ end.to raise_error(ActiveRecord::RecordNotFound)
end
it 'raises with a route whose action is not show' do
@@ -29,17 +29,17 @@ describe WebfingerResource do
expect(Rails.application.routes).to receive(:recognize_path).with(resource).and_return(recognized).at_least(:once)
- expect {
+ expect do
WebfingerResource.new(resource).username
- }.to raise_error(ActiveRecord::RecordNotFound)
+ end.to raise_error(ActiveRecord::RecordNotFound)
end
it 'raises with a string that doesnt start with URL' do
resource = 'website for http://example.com/users/alice/other'
- expect {
+ expect do
WebfingerResource.new(resource).username
- }.to raise_error(WebfingerResource::InvalidRequest)
+ end.to raise_error(WebfingerResource::InvalidRequest)
end
it 'finds the username in a valid https route' do
@@ -68,9 +68,9 @@ describe WebfingerResource do
it 'raises on a non-local domain' do
resource = 'user@remote-host.com'
- expect {
+ expect do
WebfingerResource.new(resource).username
- }.to raise_error(ActiveRecord::RecordNotFound)
+ end.to raise_error(ActiveRecord::RecordNotFound)
end
it 'finds username for a local domain' do
@@ -94,17 +94,17 @@ describe WebfingerResource do
it 'raises on a non-local domain' do
resource = 'acct:user@remote-host.com'
- expect {
+ expect do
WebfingerResource.new(resource).username
- }.to raise_error(ActiveRecord::RecordNotFound)
+ end.to raise_error(ActiveRecord::RecordNotFound)
end
it 'raises on a nonsense domain' do
resource = 'acct:user@remote-host@remote-hostess.remote.local@remote'
- expect {
+ expect do
WebfingerResource.new(resource).username
- }.to raise_error(ActiveRecord::RecordNotFound)
+ end.to raise_error(ActiveRecord::RecordNotFound)
end
it 'finds the username for a local account if the domain is the local one' do
@@ -128,9 +128,9 @@ describe WebfingerResource do
it 'raises InvalidRequest' do
resource = 'df/:dfkj'
- expect {
+ expect do
WebfingerResource.new(resource).username
- }.to raise_error(WebfingerResource::InvalidRequest)
+ end.to raise_error(WebfingerResource::InvalidRequest)
end
end
end
--
cgit
From 3680e032b43e9701c0bc1f3ed5238e58cd6b7ac8 Mon Sep 17 00:00:00 2001
From: Nick Schonning
Date: Sat, 18 Feb 2023 17:10:19 -0500
Subject: Autofix Rubocop RSpec/EmptyLineAfterFinalLet (#23707)
---
.rubocop_todo.yml | 21 ---------------------
spec/config/initializers/rack_attack_spec.rb | 5 +++++
spec/controllers/admin/reports_controller_spec.rb | 1 +
spec/controllers/admin/resets_controller_spec.rb | 1 +
spec/controllers/api/web/embeds_controller_spec.rb | 1 +
spec/controllers/instance_actors_controller_spec.rb | 2 ++
spec/controllers/intents_controller_spec.rb | 1 +
.../settings/applications_controller_spec.rb | 1 +
.../settings/sessions_controller_spec.rb | 1 +
spec/controllers/shares_controller_spec.rb | 1 +
spec/lib/status_filter_spec.rb | 1 +
spec/models/account_spec.rb | 1 +
spec/models/account_statuses_cleanup_policy_spec.rb | 1 +
spec/services/fetch_resource_service_spec.rb | 1 +
spec/services/import_service_spec.rb | 5 +++++
spec/services/precompute_feed_service_spec.rb | 1 +
spec/validators/poll_validator_spec.rb | 1 +
17 files changed, 25 insertions(+), 21 deletions(-)
(limited to 'spec/lib')
diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml
index 7620025cf..03de56a2a 100644
--- a/.rubocop_todo.yml
+++ b/.rubocop_todo.yml
@@ -825,27 +825,6 @@ RSpec/EmptyExampleGroup:
- 'spec/models/web/setting_spec.rb'
- 'spec/services/unmute_service_spec.rb'
-# Offense count: 25
-# This cop supports safe autocorrection (--autocorrect).
-RSpec/EmptyLineAfterFinalLet:
- Exclude:
- - 'spec/config/initializers/rack_attack_spec.rb'
- - 'spec/controllers/admin/reports_controller_spec.rb'
- - 'spec/controllers/admin/resets_controller_spec.rb'
- - 'spec/controllers/api/web/embeds_controller_spec.rb'
- - 'spec/controllers/instance_actors_controller_spec.rb'
- - 'spec/controllers/intents_controller_spec.rb'
- - 'spec/controllers/settings/applications_controller_spec.rb'
- - 'spec/controllers/settings/sessions_controller_spec.rb'
- - 'spec/controllers/shares_controller_spec.rb'
- - 'spec/lib/status_filter_spec.rb'
- - 'spec/models/account_spec.rb'
- - 'spec/models/account_statuses_cleanup_policy_spec.rb'
- - 'spec/services/fetch_resource_service_spec.rb'
- - 'spec/services/import_service_spec.rb'
- - 'spec/services/precompute_feed_service_spec.rb'
- - 'spec/validators/poll_validator_spec.rb'
-
# Offense count: 1
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: AllowConsecutiveOneLiners.
diff --git a/spec/config/initializers/rack_attack_spec.rb b/spec/config/initializers/rack_attack_spec.rb
index 03695f5fd..6d603caa9 100644
--- a/spec/config/initializers/rack_attack_spec.rb
+++ b/spec/config/initializers/rack_attack_spec.rb
@@ -36,11 +36,13 @@ describe Rack::Attack do
context 'for exact path' do
let(:path) { '/auth' }
+
it_behaves_like 'throttled endpoint'
end
context 'for path with format' do
let(:path) { '/auth.html' }
+
it_behaves_like 'throttled endpoint'
end
end
@@ -51,6 +53,7 @@ describe Rack::Attack do
context 'for exact path' do
let(:path) { '/api/v1/accounts' }
+
it_behaves_like 'throttled endpoint'
end
@@ -71,11 +74,13 @@ describe Rack::Attack do
context 'for exact path' do
let(:path) { '/auth/sign_in' }
+
it_behaves_like 'throttled endpoint'
end
context 'for path with format' do
let(:path) { '/auth/sign_in.html' }
+
it_behaves_like 'throttled endpoint'
end
end
diff --git a/spec/controllers/admin/reports_controller_spec.rb b/spec/controllers/admin/reports_controller_spec.rb
index 4cd1524bf..4dcc277d9 100644
--- a/spec/controllers/admin/reports_controller_spec.rb
+++ b/spec/controllers/admin/reports_controller_spec.rb
@@ -4,6 +4,7 @@ describe Admin::ReportsController do
render_views
let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
+
before do
sign_in user, scope: :user
end
diff --git a/spec/controllers/admin/resets_controller_spec.rb b/spec/controllers/admin/resets_controller_spec.rb
index aeb172318..64fe027fd 100644
--- a/spec/controllers/admin/resets_controller_spec.rb
+++ b/spec/controllers/admin/resets_controller_spec.rb
@@ -4,6 +4,7 @@ describe Admin::ResetsController do
render_views
let(:account) { Fabricate(:account) }
+
before do
sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')), scope: :user
end
diff --git a/spec/controllers/api/web/embeds_controller_spec.rb b/spec/controllers/api/web/embeds_controller_spec.rb
index a8fc1718f..345c317ba 100644
--- a/spec/controllers/api/web/embeds_controller_spec.rb
+++ b/spec/controllers/api/web/embeds_controller_spec.rb
@@ -6,6 +6,7 @@ describe Api::Web::EmbedsController do
render_views
let(:user) { Fabricate(:user) }
+
before { sign_in user }
describe 'POST #create' do
diff --git a/spec/controllers/instance_actors_controller_spec.rb b/spec/controllers/instance_actors_controller_spec.rb
index 833539a76..d6b4c793b 100644
--- a/spec/controllers/instance_actors_controller_spec.rb
+++ b/spec/controllers/instance_actors_controller_spec.rb
@@ -43,11 +43,13 @@ RSpec.describe InstanceActorsController, type: :controller do
context 'without authorized fetch mode' do
let(:authorized_fetch_mode) { false }
+
it_behaves_like 'shared behavior'
end
context 'with authorized fetch mode' do
let(:authorized_fetch_mode) { true }
+
it_behaves_like 'shared behavior'
end
end
diff --git a/spec/controllers/intents_controller_spec.rb b/spec/controllers/intents_controller_spec.rb
index ddfd5ea36..394f7d512 100644
--- a/spec/controllers/intents_controller_spec.rb
+++ b/spec/controllers/intents_controller_spec.rb
@@ -4,6 +4,7 @@ RSpec.describe IntentsController, type: :controller do
render_views
let(:user) { Fabricate(:user) }
+
before { sign_in user, scope: :user }
describe 'GET #show' do
diff --git a/spec/controllers/settings/applications_controller_spec.rb b/spec/controllers/settings/applications_controller_spec.rb
index a882a6fb8..35ad4b2e7 100644
--- a/spec/controllers/settings/applications_controller_spec.rb
+++ b/spec/controllers/settings/applications_controller_spec.rb
@@ -175,6 +175,7 @@ describe Settings::ApplicationsController do
describe 'regenerate' do
let(:token) { user.token_for_app(app) }
+
before do
expect(token).to_not be_nil
post :regenerate, params: { id: app.id }
diff --git a/spec/controllers/settings/sessions_controller_spec.rb b/spec/controllers/settings/sessions_controller_spec.rb
index 52b204a6a..0e312c5a6 100644
--- a/spec/controllers/settings/sessions_controller_spec.rb
+++ b/spec/controllers/settings/sessions_controller_spec.rb
@@ -5,6 +5,7 @@ describe Settings::SessionsController do
let(:user) { Fabricate(:user) }
let(:session_activation) { Fabricate(:session_activation, user: user) }
+
before { sign_in user, scope: :user }
describe 'DELETE #destroy' do
diff --git a/spec/controllers/shares_controller_spec.rb b/spec/controllers/shares_controller_spec.rb
index d6de3016a..e365b356e 100644
--- a/spec/controllers/shares_controller_spec.rb
+++ b/spec/controllers/shares_controller_spec.rb
@@ -4,6 +4,7 @@ describe SharesController do
render_views
let(:user) { Fabricate(:user) }
+
before { sign_in user }
describe 'GTE #show' do
diff --git a/spec/lib/status_filter_spec.rb b/spec/lib/status_filter_spec.rb
index a851014d9..287fe00de 100644
--- a/spec/lib/status_filter_spec.rb
+++ b/spec/lib/status_filter_spec.rb
@@ -32,6 +32,7 @@ describe StatusFilter do
context 'with real account' do
let(:account) { Fabricate(:account) }
+
subject { described_class.new(status, account) }
context 'when there are no connections' do
diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb
index 6cd769dc8..694432a1e 100644
--- a/spec/models/account_spec.rb
+++ b/spec/models/account_spec.rb
@@ -3,6 +3,7 @@ require 'rails_helper'
RSpec.describe Account, type: :model do
context do
let(:bob) { Fabricate(:account, username: 'bob') }
+
subject { Fabricate(:account) }
describe '#suspend!' do
diff --git a/spec/models/account_statuses_cleanup_policy_spec.rb b/spec/models/account_statuses_cleanup_policy_spec.rb
index f11684516..d3c011b3a 100644
--- a/spec/models/account_statuses_cleanup_policy_spec.rb
+++ b/spec/models/account_statuses_cleanup_policy_spec.rb
@@ -134,6 +134,7 @@ RSpec.describe AccountStatusesCleanupPolicy, type: :model do
describe '#invalidate_last_inspected' do
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
diff --git a/spec/services/fetch_resource_service_spec.rb b/spec/services/fetch_resource_service_spec.rb
index 6f24e6418..c39f52632 100644
--- a/spec/services/fetch_resource_service_spec.rb
+++ b/spec/services/fetch_resource_service_spec.rb
@@ -8,6 +8,7 @@ RSpec.describe FetchResourceService, type: :service do
context 'with blank url' do
let(:url) { '' }
+
it { is_expected.to be_nil }
end
diff --git a/spec/services/import_service_spec.rb b/spec/services/import_service_spec.rb
index 217d0ee24..399a43036 100644
--- a/spec/services/import_service_spec.rb
+++ b/spec/services/import_service_spec.rb
@@ -18,6 +18,7 @@ RSpec.describe ImportService, type: :service do
describe 'when no accounts are muted' do
let(:import) { Import.create(account: account, type: 'muting', data: csv) }
+
it 'mutes the listed accounts, including notifications' do
subject.call(import)
expect(account.muting.count).to eq 2
@@ -55,6 +56,7 @@ RSpec.describe ImportService, type: :service do
describe 'when no accounts are muted' do
let(:import) { Import.create(account: account, type: 'muting', data: csv) }
+
it 'mutes the listed accounts, respecting notifications' do
subject.call(import)
expect(account.muting.count).to eq 2
@@ -95,6 +97,7 @@ RSpec.describe ImportService, type: :service do
describe 'when no accounts are followed' do
let(:import) { Import.create(account: account, type: 'following', data: csv) }
+
it 'follows the listed accounts, including boosts' do
subject.call(import)
@@ -136,6 +139,7 @@ RSpec.describe ImportService, type: :service do
describe 'when no accounts are followed' do
let(:import) { Import.create(account: account, type: 'following', data: csv) }
+
it 'follows the listed accounts, respecting boosts' do
subject.call(import)
expect(account.following.count).to eq 1
@@ -224,6 +228,7 @@ RSpec.describe ImportService, type: :service do
describe 'when no bookmarks are set' do
let(:import) { Import.create(account: account, type: 'bookmarks', data: csv) }
+
it 'adds the toots the user has access to to bookmarks' do
local_status = Fabricate(:status, account: local_account, uri: 'https://local.com/users/foo/statuses/42', id: 42, local: true)
subject.call(import)
diff --git a/spec/services/precompute_feed_service_spec.rb b/spec/services/precompute_feed_service_spec.rb
index 86b93b5d2..b28824f9a 100644
--- a/spec/services/precompute_feed_service_spec.rb
+++ b/spec/services/precompute_feed_service_spec.rb
@@ -7,6 +7,7 @@ RSpec.describe PrecomputeFeedService, type: :service do
describe 'call' do
let(:account) { Fabricate(:account) }
+
it 'fills a user timeline with statuses' do
account = Fabricate(:account)
status = Fabricate(:status, account: account)
diff --git a/spec/validators/poll_validator_spec.rb b/spec/validators/poll_validator_spec.rb
index 941b83401..a76c63ccc 100644
--- a/spec/validators/poll_validator_spec.rb
+++ b/spec/validators/poll_validator_spec.rb
@@ -20,6 +20,7 @@ RSpec.describe PollValidator, type: :validator do
context 'expires just 5 min ago' do
let(:expires_at) { 5.minutes.from_now }
+
it 'not calls errors add' do
expect(errors).not_to have_received(:add)
end
--
cgit
From 81ad6c2e39393ff20450385cb37dd9bf6e6651e5 Mon Sep 17 00:00:00 2001
From: Nick Schonning
Date: Sat, 18 Feb 2023 17:38:14 -0500
Subject: Autofix Rubocop Style/StringLiterals (#23695)
---
.rubocop_todo.yml | 82 ----------------------
app/lib/webfinger.rb | 4 +-
db/migrate/20160305115639_add_devise_to_users.rb | 2 +-
.../20161122163057_remove_unneeded_indexes.rb | 6 +-
.../20170125145934_add_spoiler_text_to_statuses.rb | 2 +-
...1212195226_remove_duplicate_indexes_in_lists.rb | 4 +-
...uses_for_api_v1_accounts_account_id_statuses.rb | 4 +-
db/migrate/20180617162849_remove_unused_indexes.rb | 6 +-
...80606_encrypted_message_ids_to_timestamp_ids.rb | 2 +-
...213645_media_attachment_ids_to_timestamp_ids.rb | 2 +-
.../20210306164523_account_ids_to_timestamp_ids.rb | 2 +-
lib/mastodon/emoji_cli.rb | 2 +-
lib/rails/engine_extensions.rb | 2 +-
lib/tasks/mastodon.rake | 2 +-
.../admin/change_email_controller_spec.rb | 8 +--
.../api/v1/streaming_controller_spec.rb | 2 +-
spec/controllers/application_controller_spec.rb | 4 +-
.../auth/registrations_controller_spec.rb | 20 +++---
spec/controllers/auth/sessions_controller_spec.rb | 28 ++++----
.../authorized_applications_controller_spec.rb | 2 +-
.../settings/imports_controller_spec.rb | 4 +-
.../settings/profiles_controller_spec.rb | 4 +-
.../webauthn_credentials_controller_spec.rb | 2 +-
.../statuses_cleanup_controller_spec.rb | 4 +-
.../well_known/nodeinfo_controller_spec.rb | 4 +-
.../account_moderation_note_fabricator.rb | 2 +-
spec/fabricators/account_note_fabricator.rb | 2 +-
spec/fabricators/account_stat_fabricator.rb | 6 +-
spec/fabricators/account_tag_stat_fabricator.rb | 2 +-
.../account_warning_preset_fabricator.rb | 2 +-
spec/fabricators/admin_action_log_fabricator.rb | 2 +-
.../canonical_email_block_fabricator.rb | 2 +-
.../fabricators/conversation_account_fabricator.rb | 2 +-
.../custom_emoji_category_fabricator.rb | 2 +-
spec/fabricators/domain_allow_fabricator.rb | 2 +-
spec/fabricators/encrypted_message_fabricator.rb | 4 +-
spec/fabricators/identity_fabricator.rb | 4 +-
spec/fabricators/ip_block_fabricator.rb | 8 +--
spec/fabricators/list_fabricator.rb | 2 +-
spec/fabricators/relay_fabricator.rb | 2 +-
spec/fabricators/report_fabricator.rb | 2 +-
spec/fabricators/report_note_fabricator.rb | 2 +-
spec/fabricators/session_activation_fabricator.rb | 2 +-
spec/fabricators/status_edit_fabricator.rb | 4 +-
spec/fabricators/status_fabricator.rb | 2 +-
spec/fabricators/status_stat_fabricator.rb | 6 +-
spec/fabricators/user_fabricator.rb | 2 +-
spec/fabricators/user_role_fabricator.rb | 4 +-
spec/features/log_in_spec.rb | 4 +-
spec/helpers/accounts_helper_spec.rb | 8 +--
spec/helpers/application_helper_spec.rb | 10 +--
spec/lib/feed_manager_spec.rb | 2 +-
spec/mailers/notification_mailer_spec.rb | 44 ++++++------
spec/mailers/user_mailer_spec.rb | 2 +-
spec/models/account_spec.rb | 58 +++++++--------
spec/models/media_attachment_spec.rb | 22 +++---
spec/models/web/push_subscription_spec.rb | 2 +-
spec/models/webauthn_credentials_spec.rb | 4 +-
spec/presenters/instance_presenter_spec.rb | 30 ++++----
spec/rails_helper.rb | 2 +-
spec/requests/catch_all_route_request_spec.rb | 20 +++---
spec/requests/host_meta_request_spec.rb | 10 +--
spec/requests/localization_spec.rb | 6 +-
spec/services/account_search_service_spec.rb | 2 +-
.../fetch_remote_status_service_spec.rb | 40 +++++------
spec/services/delete_account_service_spec.rb | 12 ++--
spec/services/favourite_service_spec.rb | 4 +-
spec/services/fetch_link_card_service_spec.rb | 8 +--
spec/services/fetch_oembed_service_spec.rb | 6 +-
spec/services/fetch_remote_status_service_spec.rb | 2 +-
spec/services/follow_service_spec.rb | 2 +-
spec/services/import_service_spec.rb | 4 +-
spec/services/post_status_service_spec.rb | 28 ++++----
spec/services/process_mentions_service_spec.rb | 8 +--
spec/services/resolve_account_service_spec.rb | 18 ++---
spec/spec_helper.rb | 6 +-
76 files changed, 277 insertions(+), 359 deletions(-)
(limited to 'spec/lib')
diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml
index 1c22c440b..e99747819 100644
--- a/.rubocop_todo.yml
+++ b/.rubocop_todo.yml
@@ -3057,88 +3057,6 @@ Style/StringConcatenation:
- 'spec/validators/disallowed_hashtags_validator_spec.rb'
- 'spec/workers/web/push_notification_worker_spec.rb'
-# Offense count: 297
-# This cop supports safe autocorrection (--autocorrect).
-# Configuration parameters: EnforcedStyle, ConsistentQuotesInMultiline.
-# SupportedStyles: single_quotes, double_quotes
-Style/StringLiterals:
- Exclude:
- - 'app/lib/webfinger.rb'
- - 'db/migrate/20160305115639_add_devise_to_users.rb'
- - 'db/migrate/20161122163057_remove_unneeded_indexes.rb'
- - 'db/migrate/20170125145934_add_spoiler_text_to_statuses.rb'
- - 'db/migrate/20171212195226_remove_duplicate_indexes_in_lists.rb'
- - 'db/migrate/20180514140000_revert_index_change_on_statuses_for_api_v1_accounts_account_id_statuses.rb'
- - 'db/migrate/20180617162849_remove_unused_indexes.rb'
- - 'db/migrate/20200521180606_encrypted_message_ids_to_timestamp_ids.rb'
- - 'db/migrate/20200622213645_media_attachment_ids_to_timestamp_ids.rb'
- - 'db/migrate/20210306164523_account_ids_to_timestamp_ids.rb'
- - 'lib/mastodon/emoji_cli.rb'
- - 'lib/rails/engine_extensions.rb'
- - 'lib/tasks/mastodon.rake'
- - 'spec/controllers/admin/change_email_controller_spec.rb'
- - 'spec/controllers/api/v1/streaming_controller_spec.rb'
- - 'spec/controllers/application_controller_spec.rb'
- - 'spec/controllers/auth/registrations_controller_spec.rb'
- - 'spec/controllers/auth/sessions_controller_spec.rb'
- - 'spec/controllers/oauth/authorized_applications_controller_spec.rb'
- - 'spec/controllers/settings/imports_controller_spec.rb'
- - 'spec/controllers/settings/profiles_controller_spec.rb'
- - 'spec/controllers/settings/two_factor_authentication/webauthn_credentials_controller_spec.rb'
- - 'spec/controllers/statuses_cleanup_controller_spec.rb'
- - 'spec/controllers/well_known/nodeinfo_controller_spec.rb'
- - 'spec/fabricators/account_moderation_note_fabricator.rb'
- - 'spec/fabricators/account_note_fabricator.rb'
- - 'spec/fabricators/account_stat_fabricator.rb'
- - 'spec/fabricators/account_tag_stat_fabricator.rb'
- - 'spec/fabricators/account_warning_preset_fabricator.rb'
- - 'spec/fabricators/admin_action_log_fabricator.rb'
- - 'spec/fabricators/canonical_email_block_fabricator.rb'
- - 'spec/fabricators/conversation_account_fabricator.rb'
- - 'spec/fabricators/custom_emoji_category_fabricator.rb'
- - 'spec/fabricators/domain_allow_fabricator.rb'
- - 'spec/fabricators/encrypted_message_fabricator.rb'
- - 'spec/fabricators/identity_fabricator.rb'
- - 'spec/fabricators/ip_block_fabricator.rb'
- - 'spec/fabricators/list_fabricator.rb'
- - 'spec/fabricators/relay_fabricator.rb'
- - 'spec/fabricators/report_fabricator.rb'
- - 'spec/fabricators/report_note_fabricator.rb'
- - 'spec/fabricators/session_activation_fabricator.rb'
- - 'spec/fabricators/status_edit_fabricator.rb'
- - 'spec/fabricators/status_fabricator.rb'
- - 'spec/fabricators/status_stat_fabricator.rb'
- - 'spec/fabricators/user_fabricator.rb'
- - 'spec/fabricators/user_role_fabricator.rb'
- - 'spec/features/log_in_spec.rb'
- - 'spec/helpers/accounts_helper_spec.rb'
- - 'spec/helpers/application_helper_spec.rb'
- - 'spec/lib/feed_manager_spec.rb'
- - 'spec/mailers/notification_mailer_spec.rb'
- - 'spec/mailers/user_mailer_spec.rb'
- - 'spec/models/account_spec.rb'
- - 'spec/models/media_attachment_spec.rb'
- - 'spec/models/web/push_subscription_spec.rb'
- - 'spec/models/webauthn_credentials_spec.rb'
- - 'spec/presenters/instance_presenter_spec.rb'
- - 'spec/rails_helper.rb'
- - 'spec/requests/catch_all_route_request_spec.rb'
- - 'spec/requests/host_meta_request_spec.rb'
- - 'spec/requests/localization_spec.rb'
- - 'spec/services/account_search_service_spec.rb'
- - 'spec/services/activitypub/fetch_remote_status_service_spec.rb'
- - 'spec/services/delete_account_service_spec.rb'
- - 'spec/services/favourite_service_spec.rb'
- - 'spec/services/fetch_link_card_service_spec.rb'
- - 'spec/services/fetch_oembed_service_spec.rb'
- - 'spec/services/fetch_remote_status_service_spec.rb'
- - 'spec/services/follow_service_spec.rb'
- - 'spec/services/import_service_spec.rb'
- - 'spec/services/post_status_service_spec.rb'
- - 'spec/services/process_mentions_service_spec.rb'
- - 'spec/services/resolve_account_service_spec.rb'
- - 'spec/spec_helper.rb'
-
# Offense count: 272
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: EnforcedStyle, MinSize.
diff --git a/app/lib/webfinger.rb b/app/lib/webfinger.rb
index 7c0c10c33..42ddef47b 100644
--- a/app/lib/webfinger.rb
+++ b/app/lib/webfinger.rb
@@ -99,7 +99,7 @@ class Webfinger
end
def standard_url
- if @domain.end_with? ".onion"
+ if @domain.end_with? '.onion'
"http://#{@domain}/.well-known/webfinger?resource=#{@uri}"
else
"https://#{@domain}/.well-known/webfinger?resource=#{@uri}"
@@ -107,7 +107,7 @@ class Webfinger
end
def host_meta_url
- if @domain.end_with? ".onion"
+ if @domain.end_with? '.onion'
"http://#{@domain}/.well-known/host-meta"
else
"https://#{@domain}/.well-known/host-meta"
diff --git a/db/migrate/20160305115639_add_devise_to_users.rb b/db/migrate/20160305115639_add_devise_to_users.rb
index 0e12e6053..fa1e521b2 100644
--- a/db/migrate/20160305115639_add_devise_to_users.rb
+++ b/db/migrate/20160305115639_add_devise_to_users.rb
@@ -2,7 +2,7 @@ class AddDeviseToUsers < ActiveRecord::Migration[4.2]
def self.up
change_table(:users) do |t|
## Database authenticatable
- t.string :encrypted_password, null: false, default: ""
+ t.string :encrypted_password, null: false, default: ''
## Recoverable
t.string :reset_password_token
diff --git a/db/migrate/20161122163057_remove_unneeded_indexes.rb b/db/migrate/20161122163057_remove_unneeded_indexes.rb
index 3832b878d..12cc9c5b2 100644
--- a/db/migrate/20161122163057_remove_unneeded_indexes.rb
+++ b/db/migrate/20161122163057_remove_unneeded_indexes.rb
@@ -1,7 +1,7 @@
class RemoveUnneededIndexes < ActiveRecord::Migration[5.0]
def change
- remove_index :notifications, name: "index_notifications_on_account_id"
- remove_index :settings, name: "index_settings_on_target_type_and_target_id"
- remove_index :statuses_tags, name: "index_statuses_tags_on_tag_id"
+ remove_index :notifications, name: 'index_notifications_on_account_id'
+ remove_index :settings, name: 'index_settings_on_target_type_and_target_id'
+ remove_index :statuses_tags, name: 'index_statuses_tags_on_tag_id'
end
end
diff --git a/db/migrate/20170125145934_add_spoiler_text_to_statuses.rb b/db/migrate/20170125145934_add_spoiler_text_to_statuses.rb
index 2c43210ba..39cd41c00 100644
--- a/db/migrate/20170125145934_add_spoiler_text_to_statuses.rb
+++ b/db/migrate/20170125145934_add_spoiler_text_to_statuses.rb
@@ -1,5 +1,5 @@
class AddSpoilerTextToStatuses < ActiveRecord::Migration[5.0]
def change
- add_column :statuses, :spoiler_text, :text, default: "", null: false
+ add_column :statuses, :spoiler_text, :text, default: '', null: false
end
end
diff --git a/db/migrate/20171212195226_remove_duplicate_indexes_in_lists.rb b/db/migrate/20171212195226_remove_duplicate_indexes_in_lists.rb
index 03f2591a8..ba67eee86 100644
--- a/db/migrate/20171212195226_remove_duplicate_indexes_in_lists.rb
+++ b/db/migrate/20171212195226_remove_duplicate_indexes_in_lists.rb
@@ -1,6 +1,6 @@
class RemoveDuplicateIndexesInLists < ActiveRecord::Migration[5.1]
def change
- remove_index :list_accounts, name: "index_list_accounts_on_account_id"
- remove_index :list_accounts, name: "index_list_accounts_on_list_id"
+ remove_index :list_accounts, name: 'index_list_accounts_on_account_id'
+ remove_index :list_accounts, name: 'index_list_accounts_on_list_id'
end
end
diff --git a/db/migrate/20180514140000_revert_index_change_on_statuses_for_api_v1_accounts_account_id_statuses.rb b/db/migrate/20180514140000_revert_index_change_on_statuses_for_api_v1_accounts_account_id_statuses.rb
index ccd2ec7ea..e23880bf5 100644
--- a/db/migrate/20180514140000_revert_index_change_on_statuses_for_api_v1_accounts_account_id_statuses.rb
+++ b/db/migrate/20180514140000_revert_index_change_on_statuses_for_api_v1_accounts_account_id_statuses.rb
@@ -5,11 +5,11 @@ class RevertIndexChangeOnStatusesForApiV1AccountsAccountIdStatuses < ActiveRecor
def change
safety_assured do
- add_index :statuses, [:account_id, :id, :visibility, :updated_at], order: { id: :desc }, algorithm: :concurrently, name: :index_statuses_20180106 unless index_name_exists?(:statuses, "index_statuses_20180106")
+ add_index :statuses, [:account_id, :id, :visibility, :updated_at], order: { id: :desc }, algorithm: :concurrently, name: :index_statuses_20180106 unless index_name_exists?(:statuses, 'index_statuses_20180106')
end
# These index may not exists (see migration 20180514130000)
remove_index :statuses, column: [:account_id, :id, :visibility], where: 'visibility IN (0, 1, 2)', algorithm: :concurrently if index_exists?(:statuses, [:account_id, :id, :visibility], where: 'visibility IN (0, 1, 2)')
- remove_index :statuses, column: [:account_id, :id], where: 'visibility = 3', algorithm: :concurrently if index_exists?(:statuses, ["account_id", "id"], where: "(visibility = 3)")
+ remove_index :statuses, column: [:account_id, :id], where: 'visibility = 3', algorithm: :concurrently if index_exists?(:statuses, ['account_id', 'id'], where: '(visibility = 3)')
end
end
diff --git a/db/migrate/20180617162849_remove_unused_indexes.rb b/db/migrate/20180617162849_remove_unused_indexes.rb
index 61add6385..9cd6b9164 100644
--- a/db/migrate/20180617162849_remove_unused_indexes.rb
+++ b/db/migrate/20180617162849_remove_unused_indexes.rb
@@ -1,7 +1,7 @@
class RemoveUnusedIndexes < ActiveRecord::Migration[5.2]
def change
- remove_index :statuses, name: "index_statuses_on_conversation_id"
- remove_index :users, name: "index_users_on_filtered_languages"
- remove_index :backups, name: "index_backups_on_user_id"
+ remove_index :statuses, name: 'index_statuses_on_conversation_id'
+ remove_index :users, name: 'index_users_on_filtered_languages'
+ remove_index :backups, name: 'index_backups_on_user_id'
end
end
diff --git a/db/migrate/20200521180606_encrypted_message_ids_to_timestamp_ids.rb b/db/migrate/20200521180606_encrypted_message_ids_to_timestamp_ids.rb
index 24d43a0bf..c5c80b795 100644
--- a/db/migrate/20200521180606_encrypted_message_ids_to_timestamp_ids.rb
+++ b/db/migrate/20200521180606_encrypted_message_ids_to_timestamp_ids.rb
@@ -6,7 +6,7 @@ class EncryptedMessageIdsToTimestampIds < ActiveRecord::Migration[5.2]
end
def down
- execute("LOCK encrypted_messages")
+ execute('LOCK encrypted_messages')
execute("SELECT setval('encrypted_messages_id_seq', (SELECT MAX(id) FROM encrypted_messages))")
execute("ALTER TABLE encrypted_messages ALTER COLUMN id SET DEFAULT nextval('encrypted_messages_id_seq')")
end
diff --git a/db/migrate/20200622213645_media_attachment_ids_to_timestamp_ids.rb b/db/migrate/20200622213645_media_attachment_ids_to_timestamp_ids.rb
index 5c6865b92..ccd65bf53 100644
--- a/db/migrate/20200622213645_media_attachment_ids_to_timestamp_ids.rb
+++ b/db/migrate/20200622213645_media_attachment_ids_to_timestamp_ids.rb
@@ -10,7 +10,7 @@ class MediaAttachmentIdsToTimestampIds < ActiveRecord::Migration[5.1]
end
def down
- execute("LOCK media_attachments")
+ execute('LOCK media_attachments')
execute("SELECT setval('media_attachments_id_seq', (SELECT MAX(id) FROM media_attachments))")
execute("ALTER TABLE media_attachments ALTER COLUMN id SET DEFAULT nextval('media_attachments_id_seq')")
end
diff --git a/db/migrate/20210306164523_account_ids_to_timestamp_ids.rb b/db/migrate/20210306164523_account_ids_to_timestamp_ids.rb
index 39cd4cdea..40c582842 100644
--- a/db/migrate/20210306164523_account_ids_to_timestamp_ids.rb
+++ b/db/migrate/20210306164523_account_ids_to_timestamp_ids.rb
@@ -10,7 +10,7 @@ class AccountIdsToTimestampIds < ActiveRecord::Migration[5.1]
end
def down
- execute("LOCK accounts")
+ execute('LOCK accounts')
execute("SELECT setval('accounts_id_seq', (SELECT MAX(id) FROM accounts))")
execute("ALTER TABLE accounts ALTER COLUMN id SET DEFAULT nextval('accounts_id_seq')")
end
diff --git a/lib/mastodon/emoji_cli.rb b/lib/mastodon/emoji_cli.rb
index a3e947909..feb77107f 100644
--- a/lib/mastodon/emoji_cli.rb
+++ b/lib/mastodon/emoji_cli.rb
@@ -49,7 +49,7 @@ module Mastodon
next if filename.start_with?('._')
shortcode = [options[:prefix], filename, options[:suffix]].compact.join
- custom_emoji = CustomEmoji.local.find_by("LOWER(shortcode) = ?", shortcode.downcase)
+ custom_emoji = CustomEmoji.local.find_by('LOWER(shortcode) = ?', shortcode.downcase)
if custom_emoji && !options[:overwrite]
skipped += 1
diff --git a/lib/rails/engine_extensions.rb b/lib/rails/engine_extensions.rb
index 4e3767db9..1f5c2cd6c 100644
--- a/lib/rails/engine_extensions.rb
+++ b/lib/rails/engine_extensions.rb
@@ -3,7 +3,7 @@ module Rails
# Rewrite task loading code to filter digitalocean.rake task
def run_tasks_blocks(app)
Railtie.instance_method(:run_tasks_blocks).bind_call(self, app)
- paths["lib/tasks"].existent.reject { |ext| ext.end_with?('digitalocean.rake') }.sort.each { |ext| load(ext) }
+ paths['lib/tasks'].existent.reject { |ext| ext.end_with?('digitalocean.rake') }.sort.each { |ext| load(ext) }
end
end
end
diff --git a/lib/tasks/mastodon.rake b/lib/tasks/mastodon.rake
index 477daa01b..179a730bc 100644
--- a/lib/tasks/mastodon.rake
+++ b/lib/tasks/mastodon.rake
@@ -264,7 +264,7 @@ namespace :mastodon do
env['S3_ENDPOINT'] = prompt.ask('Storj DCS endpoint URL:') do |q|
q.required true
- q.default "https://gateway.storjshare.io"
+ q.default 'https://gateway.storjshare.io'
q.modify :strip
end
diff --git a/spec/controllers/admin/change_email_controller_spec.rb b/spec/controllers/admin/change_email_controller_spec.rb
index cf8a27d39..0814f327d 100644
--- a/spec/controllers/admin/change_email_controller_spec.rb
+++ b/spec/controllers/admin/change_email_controller_spec.rb
@@ -9,8 +9,8 @@ RSpec.describe Admin::ChangeEmailsController, type: :controller do
sign_in admin
end
- describe "GET #show" do
- it "returns http success" do
+ describe 'GET #show' do
+ it 'returns http success' do
user = Fabricate(:user)
get :show, params: { account_id: user.account.id }
@@ -19,12 +19,12 @@ RSpec.describe Admin::ChangeEmailsController, type: :controller do
end
end
- describe "GET #update" do
+ describe 'GET #update' do
before do
allow(UserMailer).to receive(:confirmation_instructions).and_return(double('email', deliver_later: nil))
end
- it "returns http success" do
+ it 'returns http success' do
user = Fabricate(:user)
previous_email = user.email
diff --git a/spec/controllers/api/v1/streaming_controller_spec.rb b/spec/controllers/api/v1/streaming_controller_spec.rb
index 4ab409a54..9dbca0178 100644
--- a/spec/controllers/api/v1/streaming_controller_spec.rb
+++ b/spec/controllers/api/v1/streaming_controller_spec.rb
@@ -38,7 +38,7 @@ describe Api::V1::StreamingController do
[:scheme, :path, :query, :fragment].each do |part|
expect(redirect_to_uri.send(part)).to eq(request_uri.send(part)), "redirect target #{part}"
end
- expect(redirect_to_uri.host).to eq(@streaming_host), "redirect target host"
+ expect(redirect_to_uri.host).to eq(@streaming_host), 'redirect target host'
end
end
end
diff --git a/spec/controllers/application_controller_spec.rb b/spec/controllers/application_controller_spec.rb
index 1b002e01c..f14c451de 100644
--- a/spec/controllers/application_controller_spec.rb
+++ b/spec/controllers/application_controller_spec.rb
@@ -27,7 +27,7 @@ describe ApplicationController, type: :controller do
expect(response).to have_http_status(code)
end
- it "renders template for http" do
+ it 'renders template for http' do
is_expected.to render_template("errors/#{code}", layout: 'error')
end
end
@@ -146,7 +146,7 @@ describe ApplicationController, type: :controller do
end
it 'does not store location for user if it is devise controller' do
- @request.env["devise.mapping"] = Devise.mappings[:user]
+ @request.env['devise.mapping'] = Devise.mappings[:user]
get 'create'
expect(controller.stored_location_for(:user)).to be_nil
end
diff --git a/spec/controllers/auth/registrations_controller_spec.rb b/spec/controllers/auth/registrations_controller_spec.rb
index 38c003b53..7298bde00 100644
--- a/spec/controllers/auth/registrations_controller_spec.rb
+++ b/spec/controllers/auth/registrations_controller_spec.rb
@@ -32,7 +32,7 @@ RSpec.describe Auth::RegistrationsController, type: :controller do
describe 'GET #edit' do
it 'returns http success' do
- request.env["devise.mapping"] = Devise.mappings[:user]
+ request.env['devise.mapping'] = Devise.mappings[:user]
sign_in(Fabricate(:user))
get :edit
expect(response).to have_http_status(200)
@@ -41,7 +41,7 @@ RSpec.describe Auth::RegistrationsController, type: :controller do
describe 'GET #update' do
it 'returns http success' do
- request.env["devise.mapping"] = Devise.mappings[:user]
+ request.env['devise.mapping'] = Devise.mappings[:user]
sign_in(Fabricate(:user), scope: :user)
post :update
expect(response).to have_http_status(200)
@@ -49,7 +49,7 @@ RSpec.describe Auth::RegistrationsController, type: :controller do
context 'when suspended' do
it 'returns http forbidden' do
- request.env["devise.mapping"] = Devise.mappings[:user]
+ request.env['devise.mapping'] = Devise.mappings[:user]
sign_in(Fabricate(:user, account_attributes: { username: 'test', suspended_at: Time.now.utc }), scope: :user)
post :update
expect(response).to have_http_status(403)
@@ -59,7 +59,7 @@ RSpec.describe Auth::RegistrationsController, type: :controller do
describe 'GET #new' do
before do
- request.env["devise.mapping"] = Devise.mappings[:user]
+ request.env['devise.mapping'] = Devise.mappings[:user]
end
context do
@@ -92,7 +92,7 @@ RSpec.describe Auth::RegistrationsController, type: :controller do
I18n.locale = current_locale
end
- before { request.env["devise.mapping"] = Devise.mappings[:user] }
+ before { request.env['devise.mapping'] = Devise.mappings[:user] }
context do
around do |example|
@@ -103,7 +103,7 @@ RSpec.describe Auth::RegistrationsController, type: :controller do
subject do
Setting.registrations_mode = 'open'
- request.headers["Accept-Language"] = accept_language
+ 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
@@ -129,7 +129,7 @@ RSpec.describe Auth::RegistrationsController, type: :controller do
subject do
Setting.registrations_mode = 'open'
- request.headers["Accept-Language"] = accept_language
+ 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
@@ -149,7 +149,7 @@ RSpec.describe Auth::RegistrationsController, type: :controller do
subject do
Setting.registrations_mode = 'approved'
- request.headers["Accept-Language"] = accept_language
+ 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
@@ -176,7 +176,7 @@ RSpec.describe Auth::RegistrationsController, type: :controller do
subject do
Setting.registrations_mode = 'approved'
- request.headers["Accept-Language"] = accept_language
+ request.headers['Accept-Language'] = accept_language
invite = Fabricate(:invite, max_uses: nil, expires_at: 1.hour.ago)
post :create, params: { user: { account_attributes: { username: 'test' }, email: 'test@example.com', password: '12345678', password_confirmation: '12345678', invite_code: invite.code, agreement: 'true' } }
end
@@ -208,7 +208,7 @@ RSpec.describe Auth::RegistrationsController, type: :controller do
inviter = Fabricate(:user, confirmed_at: 2.days.ago)
Setting.registrations_mode = 'approved'
Setting.require_invite_text = true
- request.headers["Accept-Language"] = accept_language
+ request.headers['Accept-Language'] = accept_language
invite = Fabricate(:invite, user: inviter, max_uses: nil, expires_at: 1.hour.from_now)
post :create, params: { user: { account_attributes: { username: 'test' }, email: 'test@example.com', password: '12345678', password_confirmation: '12345678', invite_code: invite.code, agreement: 'true' } }
end
diff --git a/spec/controllers/auth/sessions_controller_spec.rb b/spec/controllers/auth/sessions_controller_spec.rb
index 8f898ad1f..eb03dff50 100644
--- a/spec/controllers/auth/sessions_controller_spec.rb
+++ b/spec/controllers/auth/sessions_controller_spec.rb
@@ -54,7 +54,7 @@ RSpec.describe Auth::SessionsController, type: :controller do
context 'using PAM authentication', if: ENV['PAM_ENABLED'] == 'true' do
context 'using a valid password' do
before do
- post :create, params: { user: { email: "pam_user1", password: '123456' } }
+ post :create, params: { user: { email: 'pam_user1', password: '123456' } }
end
it 'redirects to home' do
@@ -68,7 +68,7 @@ RSpec.describe Auth::SessionsController, type: :controller do
context 'using an invalid password' do
before do
- post :create, params: { user: { email: "pam_user1", password: 'WRONGPW' } }
+ post :create, params: { user: { email: 'pam_user1', password: 'WRONGPW' } }
end
it 'shows a login error' do
@@ -194,7 +194,7 @@ RSpec.describe Auth::SessionsController, type: :controller do
post :create, params: { user: { email: user.email, password: user.password } }
end
- context "in single user mode" do
+ context 'in single user mode' do
let(:single_user_mode) { true }
it 'redirects to home' do
@@ -202,7 +202,7 @@ RSpec.describe Auth::SessionsController, type: :controller do
end
end
- context "in non-single user mode" do
+ context 'in non-single user mode' do
let(:single_user_mode) { false }
it "redirects back to the user's page" do
@@ -230,8 +230,8 @@ RSpec.describe Auth::SessionsController, type: :controller do
end
it 'renders two factor authentication page' do
- expect(controller).to render_template("two_factor")
- expect(controller).to render_template(partial: "_otp_authentication_form")
+ expect(controller).to render_template('two_factor')
+ expect(controller).to render_template(partial: '_otp_authentication_form')
end
end
@@ -246,8 +246,8 @@ RSpec.describe Auth::SessionsController, type: :controller do
end
it 'renders two factor authentication page' do
- expect(controller).to render_template("two_factor")
- expect(controller).to render_template(partial: "_otp_authentication_form")
+ expect(controller).to render_template('two_factor')
+ expect(controller).to render_template(partial: '_otp_authentication_form')
end
end
@@ -257,8 +257,8 @@ RSpec.describe Auth::SessionsController, type: :controller do
end
it 'renders two factor authentication page' do
- expect(controller).to render_template("two_factor")
- expect(controller).to render_template(partial: "_otp_authentication_form")
+ expect(controller).to render_template('two_factor')
+ expect(controller).to render_template(partial: '_otp_authentication_form')
end
end
@@ -359,8 +359,8 @@ RSpec.describe Auth::SessionsController, type: :controller do
end
it 'renders webauthn authentication page' do
- expect(controller).to render_template("two_factor")
- expect(controller).to render_template(partial: "_webauthn_form")
+ expect(controller).to render_template('two_factor')
+ expect(controller).to render_template(partial: '_webauthn_form')
end
end
@@ -370,8 +370,8 @@ RSpec.describe Auth::SessionsController, type: :controller do
end
it 'renders webauthn authentication page' do
- expect(controller).to render_template("two_factor")
- expect(controller).to render_template(partial: "_webauthn_form")
+ expect(controller).to render_template('two_factor')
+ expect(controller).to render_template(partial: '_webauthn_form')
end
end
diff --git a/spec/controllers/oauth/authorized_applications_controller_spec.rb b/spec/controllers/oauth/authorized_applications_controller_spec.rb
index 901e538e9..885bfa35b 100644
--- a/spec/controllers/oauth/authorized_applications_controller_spec.rb
+++ b/spec/controllers/oauth/authorized_applications_controller_spec.rb
@@ -13,7 +13,7 @@ describe Oauth::AuthorizedApplicationsController do
shared_examples 'stores location for user' do
it 'stores location for user' do
subject
- expect(controller.stored_location_for(:user)).to eq "/oauth/authorized_applications"
+ expect(controller.stored_location_for(:user)).to eq '/oauth/authorized_applications'
end
end
diff --git a/spec/controllers/settings/imports_controller_spec.rb b/spec/controllers/settings/imports_controller_spec.rb
index 8070a35db..e50504cc5 100644
--- a/spec/controllers/settings/imports_controller_spec.rb
+++ b/spec/controllers/settings/imports_controller_spec.rb
@@ -7,8 +7,8 @@ RSpec.describe Settings::ImportsController, type: :controller do
sign_in Fabricate(:user), scope: :user
end
- describe "GET #show" do
- it "returns http success" do
+ describe 'GET #show' do
+ it 'returns http success' do
get :show
expect(response).to have_http_status(200)
end
diff --git a/spec/controllers/settings/profiles_controller_spec.rb b/spec/controllers/settings/profiles_controller_spec.rb
index ee3aec815..fbbca8bb9 100644
--- a/spec/controllers/settings/profiles_controller_spec.rb
+++ b/spec/controllers/settings/profiles_controller_spec.rb
@@ -10,8 +10,8 @@ RSpec.describe Settings::ProfilesController, type: :controller do
sign_in user, scope: :user
end
- describe "GET #show" do
- it "returns http success" do
+ describe 'GET #show' do
+ it 'returns http success' do
get :show
expect(response).to have_http_status(200)
end
diff --git a/spec/controllers/settings/two_factor_authentication/webauthn_credentials_controller_spec.rb b/spec/controllers/settings/two_factor_authentication/webauthn_credentials_controller_spec.rb
index 06989ffd2..c3156c4e9 100644
--- a/spec/controllers/settings/two_factor_authentication/webauthn_credentials_controller_spec.rb
+++ b/spec/controllers/settings/two_factor_authentication/webauthn_credentials_controller_spec.rb
@@ -137,7 +137,7 @@ describe Settings::TwoFactorAuthentication::WebauthnCredentialsController do
expect { get :options }.to_not change { user.webauthn_id }
end
- it "includes existing credentials in list of excluded credentials" do
+ it 'includes existing credentials in list of excluded credentials' do
get :options
excluded_credentials_ids = JSON.parse(response.body)['excludeCredentials'].map { |credential| credential['id'] }
diff --git a/spec/controllers/statuses_cleanup_controller_spec.rb b/spec/controllers/statuses_cleanup_controller_spec.rb
index 924709260..347fe4027 100644
--- a/spec/controllers/statuses_cleanup_controller_spec.rb
+++ b/spec/controllers/statuses_cleanup_controller_spec.rb
@@ -8,8 +8,8 @@ RSpec.describe StatusesCleanupController, type: :controller do
sign_in @user, scope: :user
end
- describe "GET #show" do
- it "returns http success" do
+ describe 'GET #show' do
+ it 'returns http success' do
get :show
expect(response).to have_http_status(200)
end
diff --git a/spec/controllers/well_known/nodeinfo_controller_spec.rb b/spec/controllers/well_known/nodeinfo_controller_spec.rb
index 36e85f20d..964a14706 100644
--- a/spec/controllers/well_known/nodeinfo_controller_spec.rb
+++ b/spec/controllers/well_known/nodeinfo_controller_spec.rb
@@ -27,8 +27,8 @@ describe WellKnown::NodeInfoController, type: :controller do
json = body_as_json
- expect({ "foo" => 0 }).not_to match_json_schema("nodeinfo_2.0")
- expect(json).to match_json_schema("nodeinfo_2.0")
+ expect({ 'foo' => 0 }).not_to match_json_schema('nodeinfo_2.0')
+ expect(json).to match_json_schema('nodeinfo_2.0')
expect(json[:version]).to eq '2.0'
expect(json[:usage]).to be_a Hash
expect(json[:software]).to be_a Hash
diff --git a/spec/fabricators/account_moderation_note_fabricator.rb b/spec/fabricators/account_moderation_note_fabricator.rb
index 9277af165..343a41fb1 100644
--- a/spec/fabricators/account_moderation_note_fabricator.rb
+++ b/spec/fabricators/account_moderation_note_fabricator.rb
@@ -1,4 +1,4 @@
Fabricator(:account_moderation_note) do
- content "MyText"
+ content 'MyText'
account nil
end
diff --git a/spec/fabricators/account_note_fabricator.rb b/spec/fabricators/account_note_fabricator.rb
index 1b061745a..285703b38 100644
--- a/spec/fabricators/account_note_fabricator.rb
+++ b/spec/fabricators/account_note_fabricator.rb
@@ -1,5 +1,5 @@
Fabricator(:account_note) do
account
target_account { Fabricate(:account) }
- comment "User note text"
+ comment 'User note text'
end
diff --git a/spec/fabricators/account_stat_fabricator.rb b/spec/fabricators/account_stat_fabricator.rb
index 2b06b4790..b1b47ffef 100644
--- a/spec/fabricators/account_stat_fabricator.rb
+++ b/spec/fabricators/account_stat_fabricator.rb
@@ -1,6 +1,6 @@
Fabricator(:account_stat) do
account nil
- statuses_count ""
- following_count ""
- followers_count ""
+ statuses_count ''
+ following_count ''
+ followers_count ''
end
diff --git a/spec/fabricators/account_tag_stat_fabricator.rb b/spec/fabricators/account_tag_stat_fabricator.rb
index 9edb550be..7a4de07f6 100644
--- a/spec/fabricators/account_tag_stat_fabricator.rb
+++ b/spec/fabricators/account_tag_stat_fabricator.rb
@@ -1,3 +1,3 @@
Fabricator(:account_tag_stat) do
- accounts_count ""
+ accounts_count ''
end
diff --git a/spec/fabricators/account_warning_preset_fabricator.rb b/spec/fabricators/account_warning_preset_fabricator.rb
index 6c0b87e7c..7e7c03cb8 100644
--- a/spec/fabricators/account_warning_preset_fabricator.rb
+++ b/spec/fabricators/account_warning_preset_fabricator.rb
@@ -1,3 +1,3 @@
Fabricator(:account_warning_preset) do
- text "MyText"
+ text 'MyText'
end
diff --git a/spec/fabricators/admin_action_log_fabricator.rb b/spec/fabricators/admin_action_log_fabricator.rb
index 2f44e953d..474bef1bc 100644
--- a/spec/fabricators/admin_action_log_fabricator.rb
+++ b/spec/fabricators/admin_action_log_fabricator.rb
@@ -1,5 +1,5 @@
Fabricator('Admin::ActionLog') do
account nil
- action "MyString"
+ action 'MyString'
target nil
end
diff --git a/spec/fabricators/canonical_email_block_fabricator.rb b/spec/fabricators/canonical_email_block_fabricator.rb
index a0b6e0d22..61afde3de 100644
--- a/spec/fabricators/canonical_email_block_fabricator.rb
+++ b/spec/fabricators/canonical_email_block_fabricator.rb
@@ -1,4 +1,4 @@
Fabricator(:canonical_email_block) do
- email "test@example.com"
+ email 'test@example.com'
reference_account { Fabricate(:account) }
end
diff --git a/spec/fabricators/conversation_account_fabricator.rb b/spec/fabricators/conversation_account_fabricator.rb
index f57ffd535..0fe7a494e 100644
--- a/spec/fabricators/conversation_account_fabricator.rb
+++ b/spec/fabricators/conversation_account_fabricator.rb
@@ -1,6 +1,6 @@
Fabricator(:conversation_account) do
account nil
conversation nil
- participant_account_ids ""
+ participant_account_ids ''
last_status nil
end
diff --git a/spec/fabricators/custom_emoji_category_fabricator.rb b/spec/fabricators/custom_emoji_category_fabricator.rb
index f593b95ed..119c343cf 100644
--- a/spec/fabricators/custom_emoji_category_fabricator.rb
+++ b/spec/fabricators/custom_emoji_category_fabricator.rb
@@ -1,3 +1,3 @@
Fabricator(:custom_emoji_category) do
- name "MyString"
+ name 'MyString'
end
diff --git a/spec/fabricators/domain_allow_fabricator.rb b/spec/fabricators/domain_allow_fabricator.rb
index 6226b1e20..6f62ce3b8 100644
--- a/spec/fabricators/domain_allow_fabricator.rb
+++ b/spec/fabricators/domain_allow_fabricator.rb
@@ -1,3 +1,3 @@
Fabricator(:domain_allow) do
- domain "MyString"
+ domain 'MyString'
end
diff --git a/spec/fabricators/encrypted_message_fabricator.rb b/spec/fabricators/encrypted_message_fabricator.rb
index e65f66302..4de0d7add 100644
--- a/spec/fabricators/encrypted_message_fabricator.rb
+++ b/spec/fabricators/encrypted_message_fabricator.rb
@@ -3,6 +3,6 @@ Fabricator(:encrypted_message) do
from_account
from_device_id { Faker::Number.number(digits: 5) }
type 0
- body ""
- message_franking ""
+ body ''
+ message_franking ''
end
diff --git a/spec/fabricators/identity_fabricator.rb b/spec/fabricators/identity_fabricator.rb
index bc832df9f..fcfb15518 100644
--- a/spec/fabricators/identity_fabricator.rb
+++ b/spec/fabricators/identity_fabricator.rb
@@ -1,5 +1,5 @@
Fabricator(:identity) do
user nil
- provider "MyString"
- uid "MyString"
+ provider 'MyString'
+ uid 'MyString'
end
diff --git a/spec/fabricators/ip_block_fabricator.rb b/spec/fabricators/ip_block_fabricator.rb
index 1797f6877..5bd018f9c 100644
--- a/spec/fabricators/ip_block_fabricator.rb
+++ b/spec/fabricators/ip_block_fabricator.rb
@@ -1,6 +1,6 @@
Fabricator(:ip_block) do
- ip ""
- severity ""
- expires_at "2020-10-08 22:20:37"
- comment "MyText"
+ ip ''
+ severity ''
+ expires_at '2020-10-08 22:20:37'
+ comment 'MyText'
end
diff --git a/spec/fabricators/list_fabricator.rb b/spec/fabricators/list_fabricator.rb
index c3db690fa..4ad29a386 100644
--- a/spec/fabricators/list_fabricator.rb
+++ b/spec/fabricators/list_fabricator.rb
@@ -1,4 +1,4 @@
Fabricator(:list) do
account
- title "MyString"
+ title 'MyString'
end
diff --git a/spec/fabricators/relay_fabricator.rb b/spec/fabricators/relay_fabricator.rb
index 488913f77..d6255866c 100644
--- a/spec/fabricators/relay_fabricator.rb
+++ b/spec/fabricators/relay_fabricator.rb
@@ -1,4 +1,4 @@
Fabricator(:relay) do
- inbox_url "https://example.com/inbox"
+ inbox_url 'https://example.com/inbox'
state :idle
end
diff --git a/spec/fabricators/report_fabricator.rb b/spec/fabricators/report_fabricator.rb
index 2c7101e09..3011c49c6 100644
--- a/spec/fabricators/report_fabricator.rb
+++ b/spec/fabricators/report_fabricator.rb
@@ -1,6 +1,6 @@
Fabricator(:report) do
account
target_account { Fabricate(:account) }
- comment "You nasty"
+ comment 'You nasty'
action_taken_at nil
end
diff --git a/spec/fabricators/report_note_fabricator.rb b/spec/fabricators/report_note_fabricator.rb
index e139efffb..33f384074 100644
--- a/spec/fabricators/report_note_fabricator.rb
+++ b/spec/fabricators/report_note_fabricator.rb
@@ -1,5 +1,5 @@
Fabricator(:report_note) do
report
account { Fabricate(:account) }
- content "Test Content"
+ content 'Test Content'
end
diff --git a/spec/fabricators/session_activation_fabricator.rb b/spec/fabricators/session_activation_fabricator.rb
index 526faaec2..a7fc3b017 100644
--- a/spec/fabricators/session_activation_fabricator.rb
+++ b/spec/fabricators/session_activation_fabricator.rb
@@ -1,4 +1,4 @@
Fabricator(:session_activation) do
user
- session_id "MyString"
+ session_id 'MyString'
end
diff --git a/spec/fabricators/status_edit_fabricator.rb b/spec/fabricators/status_edit_fabricator.rb
index 3141759e5..0e5796b23 100644
--- a/spec/fabricators/status_edit_fabricator.rb
+++ b/spec/fabricators/status_edit_fabricator.rb
@@ -1,7 +1,7 @@
Fabricator(:status_edit) do
status nil
account nil
- text "MyText"
- spoiler_text "MyText"
+ text 'MyText'
+ spoiler_text 'MyText'
media_attachments_changed false
end
diff --git a/spec/fabricators/status_fabricator.rb b/spec/fabricators/status_fabricator.rb
index 04bbbcf4b..8a0a8aa55 100644
--- a/spec/fabricators/status_fabricator.rb
+++ b/spec/fabricators/status_fabricator.rb
@@ -1,6 +1,6 @@
Fabricator(:status) do
account
- text "Lorem ipsum dolor sit amet"
+ text 'Lorem ipsum dolor sit amet'
after_build do |status|
status.uri = Faker::Internet.device_token if !status.account.local? && status.uri.nil?
diff --git a/spec/fabricators/status_stat_fabricator.rb b/spec/fabricators/status_stat_fabricator.rb
index 9c67fd404..feba9fbca 100644
--- a/spec/fabricators/status_stat_fabricator.rb
+++ b/spec/fabricators/status_stat_fabricator.rb
@@ -1,6 +1,6 @@
Fabricator(:status_stat) do
status_id nil
- replies_count ""
- reblogs_count ""
- favourites_count ""
+ replies_count ''
+ reblogs_count ''
+ favourites_count ''
end
diff --git a/spec/fabricators/user_fabricator.rb b/spec/fabricators/user_fabricator.rb
index 10ad2c53a..93ce07a74 100644
--- a/spec/fabricators/user_fabricator.rb
+++ b/spec/fabricators/user_fabricator.rb
@@ -1,7 +1,7 @@
Fabricator(:user) do
account { Fabricate.build(:account, user: nil) }
email { sequence(:email) { |i| "#{i}#{Faker::Internet.email}" } }
- password "123456789"
+ password '123456789'
confirmed_at { Time.zone.now }
agreement true
end
diff --git a/spec/fabricators/user_role_fabricator.rb b/spec/fabricators/user_role_fabricator.rb
index ed0a7dc1f..592b4edca 100644
--- a/spec/fabricators/user_role_fabricator.rb
+++ b/spec/fabricators/user_role_fabricator.rb
@@ -1,5 +1,5 @@
Fabricator(:user_role) do
- name "MyString"
- color ""
+ name 'MyString'
+ color ''
permissions 0
end
diff --git a/spec/features/log_in_spec.rb b/spec/features/log_in_spec.rb
index 329cdf34c..5ae738ee2 100644
--- a/spec/features/log_in_spec.rb
+++ b/spec/features/log_in_spec.rb
@@ -7,8 +7,8 @@ describe 'Log in' do
subject { page }
- let(:email) { "test@example.com" }
- let(:password) { "password" }
+ let(:email) { 'test@example.com' }
+ let(:password) { 'password' }
let(:confirmed_at) { Time.zone.now }
before do
diff --git a/spec/helpers/accounts_helper_spec.rb b/spec/helpers/accounts_helper_spec.rb
index 2b35b23b7..1f412a39f 100644
--- a/spec/helpers/accounts_helper_spec.rb
+++ b/spec/helpers/accounts_helper_spec.rb
@@ -13,15 +13,15 @@ RSpec.describe AccountsHelper, type: :helper do
describe '#display_name' do
it 'uses the display name when it exists' do
- account = Account.new(display_name: "Display", username: "Username")
+ account = Account.new(display_name: 'Display', username: 'Username')
- expect(helper.display_name(account)).to eq "Display"
+ expect(helper.display_name(account)).to eq 'Display'
end
it 'uses the username when display name is nil' do
- account = Account.new(display_name: nil, username: "Username")
+ account = Account.new(display_name: nil, username: 'Username')
- expect(helper.display_name(account)).to eq "Username"
+ expect(helper.display_name(account)).to eq 'Username'
end
end
diff --git a/spec/helpers/application_helper_spec.rb b/spec/helpers/application_helper_spec.rb
index 1dbd985bf..b335a5e45 100644
--- a/spec/helpers/application_helper_spec.rb
+++ b/spec/helpers/application_helper_spec.rb
@@ -5,8 +5,8 @@ describe ApplicationHelper do
it 'returns active when on the current page' do
allow(helper).to receive(:current_page?).and_return(true)
- result = helper.active_nav_class("/test")
- expect(result).to eq "active"
+ result = helper.active_nav_class('/test')
+ expect(result).to eq 'active'
end
it 'returns active when on a current page' do
@@ -14,14 +14,14 @@ describe ApplicationHelper do
allow(helper).to receive(:current_page?).with('/test').and_return(true)
result = helper.active_nav_class('/foo', '/test')
- expect(result).to eq "active"
+ expect(result).to eq 'active'
end
it 'returns empty string when not on current page' do
allow(helper).to receive(:current_page?).and_return(false)
- result = helper.active_nav_class("/test")
- expect(result).to eq ""
+ result = helper.active_nav_class('/test')
+ expect(result).to eq ''
end
end
diff --git a/spec/lib/feed_manager_spec.rb b/spec/lib/feed_manager_spec.rb
index eb55c3983..7195cec06 100644
--- a/spec/lib/feed_manager_spec.rb
+++ b/spec/lib/feed_manager_spec.rb
@@ -416,7 +416,7 @@ RSpec.describe FeedManager do
FeedManager.instance.merge_into_home(account, reblog.account)
- expect(redis.zscore("feed:home:0", reblog.id)).to eq nil
+ expect(redis.zscore('feed:home:0', reblog.id)).to eq nil
end
end
diff --git a/spec/mailers/notification_mailer_spec.rb b/spec/mailers/notification_mailer_spec.rb
index 29bdc349b..6746871a3 100644
--- a/spec/mailers/notification_mailer_spec.rb
+++ b/spec/mailers/notification_mailer_spec.rb
@@ -1,4 +1,4 @@
-require "rails_helper"
+require 'rails_helper'
RSpec.describe NotificationMailer, type: :mailer do
let(:receiver) { Fabricate(:user) }
@@ -19,69 +19,69 @@ RSpec.describe NotificationMailer, type: :mailer do
end
end
- describe "mention" do
+ describe 'mention' do
let(:mention) { Mention.create!(account: receiver.account, status: foreign_status) }
let(:mail) { NotificationMailer.mention(receiver.account, Notification.create!(account: receiver.account, activity: mention)) }
include_examples 'localized subject', 'notification_mailer.mention.subject', name: 'bob'
- it "renders the headers" do
- expect(mail.subject).to eq("You were mentioned by bob")
+ it 'renders the headers' do
+ expect(mail.subject).to eq('You were mentioned by bob')
expect(mail.to).to eq([receiver.email])
end
- it "renders the body" do
- expect(mail.body.encoded).to match("You were mentioned by bob")
+ it 'renders the body' do
+ expect(mail.body.encoded).to match('You were mentioned by bob')
expect(mail.body.encoded).to include 'The body of the foreign status'
end
end
- describe "follow" do
+ describe 'follow' do
let(:follow) { sender.follow!(receiver.account) }
let(:mail) { NotificationMailer.follow(receiver.account, Notification.create!(account: receiver.account, activity: follow)) }
include_examples 'localized subject', 'notification_mailer.follow.subject', name: 'bob'
- it "renders the headers" do
- expect(mail.subject).to eq("bob is now following you")
+ it 'renders the headers' do
+ expect(mail.subject).to eq('bob is now following you')
expect(mail.to).to eq([receiver.email])
end
- it "renders the body" do
- expect(mail.body.encoded).to match("bob is now following you")
+ it 'renders the body' do
+ expect(mail.body.encoded).to match('bob is now following you')
end
end
- describe "favourite" do
+ describe 'favourite' do
let(:favourite) { Favourite.create!(account: sender, status: own_status) }
let(:mail) { NotificationMailer.favourite(own_status.account, Notification.create!(account: receiver.account, activity: favourite)) }
include_examples 'localized subject', 'notification_mailer.favourite.subject', name: 'bob'
- it "renders the headers" do
- expect(mail.subject).to eq("bob favourited your post")
+ it 'renders the headers' do
+ expect(mail.subject).to eq('bob favourited your post')
expect(mail.to).to eq([receiver.email])
end
- it "renders the body" do
- expect(mail.body.encoded).to match("Your post was favourited by bob")
+ it 'renders the body' do
+ expect(mail.body.encoded).to match('Your post was favourited by bob')
expect(mail.body.encoded).to include 'The body of the own status'
end
end
- describe "reblog" do
+ describe 'reblog' do
let(:reblog) { Status.create!(account: sender, reblog: own_status) }
let(:mail) { NotificationMailer.reblog(own_status.account, Notification.create!(account: receiver.account, activity: reblog)) }
include_examples 'localized subject', 'notification_mailer.reblog.subject', name: 'bob'
- it "renders the headers" do
- expect(mail.subject).to eq("bob boosted your post")
+ it 'renders the headers' do
+ expect(mail.subject).to eq('bob boosted your post')
expect(mail.to).to eq([receiver.email])
end
- it "renders the body" do
- expect(mail.body.encoded).to match("Your post was boosted by bob")
+ it 'renders the body' do
+ expect(mail.body.encoded).to match('Your post was boosted by bob')
expect(mail.body.encoded).to include 'The body of the own status'
end
end
@@ -98,7 +98,7 @@ RSpec.describe NotificationMailer, type: :mailer do
end
it 'renders the body' do
- expect(mail.body.encoded).to match("bob has requested to follow you")
+ expect(mail.body.encoded).to match('bob has requested to follow you')
end
end
end
diff --git a/spec/mailers/user_mailer_spec.rb b/spec/mailers/user_mailer_spec.rb
index 2ed33c1e4..9c22f60f1 100644
--- a/spec/mailers/user_mailer_spec.rb
+++ b/spec/mailers/user_mailer_spec.rb
@@ -90,7 +90,7 @@ describe UserMailer, type: :mailer do
it 'renders warning notification' do
receiver.update!(locale: nil)
- expect(mail.body.encoded).to include I18n.t("user_mailer.warning.title.suspend", acct: receiver.account.acct)
+ expect(mail.body.encoded).to include I18n.t('user_mailer.warning.title.suspend', acct: receiver.account.acct)
expect(mail.body.encoded).to include strike.text
end
end
diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb
index 694432a1e..763835618 100644
--- a/spec/models/account_spec.rb
+++ b/spec/models/account_spec.rb
@@ -345,9 +345,9 @@ RSpec.describe Account, type: :model do
before do
_missing = Fabricate(
:account,
- display_name: "Missing",
- username: "missing",
- domain: "missing.com"
+ display_name: 'Missing',
+ username: 'missing',
+ domain: 'missing.com'
)
end
@@ -405,58 +405,58 @@ RSpec.describe Account, type: :model do
it 'finds accounts with matching display_name' do
match = Fabricate(
:account,
- display_name: "Display Name",
- username: "username",
- domain: "example.com"
+ display_name: 'Display Name',
+ username: 'username',
+ domain: 'example.com'
)
- results = Account.search_for("display")
+ results = Account.search_for('display')
expect(results).to eq [match]
end
it 'finds accounts with matching username' do
match = Fabricate(
:account,
- display_name: "Display Name",
- username: "username",
- domain: "example.com"
+ display_name: 'Display Name',
+ username: 'username',
+ domain: 'example.com'
)
- results = Account.search_for("username")
+ results = Account.search_for('username')
expect(results).to eq [match]
end
it 'finds accounts with matching domain' do
match = Fabricate(
:account,
- display_name: "Display Name",
- username: "username",
- domain: "example.com"
+ display_name: 'Display Name',
+ username: 'username',
+ domain: 'example.com'
)
- results = Account.search_for("example")
+ results = Account.search_for('example')
expect(results).to eq [match]
end
it 'limits by 10 by default' do
- 11.times.each { Fabricate(:account, display_name: "Display Name") }
- results = Account.search_for("display")
+ 11.times.each { Fabricate(:account, display_name: 'Display Name') }
+ results = Account.search_for('display')
expect(results.size).to eq 10
end
it 'accepts arbitrary limits' do
- 2.times.each { Fabricate(:account, display_name: "Display Name") }
- results = Account.search_for("display", limit: 1)
+ 2.times.each { Fabricate(:account, display_name: 'Display Name') }
+ results = Account.search_for('display', limit: 1)
expect(results.size).to eq 1
end
it 'ranks multiple matches higher' do
matches = [
- { username: "username", display_name: "username" },
- { display_name: "Display Name", username: "username", domain: "example.com" },
+ { username: 'username', display_name: 'username' },
+ { display_name: 'Display Name', username: 'username', domain: 'example.com' },
].map(&method(:Fabricate).curry(2).call(:account))
- results = Account.search_for("username")
+ results = Account.search_for('username')
expect(results).to eq matches
end
end
@@ -582,23 +582,23 @@ RSpec.describe Account, type: :model do
end
it 'limits by 10 by default' do
- 11.times { Fabricate(:account, display_name: "Display Name") }
- results = Account.advanced_search_for("display", account)
+ 11.times { Fabricate(:account, display_name: 'Display Name') }
+ results = Account.advanced_search_for('display', account)
expect(results.size).to eq 10
end
it 'accepts arbitrary limits' do
- 2.times { Fabricate(:account, display_name: "Display Name") }
- results = Account.advanced_search_for("display", account, limit: 1)
+ 2.times { Fabricate(:account, display_name: 'Display Name') }
+ results = Account.advanced_search_for('display', account, limit: 1)
expect(results.size).to eq 1
end
it 'ranks followed accounts higher' do
- match = Fabricate(:account, username: "Matching")
- followed_match = Fabricate(:account, username: "Matcher")
+ match = Fabricate(:account, username: 'Matching')
+ followed_match = Fabricate(:account, username: 'Matcher')
Fabricate(:follow, account: account, target_account: followed_match)
- results = Account.advanced_search_for("match", account)
+ results = Account.advanced_search_for('match', account)
expect(results).to eq [followed_match, match]
expect(results.first.rank).to be > results.last.rank
end
diff --git a/spec/models/media_attachment_spec.rb b/spec/models/media_attachment_spec.rb
index 29fd313ae..d1a94d41a 100644
--- a/spec/models/media_attachment_spec.rb
+++ b/spec/models/media_attachment_spec.rb
@@ -94,8 +94,8 @@ RSpec.describe MediaAttachment, type: :model do
end
it 'sets meta' do
- expect(media.file.meta["original"]["width"]).to eq 128
- expect(media.file.meta["original"]["height"]).to eq 128
+ expect(media.file.meta['original']['width']).to eq 128
+ expect(media.file.meta['original']['height']).to eq 128
end
end
@@ -118,9 +118,9 @@ RSpec.describe MediaAttachment, type: :model do
end
it 'sets meta' do
- expect(media.file.meta["original"]["width"]).to eq fixture[:width]
- expect(media.file.meta["original"]["height"]).to eq fixture[:height]
- expect(media.file.meta["original"]["aspect"]).to eq fixture[:aspect]
+ expect(media.file.meta['original']['width']).to eq fixture[:width]
+ expect(media.file.meta['original']['height']).to eq fixture[:height]
+ expect(media.file.meta['original']['aspect']).to eq fixture[:aspect]
end
end
end
@@ -154,12 +154,12 @@ RSpec.describe MediaAttachment, type: :model do
let(:media) { MediaAttachment.create(account: Fabricate(:account), file: attachment_fixture('attachment.jpg')) }
it 'sets meta for different style' do
- expect(media.file.meta["original"]["width"]).to eq 600
- expect(media.file.meta["original"]["height"]).to eq 400
- expect(media.file.meta["original"]["aspect"]).to eq 1.5
- expect(media.file.meta["small"]["width"]).to eq 588
- expect(media.file.meta["small"]["height"]).to eq 392
- expect(media.file.meta["small"]["aspect"]).to eq 1.5
+ expect(media.file.meta['original']['width']).to eq 600
+ expect(media.file.meta['original']['height']).to eq 400
+ expect(media.file.meta['original']['aspect']).to eq 1.5
+ expect(media.file.meta['small']['width']).to eq 588
+ expect(media.file.meta['small']['height']).to eq 392
+ expect(media.file.meta['small']['aspect']).to eq 1.5
end
it 'gives the file a random name' do
diff --git a/spec/models/web/push_subscription_spec.rb b/spec/models/web/push_subscription_spec.rb
index bd5719593..eeadbb71c 100644
--- a/spec/models/web/push_subscription_spec.rb
+++ b/spec/models/web/push_subscription_spec.rb
@@ -29,7 +29,7 @@ RSpec.describe Web::PushSubscription, type: :model do
context "when notification is a #{type}" do
let(:notification_type) { type }
- it "returns boolean corresponding to alert setting" do
+ it 'returns boolean corresponding to alert setting' do
expect(subject.pushable?(notification)).to eq data[:alerts][type]
end
end
diff --git a/spec/models/webauthn_credentials_spec.rb b/spec/models/webauthn_credentials_spec.rb
index a63ae6cd2..e070a6b60 100644
--- a/spec/models/webauthn_credentials_spec.rb
+++ b/spec/models/webauthn_credentials_spec.rb
@@ -35,8 +35,8 @@ RSpec.describe WebauthnCredential, type: :model do
end
it 'is invalid if already exist a webauthn credential with the same external id' do
- existing_webauthn_credential = Fabricate(:webauthn_credential, external_id: "_Typ0ygudDnk9YUVWLQayw")
- new_webauthn_credential = Fabricate.build(:webauthn_credential, external_id: "_Typ0ygudDnk9YUVWLQayw")
+ existing_webauthn_credential = Fabricate(:webauthn_credential, external_id: '_Typ0ygudDnk9YUVWLQayw')
+ new_webauthn_credential = Fabricate.build(:webauthn_credential, external_id: '_Typ0ygudDnk9YUVWLQayw')
new_webauthn_credential.valid?
diff --git a/spec/presenters/instance_presenter_spec.rb b/spec/presenters/instance_presenter_spec.rb
index 659c2cc2f..a451b5cba 100644
--- a/spec/presenters/instance_presenter_spec.rb
+++ b/spec/presenters/instance_presenter_spec.rb
@@ -10,9 +10,9 @@ describe InstancePresenter do
Setting.site_short_description = site_description
end
- it "delegates site_description to Setting" do
- Setting.site_short_description = "Site desc"
- expect(instance_presenter.description).to eq "Site desc"
+ it 'delegates site_description to Setting' do
+ Setting.site_short_description = 'Site desc'
+ expect(instance_presenter.description).to eq 'Site desc'
end
end
@@ -23,9 +23,9 @@ describe InstancePresenter do
Setting.site_extended_description = site_extended_description
end
- it "delegates site_extended_description to Setting" do
- Setting.site_extended_description = "Extended desc"
- expect(instance_presenter.extended_description).to eq "Extended desc"
+ it 'delegates site_extended_description to Setting' do
+ Setting.site_extended_description = 'Extended desc'
+ expect(instance_presenter.extended_description).to eq 'Extended desc'
end
end
@@ -36,9 +36,9 @@ describe InstancePresenter do
Setting.site_contact_email = site_contact_email
end
- it "delegates contact_email to Setting" do
- Setting.site_contact_email = "admin@example.com"
- expect(instance_presenter.contact.email).to eq "admin@example.com"
+ it 'delegates contact_email to Setting' do
+ Setting.site_contact_email = 'admin@example.com'
+ expect(instance_presenter.contact.email).to eq 'admin@example.com'
end
end
@@ -49,15 +49,15 @@ describe InstancePresenter do
Setting.site_contact_username = site_contact_username
end
- it "returns the account for the site contact username" do
- Setting.site_contact_username = "aaa"
- account = Fabricate(:account, username: "aaa")
+ it 'returns the account for the site contact username' do
+ Setting.site_contact_username = 'aaa'
+ account = Fabricate(:account, username: 'aaa')
expect(instance_presenter.contact.account).to eq(account)
end
end
describe '#user_count' do
- it "returns the number of site users" do
+ it 'returns the number of site users' do
Rails.cache.write 'user_count', 123
expect(instance_presenter.user_count).to eq(123)
@@ -65,7 +65,7 @@ describe InstancePresenter do
end
describe '#status_count' do
- it "returns the number of local statuses" do
+ it 'returns the number of local statuses' do
Rails.cache.write 'local_status_count', 234
expect(instance_presenter.status_count).to eq(234)
@@ -73,7 +73,7 @@ describe InstancePresenter do
end
describe '#domain_count' do
- it "returns the number of known domains" do
+ it 'returns the number of known domains' do
Rails.cache.write 'distinct_domain_count', 345
expect(instance_presenter.domain_count).to eq(345)
diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb
index 20e48b9a3..9a14fc3b1 100644
--- a/spec/rails_helper.rb
+++ b/spec/rails_helper.rb
@@ -1,7 +1,7 @@
ENV['RAILS_ENV'] ||= 'test'
require File.expand_path('../config/environment', __dir__)
-abort("The Rails environment is running in production mode!") if Rails.env.production?
+abort('The Rails environment is running in production mode!') if Rails.env.production?
require 'spec_helper'
require 'rspec/rails'
diff --git a/spec/requests/catch_all_route_request_spec.rb b/spec/requests/catch_all_route_request_spec.rb
index f965f5522..fb18965d8 100644
--- a/spec/requests/catch_all_route_request_spec.rb
+++ b/spec/requests/catch_all_route_request_spec.rb
@@ -1,21 +1,21 @@
-require "rails_helper"
+require 'rails_helper'
-describe "The catch all route" do
- describe "with a simple value" do
- it "returns a 404 page as html" do
- get "/test"
+describe 'The catch all route' do
+ describe 'with a simple value' do
+ it 'returns a 404 page as html' do
+ get '/test'
expect(response.status).to eq 404
- expect(response.media_type).to eq "text/html"
+ expect(response.media_type).to eq 'text/html'
end
end
- describe "with an implied format" do
- it "returns a 404 page as html" do
- get "/test.test"
+ describe 'with an implied format' do
+ it 'returns a 404 page as html' do
+ get '/test.test'
expect(response.status).to eq 404
- expect(response.media_type).to eq "text/html"
+ expect(response.media_type).to eq 'text/html'
end
end
end
diff --git a/spec/requests/host_meta_request_spec.rb b/spec/requests/host_meta_request_spec.rb
index 0ca641461..60153ba8c 100644
--- a/spec/requests/host_meta_request_spec.rb
+++ b/spec/requests/host_meta_request_spec.rb
@@ -1,12 +1,12 @@
-require "rails_helper"
+require 'rails_helper'
-describe "The host_meta route" do
- describe "requested without accepts headers" do
- it "returns an xml response" do
+describe 'The host_meta route' do
+ describe 'requested without accepts headers' do
+ it 'returns an xml response' do
get host_meta_url
expect(response).to have_http_status(200)
- expect(response.media_type).to eq "application/xrd+xml"
+ expect(response.media_type).to eq 'application/xrd+xml'
end
end
end
diff --git a/spec/requests/localization_spec.rb b/spec/requests/localization_spec.rb
index 0bc2786ac..39eeee5f0 100644
--- a/spec/requests/localization_spec.rb
+++ b/spec/requests/localization_spec.rb
@@ -10,7 +10,7 @@ describe 'Localization' do
it 'uses a specific region when provided' do
headers = { 'Accept-Language' => 'zh-HK' }
- get "/auth/sign_in", headers: headers
+ get '/auth/sign_in', headers: headers
expect(response.body).to include(
I18n.t('auth.login', locale: 'zh-HK')
@@ -20,7 +20,7 @@ describe 'Localization' do
it 'falls back to a locale when region missing' do
headers = { 'Accept-Language' => 'es-FAKE' }
- get "/auth/sign_in", headers: headers
+ get '/auth/sign_in', headers: headers
expect(response.body).to include(
I18n.t('auth.login', locale: 'es')
@@ -30,7 +30,7 @@ describe 'Localization' do
it 'falls back to english when locale is missing' do
headers = { 'Accept-Language' => '12-FAKE' }
- get "/auth/sign_in", headers: headers
+ get '/auth/sign_in', headers: headers
expect(response.body).to include(
I18n.t('auth.login', locale: 'en')
diff --git a/spec/services/account_search_service_spec.rb b/spec/services/account_search_service_spec.rb
index 81cbc175e..d3b5baad6 100644
--- a/spec/services/account_search_service_spec.rb
+++ b/spec/services/account_search_service_spec.rb
@@ -76,7 +76,7 @@ describe AccountSearchService, type: :service do
expect(results).to eq [partial]
end
- it "does not return suspended remote accounts" do
+ it 'does not return suspended remote accounts' do
remote = Fabricate(:account, username: 'a', domain: 'remote', display_name: 'e', suspended: true)
results = subject.call('a@example.com', nil, limit: 2)
diff --git a/spec/services/activitypub/fetch_remote_status_service_spec.rb b/spec/services/activitypub/fetch_remote_status_service_spec.rb
index e02054672..4f3503ac2 100644
--- a/spec/services/activitypub/fetch_remote_status_service_spec.rb
+++ b/spec/services/activitypub/fetch_remote_status_service_spec.rb
@@ -11,7 +11,7 @@ RSpec.describe ActivityPub::FetchRemoteStatusService, type: :service do
let(:note) do
{
'@context': 'https://www.w3.org/ns/activitystreams',
- id: "https://foo.bar/@foo/1234",
+ id: 'https://foo.bar/@foo/1234',
type: 'Note',
content: 'Lorem ipsum',
attributedTo: ActivityPub::TagManager.instance.uri_for(sender),
@@ -46,7 +46,7 @@ RSpec.describe ActivityPub::FetchRemoteStatusService, type: :service do
let(:object) do
{
'@context': 'https://www.w3.org/ns/activitystreams',
- id: "https://foo.bar/@foo/1234",
+ id: 'https://foo.bar/@foo/1234',
type: 'Video',
name: 'Nyan Cat 10 hours remix',
attributedTo: ActivityPub::TagManager.instance.uri_for(sender),
@@ -54,13 +54,13 @@ RSpec.describe ActivityPub::FetchRemoteStatusService, type: :service do
{
type: 'Link',
mimeType: 'application/x-bittorrent',
- href: "https://foo.bar/12345.torrent",
+ href: 'https://foo.bar/12345.torrent',
},
{
type: 'Link',
mimeType: 'text/html',
- href: "https://foo.bar/watch?v=12345",
+ href: 'https://foo.bar/watch?v=12345',
},
],
}
@@ -70,8 +70,8 @@ RSpec.describe ActivityPub::FetchRemoteStatusService, type: :service do
status = sender.statuses.first
expect(status).to_not be_nil
- expect(status.url).to eq "https://foo.bar/watch?v=12345"
- expect(strip_tags(status.text)).to eq "Nyan Cat 10 hours remixhttps://foo.bar/watch?v=12345"
+ expect(status.url).to eq 'https://foo.bar/watch?v=12345'
+ expect(strip_tags(status.text)).to eq 'Nyan Cat 10 hours remixhttps://foo.bar/watch?v=12345'
end
end
@@ -79,7 +79,7 @@ RSpec.describe ActivityPub::FetchRemoteStatusService, type: :service do
let(:object) do
{
'@context': 'https://www.w3.org/ns/activitystreams',
- id: "https://foo.bar/@foo/1234",
+ id: 'https://foo.bar/@foo/1234',
type: 'Audio',
name: 'Nyan Cat 10 hours remix',
attributedTo: ActivityPub::TagManager.instance.uri_for(sender),
@@ -87,13 +87,13 @@ RSpec.describe ActivityPub::FetchRemoteStatusService, type: :service do
{
type: 'Link',
mimeType: 'application/x-bittorrent',
- href: "https://foo.bar/12345.torrent",
+ href: 'https://foo.bar/12345.torrent',
},
{
type: 'Link',
mimeType: 'text/html',
- href: "https://foo.bar/watch?v=12345",
+ href: 'https://foo.bar/watch?v=12345',
},
],
}
@@ -103,8 +103,8 @@ RSpec.describe ActivityPub::FetchRemoteStatusService, type: :service do
status = sender.statuses.first
expect(status).to_not be_nil
- expect(status.url).to eq "https://foo.bar/watch?v=12345"
- expect(strip_tags(status.text)).to eq "Nyan Cat 10 hours remixhttps://foo.bar/watch?v=12345"
+ expect(status.url).to eq 'https://foo.bar/watch?v=12345'
+ expect(strip_tags(status.text)).to eq 'Nyan Cat 10 hours remixhttps://foo.bar/watch?v=12345'
end
end
@@ -112,7 +112,7 @@ RSpec.describe ActivityPub::FetchRemoteStatusService, type: :service do
let(:object) do
{
'@context': 'https://www.w3.org/ns/activitystreams',
- id: "https://foo.bar/@foo/1234",
+ id: 'https://foo.bar/@foo/1234',
type: 'Event',
name: "Let's change the world",
attributedTo: ActivityPub::TagManager.instance.uri_for(sender),
@@ -123,7 +123,7 @@ RSpec.describe ActivityPub::FetchRemoteStatusService, type: :service do
status = sender.statuses.first
expect(status).to_not be_nil
- expect(status.url).to eq "https://foo.bar/@foo/1234"
+ expect(status.url).to eq 'https://foo.bar/@foo/1234'
expect(strip_tags(status.text)).to eq "Let's change the worldhttps://foo.bar/@foo/1234"
end
end
@@ -132,7 +132,7 @@ RSpec.describe ActivityPub::FetchRemoteStatusService, type: :service do
let(:note) do
{
'@context': 'https://www.w3.org/ns/activitystreams',
- id: "https://real.address/@foo/1234",
+ id: 'https://real.address/@foo/1234',
type: 'Note',
content: 'Lorem ipsum',
attributedTo: ActivityPub::TagManager.instance.uri_for(sender),
@@ -154,7 +154,7 @@ RSpec.describe ActivityPub::FetchRemoteStatusService, type: :service do
let(:object) do
{
'@context': 'https://www.w3.org/ns/activitystreams',
- id: "https://foo.bar/@foo/1234/create",
+ id: 'https://foo.bar/@foo/1234/create',
type: 'Create',
actor: ActivityPub::TagManager.instance.uri_for(sender),
object: note,
@@ -174,11 +174,11 @@ RSpec.describe ActivityPub::FetchRemoteStatusService, type: :service do
let(:object) do
{
'@context': 'https://www.w3.org/ns/activitystreams',
- id: "https://foo.bar/@foo/1234/create",
+ id: 'https://foo.bar/@foo/1234/create',
type: 'Create',
actor: ActivityPub::TagManager.instance.uri_for(sender),
object: {
- id: "https://real.address/@foo/1234",
+ id: 'https://real.address/@foo/1234',
type: 'Note',
content: 'Lorem ipsum',
attributedTo: ActivityPub::TagManager.instance.uri_for(sender),
@@ -208,7 +208,7 @@ RSpec.describe ActivityPub::FetchRemoteStatusService, type: :service do
let(:object) do
{
'@context': 'https://www.w3.org/ns/activitystreams',
- id: "https://foo.bar/@foo/1234/create",
+ id: 'https://foo.bar/@foo/1234/create',
type: 'Create',
actor: ActivityPub::TagManager.instance.uri_for(sender),
object: note.merge(updated: '2021-09-08T22:39:25Z'),
@@ -233,7 +233,7 @@ RSpec.describe ActivityPub::FetchRemoteStatusService, type: :service do
let(:object) do
{
'@context': 'https://www.w3.org/ns/activitystreams',
- id: "https://foo.bar/@foo/1",
+ id: 'https://foo.bar/@foo/1',
type: 'Note',
content: 'Lorem ipsum',
inReplyTo: 'https://foo.bar/@foo/2',
@@ -269,7 +269,7 @@ RSpec.describe ActivityPub::FetchRemoteStatusService, type: :service do
let(:object) do
{
'@context': 'https://www.w3.org/ns/activitystreams',
- id: "https://foo.bar/@foo/1",
+ id: 'https://foo.bar/@foo/1',
type: 'Note',
content: 'Lorem ipsum',
replies: {
diff --git a/spec/services/delete_account_service_spec.rb b/spec/services/delete_account_service_spec.rb
index 1fbe4d07c..cc4b168fc 100644
--- a/spec/services/delete_account_service_spec.rb
+++ b/spec/services/delete_account_service_spec.rb
@@ -59,8 +59,8 @@ RSpec.describe DeleteAccountService, type: :service do
describe '#call on local account' do
before do
- stub_request(:post, "https://alice.com/inbox").to_return(status: 201)
- stub_request(:post, "https://bob.com/inbox").to_return(status: 201)
+ stub_request(:post, 'https://alice.com/inbox').to_return(status: 201)
+ stub_request(:post, 'https://bob.com/inbox').to_return(status: 201)
end
let!(:remote_alice) { Fabricate(:account, inbox_url: 'https://alice.com/inbox', protocol: :activitypub) }
@@ -72,16 +72,16 @@ RSpec.describe DeleteAccountService, type: :service do
it 'sends a delete actor activity to all known inboxes' do
subject
- expect(a_request(:post, "https://alice.com/inbox")).to have_been_made.once
- expect(a_request(:post, "https://bob.com/inbox")).to have_been_made.once
+ expect(a_request(:post, 'https://alice.com/inbox')).to have_been_made.once
+ expect(a_request(:post, 'https://bob.com/inbox')).to have_been_made.once
end
end
end
describe '#call on remote account' do
before do
- stub_request(:post, "https://alice.com/inbox").to_return(status: 201)
- stub_request(:post, "https://bob.com/inbox").to_return(status: 201)
+ stub_request(:post, 'https://alice.com/inbox').to_return(status: 201)
+ stub_request(:post, 'https://bob.com/inbox').to_return(status: 201)
end
include_examples 'common behavior' do
diff --git a/spec/services/favourite_service_spec.rb b/spec/services/favourite_service_spec.rb
index 9781f0d78..8703c2af8 100644
--- a/spec/services/favourite_service_spec.rb
+++ b/spec/services/favourite_service_spec.rb
@@ -23,7 +23,7 @@ RSpec.describe FavouriteService, type: :service do
let(:status) { Fabricate(:status, account: bob) }
before do
- stub_request(:post, "http://example.com/inbox").to_return(status: 200, body: "", headers: {})
+ stub_request(:post, 'http://example.com/inbox').to_return(status: 200, body: '', headers: {})
subject.call(sender, status)
end
@@ -32,7 +32,7 @@ RSpec.describe FavouriteService, type: :service do
end
it 'sends a like activity' do
- expect(a_request(:post, "http://example.com/inbox")).to have_been_made.once
+ expect(a_request(:post, 'http://example.com/inbox')).to have_been_made.once
end
end
end
diff --git a/spec/services/fetch_link_card_service_spec.rb b/spec/services/fetch_link_card_service_spec.rb
index 4914c2753..458473c39 100644
--- a/spec/services/fetch_link_card_service_spec.rb
+++ b/spec/services/fetch_link_card_service_spec.rb
@@ -30,7 +30,7 @@ RSpec.describe FetchLinkCardService, type: :service do
it 'works with SJIS' do
expect(a_request(:get, 'http://example.com/sjis')).to have_been_made.at_least_once
- expect(status.preview_cards.first.title).to eq("SJISのページ")
+ expect(status.preview_cards.first.title).to eq('SJISのページ')
end
end
@@ -39,7 +39,7 @@ RSpec.describe FetchLinkCardService, type: :service do
it 'works with SJIS even with wrong charset header' do
expect(a_request(:get, 'http://example.com/sjis_with_wrong_charset')).to have_been_made.at_least_once
- expect(status.preview_cards.first.title).to eq("SJISのページ")
+ expect(status.preview_cards.first.title).to eq('SJISのページ')
end
end
@@ -48,7 +48,7 @@ RSpec.describe FetchLinkCardService, type: :service do
it 'works with koi8-r' do
expect(a_request(:get, 'http://example.com/koi8-r')).to have_been_made.at_least_once
- expect(status.preview_cards.first.title).to eq("Московя начинаетъ только въ XVI ст. привлекать внимане иностранцевъ.")
+ expect(status.preview_cards.first.title).to eq('Московя начинаетъ только въ XVI ст. привлекать внимане иностранцевъ.')
end
end
@@ -66,7 +66,7 @@ RSpec.describe FetchLinkCardService, type: :service do
it 'works with Japanese path string' do
expect(a_request(:get, 'http://example.com/日本語')).to have_been_made.at_least_once
- expect(status.preview_cards.first.title).to eq("SJISのページ")
+ expect(status.preview_cards.first.title).to eq('SJISのページ')
end
end
diff --git a/spec/services/fetch_oembed_service_spec.rb b/spec/services/fetch_oembed_service_spec.rb
index dcd0f80de..cf46f2d39 100644
--- a/spec/services/fetch_oembed_service_spec.rb
+++ b/spec/services/fetch_oembed_service_spec.rb
@@ -6,9 +6,9 @@ describe FetchOEmbedService, type: :service do
subject { described_class.new }
before do
- stub_request(:get, "https://host.test/provider.json").to_return(status: 404)
- stub_request(:get, "https://host.test/provider.xml").to_return(status: 404)
- stub_request(:get, "https://host.test/empty_provider.json").to_return(status: 200)
+ stub_request(:get, 'https://host.test/provider.json').to_return(status: 404)
+ stub_request(:get, 'https://host.test/provider.xml').to_return(status: 404)
+ stub_request(:get, 'https://host.test/empty_provider.json').to_return(status: 200)
end
describe 'discover_provider' do
diff --git a/spec/services/fetch_remote_status_service_spec.rb b/spec/services/fetch_remote_status_service_spec.rb
index 4f6ad6496..02c62f8d6 100644
--- a/spec/services/fetch_remote_status_service_spec.rb
+++ b/spec/services/fetch_remote_status_service_spec.rb
@@ -7,7 +7,7 @@ RSpec.describe FetchRemoteStatusService, type: :service do
let(:note) do
{
'@context': 'https://www.w3.org/ns/activitystreams',
- id: "https://example.org/@foo/1234",
+ id: 'https://example.org/@foo/1234',
type: 'Note',
content: 'Lorem ipsum',
attributedTo: ActivityPub::TagManager.instance.uri_for(account),
diff --git a/spec/services/follow_service_spec.rb b/spec/services/follow_service_spec.rb
index 412c04d76..59073c27f 100644
--- a/spec/services/follow_service_spec.rb
+++ b/spec/services/follow_service_spec.rb
@@ -140,7 +140,7 @@ RSpec.describe FollowService, type: :service do
let(:bob) { Fabricate(:account, username: 'bob', domain: 'example.com', protocol: :activitypub, inbox_url: 'http://example.com/inbox') }
before do
- stub_request(:post, "http://example.com/inbox").to_return(status: 200, body: "", headers: {})
+ stub_request(:post, 'http://example.com/inbox').to_return(status: 200, body: '', headers: {})
subject.call(sender, bob)
end
diff --git a/spec/services/import_service_spec.rb b/spec/services/import_service_spec.rb
index 399a43036..a12148833 100644
--- a/spec/services/import_service_spec.rb
+++ b/spec/services/import_service_spec.rb
@@ -8,7 +8,7 @@ RSpec.describe ImportService, type: :service do
let!(:eve) { Fabricate(:account, username: 'eve', domain: 'example.com', locked: false, protocol: :activitypub, inbox_url: 'https://example.com/inbox') }
before do
- stub_request(:post, "https://example.com/inbox").to_return(status: 200)
+ stub_request(:post, 'https://example.com/inbox').to_return(status: 200)
end
context 'import old-style list of muted users' do
@@ -186,7 +186,7 @@ RSpec.describe ImportService, type: :service do
# Make sure to not actually go to the remote server
before do
- stub_request(:post, "https://թութ.հայ/inbox").to_return(status: 200)
+ stub_request(:post, 'https://թութ.հայ/inbox').to_return(status: 200)
end
let(:csv) { attachment_fixture('utf8-followers.txt') }
diff --git a/spec/services/post_status_service_spec.rb b/spec/services/post_status_service_spec.rb
index 7bb7dfb1f..0b72253a5 100644
--- a/spec/services/post_status_service_spec.rb
+++ b/spec/services/post_status_service_spec.rb
@@ -5,7 +5,7 @@ RSpec.describe PostStatusService, type: :service do
it 'creates a new status' do
account = Fabricate(:account)
- text = "test status update"
+ text = 'test status update'
status = subject.call(account, text: text)
@@ -16,7 +16,7 @@ RSpec.describe PostStatusService, type: :service do
it 'creates a new response status' do
in_reply_to_status = Fabricate(:status)
account = Fabricate(:account)
- text = "test status update"
+ text = 'test status update'
status = subject.call(account, text: text, thread: in_reply_to_status)
@@ -58,7 +58,7 @@ RSpec.describe PostStatusService, type: :service do
boosted_status = Fabricate(:status)
in_reply_to_status = Fabricate(:status, reblog: boosted_status)
account = Fabricate(:account)
- text = "test status update"
+ text = 'test status update'
status = subject.call(account, text: text, thread: in_reply_to_status)
@@ -75,7 +75,7 @@ RSpec.describe PostStatusService, type: :service do
end
it 'creates a status with spoiler text' do
- spoiler_text = "spoiler text"
+ spoiler_text = 'spoiler text'
status = create_status_with_options(spoiler_text: spoiler_text)
@@ -101,14 +101,14 @@ RSpec.describe PostStatusService, type: :service do
status = create_status_with_options(visibility: :private)
expect(status).to be_persisted
- expect(status.visibility).to eq "private"
+ expect(status.visibility).to eq 'private'
end
it 'creates a status with limited visibility for silenced users' do
status = subject.call(Fabricate(:account, silenced: true), text: 'test', visibility: :public)
expect(status).to be_persisted
- expect(status.visibility).to eq "unlisted"
+ expect(status.visibility).to eq 'unlisted'
end
it 'creates a status for the given application' do
@@ -135,7 +135,7 @@ RSpec.describe PostStatusService, type: :service do
allow(ProcessMentionsService).to receive(:new).and_return(mention_service)
account = Fabricate(:account)
- status = subject.call(account, text: "test status update")
+ status = subject.call(account, text: 'test status update')
expect(ProcessMentionsService).to have_received(:new)
expect(mention_service).to have_received(:call).with(status, save_records: false)
@@ -166,7 +166,7 @@ RSpec.describe PostStatusService, type: :service do
allow(ProcessHashtagsService).to receive(:new).and_return(hashtags_service)
account = Fabricate(:account)
- status = subject.call(account, text: "test status update")
+ status = subject.call(account, text: 'test status update')
expect(ProcessHashtagsService).to have_received(:new)
expect(hashtags_service).to have_received(:call).with(status)
@@ -178,7 +178,7 @@ RSpec.describe PostStatusService, type: :service do
account = Fabricate(:account)
- status = subject.call(account, text: "test status update")
+ status = subject.call(account, text: 'test status update')
expect(DistributionWorker).to have_received(:perform_async).with(status.id)
expect(ActivityPub::DistributionWorker).to have_received(:perform_async).with(status.id)
@@ -188,7 +188,7 @@ RSpec.describe PostStatusService, type: :service do
allow(LinkCrawlWorker).to receive(:perform_async)
account = Fabricate(:account)
- status = subject.call(account, text: "test status update")
+ status = subject.call(account, text: 'test status update')
expect(LinkCrawlWorker).to have_received(:perform_async).with(status.id)
end
@@ -199,7 +199,7 @@ RSpec.describe PostStatusService, type: :service do
status = subject.call(
account,
- text: "test status update",
+ text: 'test status update',
media_ids: [media.id]
)
@@ -212,7 +212,7 @@ RSpec.describe PostStatusService, type: :service do
status = subject.call(
account,
- text: "test status update",
+ text: 'test status update',
media_ids: [media.id]
)
@@ -225,7 +225,7 @@ RSpec.describe PostStatusService, type: :service do
expect do
subject.call(
account,
- text: "test status update",
+ text: 'test status update',
media_ids: [
Fabricate(:media_attachment, account: account),
Fabricate(:media_attachment, account: account),
@@ -250,7 +250,7 @@ RSpec.describe PostStatusService, type: :service do
expect do
subject.call(
account,
- text: "test status update",
+ text: 'test status update',
media_ids: [
video,
image,
diff --git a/spec/services/process_mentions_service_spec.rb b/spec/services/process_mentions_service_spec.rb
index 0dd62c807..6a16928e0 100644
--- a/spec/services/process_mentions_service_spec.rb
+++ b/spec/services/process_mentions_service_spec.rb
@@ -62,7 +62,7 @@ RSpec.describe ProcessMentionsService, type: :service do
context 'with an IDN domain' do
let!(:remote_user) { Fabricate(:account, username: 'sneak', protocol: :activitypub, domain: 'xn--hresiar-mxa.ch', inbox_url: 'http://example.com/inbox') }
- let!(:status) { Fabricate(:status, account: account, text: "Hello @sneak@hæresiar.ch") }
+ let!(:status) { Fabricate(:status, account: account, text: 'Hello @sneak@hæresiar.ch') }
before do
subject.call(status)
@@ -75,7 +75,7 @@ RSpec.describe ProcessMentionsService, type: :service do
context 'with an IDN TLD' do
let!(:remote_user) { Fabricate(:account, username: 'foo', protocol: :activitypub, domain: 'xn--y9a3aq.xn--y9a3aq', inbox_url: 'http://example.com/inbox') }
- let!(:status) { Fabricate(:status, account: account, text: "Hello @foo@հայ.հայ") }
+ let!(:status) { Fabricate(:status, account: account, text: 'Hello @foo@հայ.հայ') }
before do
subject.call(status)
@@ -91,8 +91,8 @@ RSpec.describe ProcessMentionsService, type: :service do
let!(:remote_user) { Fabricate(:account, username: 'remote_user', protocol: :activitypub, domain: 'example.com', inbox_url: 'http://example.com/inbox', last_webfingered_at: nil) }
before do
- stub_request(:get, "https://example.com/.well-known/host-meta").to_return(status: 404)
- stub_request(:get, "https://example.com/.well-known/webfinger?resource=acct:remote_user@example.com").to_return(status: 500)
+ stub_request(:get, 'https://example.com/.well-known/host-meta').to_return(status: 404)
+ stub_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:remote_user@example.com').to_return(status: 500)
subject.call(status)
end
diff --git a/spec/services/resolve_account_service_spec.rb b/spec/services/resolve_account_service_spec.rb
index 1df30ea57..192225229 100644
--- a/spec/services/resolve_account_service_spec.rb
+++ b/spec/services/resolve_account_service_spec.rb
@@ -4,11 +4,11 @@ RSpec.describe ResolveAccountService, type: :service do
subject { described_class.new }
before do
- stub_request(:get, "https://example.com/.well-known/host-meta").to_return(status: 404)
- stub_request(:get, "https://quitter.no/avatar/7477-300-20160211190340.png").to_return(request_fixture('avatar.txt'))
- stub_request(:get, "https://ap.example.com/.well-known/webfinger?resource=acct:foo@ap.example.com").to_return(request_fixture('activitypub-webfinger.txt'))
- stub_request(:get, "https://ap.example.com/users/foo").to_return(request_fixture('activitypub-actor.txt'))
- stub_request(:get, "https://ap.example.com/users/foo.atom").to_return(request_fixture('activitypub-feed.txt'))
+ stub_request(:get, 'https://example.com/.well-known/host-meta').to_return(status: 404)
+ stub_request(:get, 'https://quitter.no/avatar/7477-300-20160211190340.png').to_return(request_fixture('avatar.txt'))
+ stub_request(:get, 'https://ap.example.com/.well-known/webfinger?resource=acct:foo@ap.example.com').to_return(request_fixture('activitypub-webfinger.txt'))
+ stub_request(:get, 'https://ap.example.com/users/foo').to_return(request_fixture('activitypub-actor.txt'))
+ stub_request(:get, 'https://ap.example.com/users/foo.atom').to_return(request_fixture('activitypub-feed.txt'))
stub_request(:get, %r{https://ap.example.com/users/foo/\w+}).to_return(status: 404)
stub_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:hoge@example.com').to_return(status: 410)
end
@@ -56,8 +56,8 @@ RSpec.describe ResolveAccountService, type: :service do
context 'when there is an LRDD endpoint but no resolvable account' do
before do
- stub_request(:get, "https://quitter.no/.well-known/host-meta").to_return(request_fixture('.host-meta.txt'))
- stub_request(:get, "https://quitter.no/.well-known/webfinger?resource=acct:catsrgr8@quitter.no").to_return(status: 404)
+ stub_request(:get, 'https://quitter.no/.well-known/host-meta').to_return(request_fixture('.host-meta.txt'))
+ stub_request(:get, 'https://quitter.no/.well-known/webfinger?resource=acct:catsrgr8@quitter.no').to_return(status: 404)
end
it 'returns nil' do
@@ -67,7 +67,7 @@ RSpec.describe ResolveAccountService, type: :service do
context 'when there is no LRDD endpoint nor resolvable account' do
before do
- stub_request(:get, "https://example.com/.well-known/webfinger?resource=acct:catsrgr8@example.com").to_return(status: 404)
+ stub_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:catsrgr8@example.com').to_return(status: 404)
end
it 'returns nil' do
@@ -153,7 +153,7 @@ RSpec.describe ResolveAccountService, type: :service do
context 'with multiple types' do
before do
- stub_request(:get, "https://ap.example.com/users/foo").to_return(request_fixture('activitypub-actor-individual.txt'))
+ stub_request(:get, 'https://ap.example.com/users/foo').to_return(request_fixture('activitypub-actor-individual.txt'))
end
it 'returns new remote account' do
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index 72c9ce8ae..97b8d83c5 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -12,7 +12,7 @@ end
gc_counter = -1
RSpec.configure do |config|
- config.example_status_persistence_file_path = "tmp/rspec/examples.txt"
+ config.example_status_persistence_file_path = 'tmp/rspec/examples.txt'
config.expect_with :rspec do |expectations|
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
end
@@ -60,7 +60,7 @@ end
def expect_push_bulk_to_match(klass, matcher)
expect(Sidekiq::Client).to receive(:push_bulk).with(hash_including({
- "class" => klass,
- "args" => matcher,
+ 'class' => klass,
+ 'args' => matcher,
}))
end
--
cgit
From 65ba0d92ef78f82a3cf5bf04f13b3d7393da015d Mon Sep 17 00:00:00 2001
From: Nick Schonning
Date: Sun, 19 Feb 2023 20:33:27 -0500
Subject: Enable Rubocop RSpec/NotToNot (#23723)
---
.rubocop.yml | 3 +
.rubocop_todo.yml | 123 ---------------------
.../activitypub/collections_controller_spec.rb | 4 +-
.../activitypub/inboxes_controller_spec.rb | 6 +-
.../account_moderation_notes_controller_spec.rb | 2 +-
spec/controllers/admin/accounts_controller_spec.rb | 12 +-
.../admin/change_email_controller_spec.rb | 2 +-
.../admin/confirmations_controller_spec.rb | 2 +-
.../admin/domain_blocks_controller_spec.rb | 2 +-
.../admin/report_notes_controller_spec.rb | 4 +-
.../settings/profiles_controller_spec.rb | 2 +-
.../well_known/nodeinfo_controller_spec.rb | 2 +-
spec/lib/activitypub/activity/announce_spec.rb | 2 +-
spec/lib/request_spec.rb | 2 +-
spec/lib/status_filter_spec.rb | 4 +-
spec/lib/text_formatter_spec.rb | 2 +-
spec/models/account_spec.rb | 10 +-
spec/models/concerns/account_interactions_spec.rb | 6 +-
spec/models/concerns/remotable_spec.rb | 4 +-
spec/models/public_feed_spec.rb | 28 ++---
spec/models/setting_spec.rb | 4 +-
spec/models/tag_spec.rb | 6 +-
spec/models/user_spec.rb | 4 +-
spec/services/account_search_service_spec.rb | 2 +-
.../activitypub/process_collection_service_spec.rb | 10 +-
.../process_status_update_service_spec.rb | 4 +-
spec/services/block_domain_service_spec.rb | 6 +-
spec/services/clear_domain_media_service_spec.rb | 6 +-
spec/services/import_service_spec.rb | 2 +-
spec/services/post_status_service_spec.rb | 4 +-
spec/services/search_service_spec.rb | 6 +-
.../validators/blacklisted_email_validator_spec.rb | 2 +-
.../disallowed_hashtags_validator_spec.rb | 4 +-
spec/validators/email_mx_validator_spec.rb | 2 +-
spec/validators/follow_limit_validator_spec.rb | 4 +-
spec/validators/poll_validator_spec.rb | 4 +-
spec/validators/status_length_validator_spec.rb | 4 +-
.../unreserved_username_validator_spec.rb | 4 +-
spec/validators/url_validator_spec.rb | 2 +-
spec/workers/feed_insert_worker_spec.rb | 6 +-
40 files changed, 94 insertions(+), 214 deletions(-)
(limited to 'spec/lib')
diff --git a/.rubocop.yml b/.rubocop.yml
index 3783ccf48..fc1969a64 100644
--- a/.rubocop.yml
+++ b/.rubocop.yml
@@ -94,6 +94,9 @@ Rails/Exit:
- 'lib/mastodon/cli_helper.rb'
- 'lib/cli.rb'
+RSpec/NotToNot:
+ EnforcedStyle: to_not
+
Style/HashSyntax:
EnforcedStyle: ruby19_no_mixed_keys
diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml
index 73ebdbfd8..9076891e2 100644
--- a/.rubocop_todo.yml
+++ b/.rubocop_todo.yml
@@ -1440,129 +1440,6 @@ RSpec/NoExpectationExample:
- 'spec/controllers/auth/registrations_controller_spec.rb'
- 'spec/services/precompute_feed_service_spec.rb'
-# Offense count: 370
-# This cop supports safe autocorrection (--autocorrect).
-# Configuration parameters: EnforcedStyle.
-# SupportedStyles: not_to, to_not
-RSpec/NotToNot:
- Exclude:
- - 'spec/config/initializers/rack_attack_spec.rb'
- - 'spec/controllers/accounts_controller_spec.rb'
- - 'spec/controllers/admin/accounts_controller_spec.rb'
- - 'spec/controllers/admin/email_domain_blocks_controller_spec.rb'
- - 'spec/controllers/admin/roles_controller_spec.rb'
- - 'spec/controllers/api/v1/accounts_controller_spec.rb'
- - 'spec/controllers/api/v1/admin/account_actions_controller_spec.rb'
- - 'spec/controllers/api/v1/admin/accounts_controller_spec.rb'
- - 'spec/controllers/api/v1/admin/domain_allows_controller_spec.rb'
- - 'spec/controllers/api/v1/admin/domain_blocks_controller_spec.rb'
- - 'spec/controllers/api/v1/announcements/reactions_controller_spec.rb'
- - 'spec/controllers/api/v1/announcements_controller_spec.rb'
- - 'spec/controllers/api/v1/apps/credentials_controller_spec.rb'
- - 'spec/controllers/api/v1/apps_controller_spec.rb'
- - 'spec/controllers/api/v1/filters_controller_spec.rb'
- - 'spec/controllers/api/v1/media_controller_spec.rb'
- - 'spec/controllers/api/v1/notifications_controller_spec.rb'
- - 'spec/controllers/api/v1/polls/votes_controller_spec.rb'
- - 'spec/controllers/api/v1/reports_controller_spec.rb'
- - 'spec/controllers/api/v1/statuses/mutes_controller_spec.rb'
- - 'spec/controllers/api/v2/filters/keywords_controller_spec.rb'
- - 'spec/controllers/api/v2/filters/statuses_controller_spec.rb'
- - 'spec/controllers/api/v2/filters_controller_spec.rb'
- - 'spec/controllers/auth/challenges_controller_spec.rb'
- - 'spec/controllers/auth/confirmations_controller_spec.rb'
- - 'spec/controllers/auth/passwords_controller_spec.rb'
- - 'spec/controllers/auth/registrations_controller_spec.rb'
- - 'spec/controllers/concerns/challengable_concern_spec.rb'
- - 'spec/controllers/oauth/authorized_applications_controller_spec.rb'
- - 'spec/controllers/oauth/tokens_controller_spec.rb'
- - 'spec/controllers/settings/applications_controller_spec.rb'
- - 'spec/controllers/settings/two_factor_authentication/webauthn_credentials_controller_spec.rb'
- - 'spec/controllers/statuses_controller_spec.rb'
- - 'spec/helpers/application_helper_spec.rb'
- - 'spec/lib/activitypub/activity/announce_spec.rb'
- - 'spec/lib/activitypub/activity/create_spec.rb'
- - 'spec/lib/activitypub/activity/delete_spec.rb'
- - 'spec/lib/activitypub/activity/flag_spec.rb'
- - 'spec/lib/activitypub/dereferencer_spec.rb'
- - 'spec/lib/activitypub/tag_manager_spec.rb'
- - 'spec/lib/delivery_failure_tracker_spec.rb'
- - 'spec/lib/feed_manager_spec.rb'
- - 'spec/lib/html_aware_formatter_spec.rb'
- - 'spec/lib/request_pool_spec.rb'
- - 'spec/lib/status_reach_finder_spec.rb'
- - 'spec/lib/vacuum/access_tokens_vacuum_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/lib/vacuum/system_keys_vacuum_spec.rb'
- - 'spec/models/account/field_spec.rb'
- - 'spec/models/account_conversation_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/remotable_spec.rb'
- - 'spec/models/concerns/status_threading_concern_spec.rb'
- - 'spec/models/follow_spec.rb'
- - 'spec/models/media_attachment_spec.rb'
- - 'spec/models/status_spec.rb'
- - 'spec/models/tag_feed_spec.rb'
- - 'spec/models/trends/statuses_spec.rb'
- - 'spec/models/trends/tags_spec.rb'
- - 'spec/models/user_spec.rb'
- - 'spec/models/webhook_spec.rb'
- - 'spec/policies/account_moderation_note_policy_spec.rb'
- - 'spec/policies/account_policy_spec.rb'
- - 'spec/policies/backup_policy_spec.rb'
- - 'spec/policies/custom_emoji_policy_spec.rb'
- - 'spec/policies/domain_block_policy_spec.rb'
- - 'spec/policies/email_domain_block_policy_spec.rb'
- - 'spec/policies/instance_policy_spec.rb'
- - 'spec/policies/invite_policy_spec.rb'
- - 'spec/policies/relay_policy_spec.rb'
- - 'spec/policies/report_note_policy_spec.rb'
- - 'spec/policies/report_policy_spec.rb'
- - 'spec/policies/settings_policy_spec.rb'
- - 'spec/policies/status_policy_spec.rb'
- - 'spec/policies/tag_policy_spec.rb'
- - 'spec/policies/user_policy_spec.rb'
- - 'spec/presenters/familiar_followers_presenter_spec.rb'
- - 'spec/serializers/activitypub/note_spec.rb'
- - 'spec/services/account_statuses_cleanup_service_spec.rb'
- - 'spec/services/activitypub/fetch_remote_status_service_spec.rb'
- - 'spec/services/activitypub/process_account_service_spec.rb'
- - 'spec/services/activitypub/process_status_update_service_spec.rb'
- - 'spec/services/app_sign_up_service_spec.rb'
- - 'spec/services/batched_remove_status_service_spec.rb'
- - 'spec/services/block_domain_service_spec.rb'
- - 'spec/services/bootstrap_timeline_service_spec.rb'
- - 'spec/services/fan_out_on_write_service_spec.rb'
- - 'spec/services/favourite_service_spec.rb'
- - 'spec/services/fetch_link_card_service_spec.rb'
- - 'spec/services/fetch_oembed_service_spec.rb'
- - 'spec/services/fetch_remote_status_service_spec.rb'
- - 'spec/services/follow_service_spec.rb'
- - 'spec/services/mute_service_spec.rb'
- - 'spec/services/notify_service_spec.rb'
- - 'spec/services/remove_status_service_spec.rb'
- - 'spec/services/report_service_spec.rb'
- - 'spec/services/resolve_account_service_spec.rb'
- - 'spec/services/search_service_spec.rb'
- - 'spec/services/suspend_account_service_spec.rb'
- - 'spec/services/unallow_domain_service_spec.rb'
- - 'spec/services/unsuspend_account_service_spec.rb'
- - 'spec/services/update_status_service_spec.rb'
- - 'spec/support/examples/models/concerns/account_avatar.rb'
- - 'spec/support/examples/models/concerns/account_header.rb'
- - 'spec/validators/email_mx_validator_spec.rb'
- - 'spec/validators/note_length_validator_spec.rb'
- - 'spec/validators/reaction_validator_spec.rb'
- - 'spec/validators/status_length_validator_spec.rb'
- - 'spec/validators/unique_username_validator_spec.rb'
- - 'spec/workers/activitypub/fetch_replies_worker_spec.rb'
- - 'spec/workers/scheduler/accounts_statuses_cleanup_scheduler_spec.rb'
-
# Offense count: 3
RSpec/PendingWithoutReason:
Exclude:
diff --git a/spec/controllers/activitypub/collections_controller_spec.rb b/spec/controllers/activitypub/collections_controller_spec.rb
index 4e35938db..bf81cdb93 100644
--- a/spec/controllers/activitypub/collections_controller_spec.rb
+++ b/spec/controllers/activitypub/collections_controller_spec.rb
@@ -60,7 +60,7 @@ RSpec.describe ActivityPub::CollectionsController, type: :controller do
end
it 'does not include contents of private pinned status' do
- expect(response.body).not_to include(private_pinned.text)
+ expect(response.body).to_not include(private_pinned.text)
end
context 'when account is permanently suspended' do
@@ -115,7 +115,7 @@ RSpec.describe ActivityPub::CollectionsController, type: :controller do
end
it 'does not include contents of private pinned status' do
- expect(response.body).not_to include(private_pinned.text)
+ expect(response.body).to_not include(private_pinned.text)
end
end
diff --git a/spec/controllers/activitypub/inboxes_controller_spec.rb b/spec/controllers/activitypub/inboxes_controller_spec.rb
index 2f023197b..7f4d6b2d3 100644
--- a/spec/controllers/activitypub/inboxes_controller_spec.rb
+++ b/spec/controllers/activitypub/inboxes_controller_spec.rb
@@ -68,7 +68,7 @@ RSpec.describe ActivityPub::InboxesController, type: :controller do
let(:synchronization_collection) { 'https://example.com/followers2' }
it 'does not start a synchronization job' do
- expect(ActivityPub::FollowersSynchronizationWorker).not_to have_received(:perform_async)
+ expect(ActivityPub::FollowersSynchronizationWorker).to_not have_received(:perform_async)
end
end
@@ -76,13 +76,13 @@ RSpec.describe ActivityPub::InboxesController, type: :controller do
let(:synchronization_url) { 'https://example.org/followers' }
it 'does not start a synchronization job' do
- expect(ActivityPub::FollowersSynchronizationWorker).not_to have_received(:perform_async)
+ expect(ActivityPub::FollowersSynchronizationWorker).to_not have_received(:perform_async)
end
end
context 'with matching digest' do
it 'does not start a synchronization job' do
- expect(ActivityPub::FollowersSynchronizationWorker).not_to have_received(:perform_async)
+ expect(ActivityPub::FollowersSynchronizationWorker).to_not have_received(:perform_async)
end
end
diff --git a/spec/controllers/admin/account_moderation_notes_controller_spec.rb b/spec/controllers/admin/account_moderation_notes_controller_spec.rb
index d3f3263f8..b8d606322 100644
--- a/spec/controllers/admin/account_moderation_notes_controller_spec.rb
+++ b/spec/controllers/admin/account_moderation_notes_controller_spec.rb
@@ -26,7 +26,7 @@ RSpec.describe Admin::AccountModerationNotesController, type: :controller do
let(:params) { { account_moderation_note: { target_account_id: target_account.id, content: '' } } }
it 'falls to create a note' do
- expect { subject }.not_to change { AccountModerationNote.count }
+ expect { subject }.to_not change { AccountModerationNote.count }
expect(subject).to render_template 'admin/accounts/show'
end
end
diff --git a/spec/controllers/admin/accounts_controller_spec.rb b/spec/controllers/admin/accounts_controller_spec.rb
index 48204b7b6..35d79740a 100644
--- a/spec/controllers/admin/accounts_controller_spec.rb
+++ b/spec/controllers/admin/accounts_controller_spec.rb
@@ -84,7 +84,7 @@ RSpec.describe Admin::AccountsController, type: :controller do
it 'fails to memorialize account' do
is_expected.to have_http_status :forbidden
- expect(account.reload).not_to be_memorial
+ expect(account.reload).to_not be_memorial
end
end
@@ -106,7 +106,7 @@ RSpec.describe Admin::AccountsController, type: :controller do
it 'fails to memorialize account' do
is_expected.to have_http_status :forbidden
- expect(account.reload).not_to be_memorial
+ expect(account.reload).to_not be_memorial
end
end
@@ -115,7 +115,7 @@ RSpec.describe Admin::AccountsController, type: :controller do
it 'fails to memorialize account' do
is_expected.to have_http_status :forbidden
- expect(account.reload).not_to be_memorial
+ expect(account.reload).to_not be_memorial
end
end
end
@@ -133,7 +133,7 @@ RSpec.describe Admin::AccountsController, type: :controller do
it 'succeeds in enabling account' do
is_expected.to redirect_to admin_account_path(account.id)
- expect(user.reload).not_to be_disabled
+ expect(user.reload).to_not be_disabled
end
end
@@ -183,7 +183,7 @@ RSpec.describe Admin::AccountsController, type: :controller do
it 'fails to approve account' do
is_expected.to have_http_status :forbidden
- expect(user.reload).not_to be_approved
+ expect(user.reload).to_not be_approved
end
end
end
@@ -223,7 +223,7 @@ RSpec.describe Admin::AccountsController, type: :controller do
it 'fails to reject account' do
is_expected.to have_http_status :forbidden
- expect(user.reload).not_to be_approved
+ expect(user.reload).to_not be_approved
end
end
end
diff --git a/spec/controllers/admin/change_email_controller_spec.rb b/spec/controllers/admin/change_email_controller_spec.rb
index 0814f327d..520842a19 100644
--- a/spec/controllers/admin/change_email_controller_spec.rb
+++ b/spec/controllers/admin/change_email_controller_spec.rb
@@ -35,7 +35,7 @@ RSpec.describe Admin::ChangeEmailsController, type: :controller do
expect(user.email).to eq previous_email
expect(user.unconfirmed_email).to eq 'test@example.com'
- expect(user.confirmation_token).not_to be_nil
+ expect(user.confirmation_token).to_not be_nil
expect(UserMailer).to have_received(:confirmation_instructions).with(user, user.confirmation_token, { to: 'test@example.com' })
diff --git a/spec/controllers/admin/confirmations_controller_spec.rb b/spec/controllers/admin/confirmations_controller_spec.rb
index 6268903c4..7ca90f3e1 100644
--- a/spec/controllers/admin/confirmations_controller_spec.rb
+++ b/spec/controllers/admin/confirmations_controller_spec.rb
@@ -55,7 +55,7 @@ RSpec.describe Admin::ConfirmationsController, type: :controller do
it 'does not resend confirmation mail' do
expect(subject).to redirect_to admin_accounts_path
expect(flash[:error]).to eq I18n.t('admin.accounts.resend_confirmation.already_confirmed')
- expect(UserMailer).not_to have_received(:confirmation_instructions)
+ expect(UserMailer).to_not have_received(:confirmation_instructions)
end
end
end
diff --git a/spec/controllers/admin/domain_blocks_controller_spec.rb b/spec/controllers/admin/domain_blocks_controller_spec.rb
index 3b2fd6c5d..92fc19efa 100644
--- a/spec/controllers/admin/domain_blocks_controller_spec.rb
+++ b/spec/controllers/admin/domain_blocks_controller_spec.rb
@@ -54,7 +54,7 @@ RSpec.describe Admin::DomainBlocksController, type: :controller do
post :create, params: { domain_block: { domain: 'example.com', severity: 'silence' } }
- expect(DomainBlockWorker).not_to have_received(:perform_async)
+ expect(DomainBlockWorker).to_not have_received(:perform_async)
expect(response).to render_template :new
end
diff --git a/spec/controllers/admin/report_notes_controller_spec.rb b/spec/controllers/admin/report_notes_controller_spec.rb
index fa7572d18..8a2603611 100644
--- a/spec/controllers/admin/report_notes_controller_spec.rb
+++ b/spec/controllers/admin/report_notes_controller_spec.rb
@@ -34,7 +34,7 @@ describe Admin::ReportNotesController do
it 'creates a report note and does not resolve report' do
expect { subject }.to change { ReportNote.count }.by(1)
- expect(report.reload).not_to be_action_taken
+ expect(report.reload).to_not be_action_taken
expect(subject).to redirect_to admin_report_path(report)
end
end
@@ -49,7 +49,7 @@ describe Admin::ReportNotesController do
it 'creates a report note and unresolves report' do
expect { subject }.to change { ReportNote.count }.by(1)
- expect(report.reload).not_to be_action_taken
+ expect(report.reload).to_not be_action_taken
expect(subject).to redirect_to admin_report_path(report)
end
end
diff --git a/spec/controllers/settings/profiles_controller_spec.rb b/spec/controllers/settings/profiles_controller_spec.rb
index fbbca8bb9..c7a6ad664 100644
--- a/spec/controllers/settings/profiles_controller_spec.rb
+++ b/spec/controllers/settings/profiles_controller_spec.rb
@@ -38,7 +38,7 @@ RSpec.describe Settings::ProfilesController, type: :controller do
put :update, params: { account: { avatar: fixture_file_upload('avatar.gif', 'image/gif') } }
expect(response).to redirect_to(settings_profile_path)
- expect(account.reload.avatar.instance.avatar_file_name).not_to be_nil
+ expect(account.reload.avatar.instance.avatar_file_name).to_not be_nil
expect(ActivityPub::UpdateDistributionWorker).to have_received(:perform_async).with(account.id)
end
end
diff --git a/spec/controllers/well_known/nodeinfo_controller_spec.rb b/spec/controllers/well_known/nodeinfo_controller_spec.rb
index 964a14706..e9436cd26 100644
--- a/spec/controllers/well_known/nodeinfo_controller_spec.rb
+++ b/spec/controllers/well_known/nodeinfo_controller_spec.rb
@@ -27,7 +27,7 @@ describe WellKnown::NodeInfoController, type: :controller do
json = body_as_json
- expect({ 'foo' => 0 }).not_to match_json_schema('nodeinfo_2.0')
+ expect({ 'foo' => 0 }).to_not match_json_schema('nodeinfo_2.0')
expect(json).to match_json_schema('nodeinfo_2.0')
expect(json[:version]).to eq '2.0'
expect(json[:usage]).to be_a Hash
diff --git a/spec/lib/activitypub/activity/announce_spec.rb b/spec/lib/activitypub/activity/announce_spec.rb
index 461c3757b..adb13acc2 100644
--- a/spec/lib/activitypub/activity/announce_spec.rb
+++ b/spec/lib/activitypub/activity/announce_spec.rb
@@ -139,7 +139,7 @@ RSpec.describe ActivityPub::Activity::Announce do
end
it 'does not fetch the remote status' do
- expect(a_request(:get, 'https://example.com/actor/hello-world')).not_to have_been_made
+ expect(a_request(:get, 'https://example.com/actor/hello-world')).to_not have_been_made
expect(Status.find_by(uri: 'https://example.com/actor/hello-world')).to be_nil
end
diff --git a/spec/lib/request_spec.rb b/spec/lib/request_spec.rb
index e555a8b5a..f63a836de 100644
--- a/spec/lib/request_spec.rb
+++ b/spec/lib/request_spec.rb
@@ -102,7 +102,7 @@ describe Request do
it 'accepts body less than 1 megabyte by default' do
stub_request(:any, 'http://example.com').to_return(body: SecureRandom.random_bytes(2.kilobytes))
- expect { subject.perform { |response| response.body_with_limit } }.not_to raise_error
+ expect { subject.perform { |response| response.body_with_limit } }.to_not raise_error
end
it 'rejects body by given size' do
diff --git a/spec/lib/status_filter_spec.rb b/spec/lib/status_filter_spec.rb
index 287fe00de..cdb482059 100644
--- a/spec/lib/status_filter_spec.rb
+++ b/spec/lib/status_filter_spec.rb
@@ -10,7 +10,7 @@ describe StatusFilter do
subject { described_class.new(status, nil) }
context 'when there are no connections' do
- it { is_expected.not_to be_filtered }
+ it { is_expected.to_not be_filtered }
end
context 'when status account is silenced' do
@@ -36,7 +36,7 @@ describe StatusFilter do
subject { described_class.new(status, account) }
context 'when there are no connections' do
- it { is_expected.not_to be_filtered }
+ it { is_expected.to_not be_filtered }
end
context 'when status account is blocked' do
diff --git a/spec/lib/text_formatter_spec.rb b/spec/lib/text_formatter_spec.rb
index d4a3a6b59..cc742b65e 100644
--- a/spec/lib/text_formatter_spec.rb
+++ b/spec/lib/text_formatter_spec.rb
@@ -18,7 +18,7 @@ RSpec.describe TextFormatter do
let(:text) { "line\nfeed" }
it 'removes line feeds' do
- is_expected.not_to include "\n"
+ is_expected.to_not include "\n"
end
end
diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb
index 763835618..03ed12d78 100644
--- a/spec/models/account_spec.rb
+++ b/spec/models/account_spec.rb
@@ -31,7 +31,7 @@ RSpec.describe Account, type: :model do
end
it 'does not raise an error' do
- expect { subject.suspend! }.not_to raise_error
+ expect { subject.suspend! }.to_not raise_error
end
end
end
@@ -206,7 +206,7 @@ RSpec.describe Account, type: :model do
end
it 'calls not ResolveAccountService#call' do
- expect_any_instance_of(ResolveAccountService).not_to receive(:call).with(acct)
+ expect_any_instance_of(ResolveAccountService).to_not receive(:call).with(acct)
account.refresh!
end
end
@@ -811,19 +811,19 @@ RSpec.describe Account, type: :model do
it 'is valid even if the username is longer than 30 characters' do
account = Fabricate.build(:account, domain: 'domain', username: Faker::Lorem.characters(number: 31))
account.valid?
- expect(account).not_to model_have_error_on_field(:username)
+ expect(account).to_not model_have_error_on_field(:username)
end
it 'is valid even if the display name is longer than 30 characters' do
account = Fabricate.build(:account, domain: 'domain', display_name: Faker::Lorem.characters(number: 31))
account.valid?
- expect(account).not_to model_have_error_on_field(:display_name)
+ expect(account).to_not model_have_error_on_field(:display_name)
end
it 'is valid even if the note is longer than 500 characters' do
account = Fabricate.build(:account, domain: 'domain', note: Faker::Lorem.characters(number: 501))
account.valid?
- expect(account).not_to model_have_error_on_field(:note)
+ expect(account).to_not model_have_error_on_field(:note)
end
end
end
diff --git a/spec/models/concerns/account_interactions_spec.rb b/spec/models/concerns/account_interactions_spec.rb
index b79c44594..b2d84308b 100644
--- a/spec/models/concerns/account_interactions_spec.rb
+++ b/spec/models/concerns/account_interactions_spec.rb
@@ -163,7 +163,7 @@ describe AccountInteractions do
it 'returns Mute without updating mute.hide_notifications' do
expect do
expect(subject).to be_a Mute
- end.not_to change { mute.reload.hide_notifications? }.from(true)
+ end.to_not change { mute.reload.hide_notifications? }.from(true)
end
end
@@ -183,7 +183,7 @@ describe AccountInteractions do
it 'returns Mute without updating mute.hide_notifications' do
expect do
expect(subject).to be_a Mute
- end.not_to change { mute.reload.hide_notifications? }.from(true)
+ end.to_not change { mute.reload.hide_notifications? }.from(true)
end
end
end
@@ -207,7 +207,7 @@ describe AccountInteractions do
it 'returns Mute without updating mute.hide_notifications' do
expect do
expect(subject).to be_a Mute
- end.not_to change { mute.reload.hide_notifications? }.from(false)
+ end.to_not change { mute.reload.hide_notifications? }.from(false)
end
end
diff --git a/spec/models/concerns/remotable_spec.rb b/spec/models/concerns/remotable_spec.rb
index ca2d65d2d..964520427 100644
--- a/spec/models/concerns/remotable_spec.rb
+++ b/spec/models/concerns/remotable_spec.rb
@@ -147,8 +147,8 @@ RSpec.describe Remotable do
let(:code) { 500 }
it 'does not assign file' do
- expect(foo).not_to receive(:public_send).with("#{hoge}=", any_args)
- expect(foo).not_to receive(:public_send).with("#{hoge}_file_name=", any_args)
+ expect(foo).to_not receive(:public_send).with("#{hoge}=", any_args)
+ expect(foo).to_not receive(:public_send).with("#{hoge}_file_name=", any_args)
foo.hoge_remote_url = url
end
diff --git a/spec/models/public_feed_spec.rb b/spec/models/public_feed_spec.rb
index 0ffc343f1..be46639c5 100644
--- a/spec/models/public_feed_spec.rb
+++ b/spec/models/public_feed_spec.rb
@@ -11,7 +11,7 @@ RSpec.describe PublicFeed, type: :model do
private_status = Fabricate(:status, visibility: :private)
expect(subject).to include(public_status.id)
- expect(subject).not_to include(private_status.id)
+ expect(subject).to_not include(private_status.id)
end
it 'does not include replies' do
@@ -19,7 +19,7 @@ RSpec.describe PublicFeed, type: :model do
reply = Fabricate(:status, in_reply_to_id: status.id)
expect(subject).to include(status.id)
- expect(subject).not_to include(reply.id)
+ expect(subject).to_not include(reply.id)
end
it 'does not include boosts' do
@@ -27,7 +27,7 @@ RSpec.describe PublicFeed, type: :model do
boost = Fabricate(:status, reblog_of_id: status.id)
expect(subject).to include(status.id)
- expect(subject).not_to include(boost.id)
+ expect(subject).to_not include(boost.id)
end
it 'filters out silenced accounts' do
@@ -36,7 +36,7 @@ RSpec.describe PublicFeed, type: :model do
silenced_status = Fabricate(:status, account: silenced_account)
expect(subject).to include(status.id)
- expect(subject).not_to include(silenced_status.id)
+ expect(subject).to_not include(silenced_status.id)
end
context 'without local_only option' do
@@ -87,7 +87,7 @@ RSpec.describe PublicFeed, type: :model do
it 'does not include remote instances statuses' do
expect(subject).to include(local_status.id)
- expect(subject).not_to include(remote_status.id)
+ expect(subject).to_not include(remote_status.id)
end
end
@@ -96,13 +96,13 @@ RSpec.describe PublicFeed, type: :model do
it 'does not include remote instances statuses' do
expect(subject).to include(local_status.id)
- expect(subject).not_to include(remote_status.id)
+ expect(subject).to_not include(remote_status.id)
end
it 'is not affected by personal domain blocks' do
viewer.block_domain!('test.com')
expect(subject).to include(local_status.id)
- expect(subject).not_to include(remote_status.id)
+ expect(subject).to_not include(remote_status.id)
end
end
end
@@ -119,7 +119,7 @@ RSpec.describe PublicFeed, type: :model do
let(:viewer) { nil }
it 'does not include local instances statuses' do
- expect(subject).not_to include(local_status.id)
+ expect(subject).to_not include(local_status.id)
expect(subject).to include(remote_status.id)
end
end
@@ -128,7 +128,7 @@ RSpec.describe PublicFeed, type: :model do
let(:viewer) { Fabricate(:account, username: 'viewer') }
it 'does not include local instances statuses' do
- expect(subject).not_to include(local_status.id)
+ expect(subject).to_not include(local_status.id)
expect(subject).to include(remote_status.id)
end
end
@@ -146,7 +146,7 @@ RSpec.describe PublicFeed, type: :model do
@account.block!(blocked)
blocked_status = Fabricate(:status, account: blocked)
- expect(subject).not_to include(blocked_status.id)
+ expect(subject).to_not include(blocked_status.id)
end
it 'excludes statuses from accounts who have blocked the account' do
@@ -154,7 +154,7 @@ RSpec.describe PublicFeed, type: :model do
blocker.block!(@account)
blocked_status = Fabricate(:status, account: blocker)
- expect(subject).not_to include(blocked_status.id)
+ expect(subject).to_not include(blocked_status.id)
end
it 'excludes statuses from accounts muted by the account' do
@@ -162,7 +162,7 @@ RSpec.describe PublicFeed, type: :model do
@account.mute!(muted)
muted_status = Fabricate(:status, account: muted)
- expect(subject).not_to include(muted_status.id)
+ expect(subject).to_not include(muted_status.id)
end
it 'excludes statuses from accounts from personally blocked domains' do
@@ -170,7 +170,7 @@ RSpec.describe PublicFeed, type: :model do
@account.block_domain!(blocked.domain)
blocked_status = Fabricate(:status, account: blocked)
- expect(subject).not_to include(blocked_status.id)
+ expect(subject).to_not include(blocked_status.id)
end
context 'with language preferences' do
@@ -182,7 +182,7 @@ RSpec.describe PublicFeed, type: :model do
expect(subject).to include(en_status.id)
expect(subject).to include(es_status.id)
- expect(subject).not_to include(fr_status.id)
+ expect(subject).to_not include(fr_status.id)
end
it 'includes all languages when user does not have a setting' do
diff --git a/spec/models/setting_spec.rb b/spec/models/setting_spec.rb
index 83ba415a8..077223094 100644
--- a/spec/models/setting_spec.rb
+++ b/spec/models/setting_spec.rb
@@ -38,7 +38,7 @@ RSpec.describe Setting, type: :model do
let(:cache_value) { 'cache-value' }
it 'calls not RailsSettings::Base#[]' do
- expect(RailsSettings::Base).not_to receive(:[]).with(key)
+ expect(RailsSettings::Base).to_not receive(:[]).with(key)
described_class[key]
end
@@ -104,7 +104,7 @@ RSpec.describe Setting, type: :model do
ActiveSupport::Notifications.subscribed callback, 'sql.active_record' do
described_class[key]
end
- expect(callback).not_to have_received(:call)
+ expect(callback).to_not have_received(:call)
end
it 'returns the cached value' do
diff --git a/spec/models/tag_spec.rb b/spec/models/tag_spec.rb
index 102d2f625..7043449c5 100644
--- a/spec/models/tag_spec.rb
+++ b/spec/models/tag_spec.rb
@@ -4,15 +4,15 @@ require 'rails_helper'
RSpec.describe Tag do
describe 'validations' do
it 'invalid with #' do
- expect(described_class.new(name: '#hello_world')).not_to be_valid
+ expect(described_class.new(name: '#hello_world')).to_not be_valid
end
it 'invalid with .' do
- expect(described_class.new(name: '.abcdef123')).not_to be_valid
+ expect(described_class.new(name: '.abcdef123')).to_not be_valid
end
it 'invalid with spaces' do
- expect(described_class.new(name: 'hello world')).not_to be_valid
+ expect(described_class.new(name: 'hello world')).to_not be_valid
end
it 'valid with aesthetic' do
diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb
index dde1503c0..c2f7e99ac 100644
--- a/spec/models/user_spec.rb
+++ b/spec/models/user_spec.rb
@@ -159,7 +159,7 @@ RSpec.describe User, type: :model do
it 'does not trigger the account.approved Web Hook' do
subject
- expect(TriggerWebhookWorker).not_to have_received(:perform_async).with('account.approved', 'Account', user.account_id)
+ expect(TriggerWebhookWorker).to_not have_received(:perform_async).with('account.approved', 'Account', user.account_id)
end
end
@@ -270,7 +270,7 @@ RSpec.describe User, type: :model do
it 'does not trigger the account.approved Web Hook' do
subject
- expect(TriggerWebhookWorker).not_to have_received(:perform_async).with('account.approved', 'Account', user.account_id)
+ expect(TriggerWebhookWorker).to_not have_received(:perform_async).with('account.approved', 'Account', user.account_id)
end
end
end
diff --git a/spec/services/account_search_service_spec.rb b/spec/services/account_search_service_spec.rb
index d3b5baad6..45e19d1ef 100644
--- a/spec/services/account_search_service_spec.rb
+++ b/spec/services/account_search_service_spec.rb
@@ -63,7 +63,7 @@ describe AccountSearchService, type: :service do
allow(ResolveAccountService).to receive(:new).and_return(service)
results = subject.call('newuser@remote.com', nil, limit: 10, resolve: false)
- expect(service).not_to have_received(:call)
+ expect(service).to_not have_received(:call)
end
end
diff --git a/spec/services/activitypub/process_collection_service_spec.rb b/spec/services/activitypub/process_collection_service_spec.rb
index fbfa6d6c6..d35d9596d 100644
--- a/spec/services/activitypub/process_collection_service_spec.rb
+++ b/spec/services/activitypub/process_collection_service_spec.rb
@@ -39,7 +39,7 @@ RSpec.describe ActivityPub::ProcessCollectionService, type: :service do
end
it 'does not process payload' do
- expect(ActivityPub::Activity).not_to receive(:factory)
+ expect(ActivityPub::Activity).to_not receive(:factory)
subject.call(json, actor)
end
end
@@ -69,7 +69,7 @@ RSpec.describe ActivityPub::ProcessCollectionService, type: :service do
it 'does not process payload if no signature exists' do
expect_any_instance_of(ActivityPub::LinkedDataSignature).to receive(:verify_actor!).and_return(nil)
- expect(ActivityPub::Activity).not_to receive(:factory)
+ expect(ActivityPub::Activity).to_not receive(:factory)
subject.call(json, forwarder)
end
@@ -87,7 +87,7 @@ RSpec.describe ActivityPub::ProcessCollectionService, type: :service do
payload['signature'] = { 'type' => 'RsaSignature2017' }
expect_any_instance_of(ActivityPub::LinkedDataSignature).to receive(:verify_actor!).and_return(nil)
- expect(ActivityPub::Activity).not_to receive(:factory)
+ expect(ActivityPub::Activity).to_not receive(:factory)
subject.call(json, forwarder)
end
@@ -206,7 +206,7 @@ RSpec.describe ActivityPub::ProcessCollectionService, type: :service do
end
it 'does not process forged payload' do
- expect(ActivityPub::Activity).not_to receive(:factory).with(
+ expect(ActivityPub::Activity).to_not receive(:factory).with(
hash_including(
'object' => hash_including(
'id' => 'https://example.com/users/bob/fake-status'
@@ -216,7 +216,7 @@ RSpec.describe ActivityPub::ProcessCollectionService, type: :service do
anything
)
- expect(ActivityPub::Activity).not_to receive(:factory).with(
+ expect(ActivityPub::Activity).to_not receive(:factory).with(
hash_including(
'object' => hash_including(
'content' => '
puck was here
'
diff --git a/spec/services/activitypub/process_status_update_service_spec.rb b/spec/services/activitypub/process_status_update_service_spec.rb
index 5d15f6ffe..ae7db88bf 100644
--- a/spec/services/activitypub/process_status_update_service_spec.rb
+++ b/spec/services/activitypub/process_status_update_service_spec.rb
@@ -214,11 +214,11 @@ RSpec.describe ActivityPub::ProcessStatusUpdateService, type: :service do
end
it 'does not create any edits' do
- expect { subject.call(status, json) }.not_to change { status.reload.edits.pluck(&:id) }
+ expect { subject.call(status, json) }.to_not change { status.reload.edits.pluck(&:id) }
end
it 'does not update the text, spoiler_text or edited_at' do
- expect { subject.call(status, json) }.not_to change { s = status.reload; [s.text, s.spoiler_text, s.edited_at] }
+ expect { subject.call(status, json) }.to_not change { s = status.reload; [s.text, s.spoiler_text, s.edited_at] }
end
end
diff --git a/spec/services/block_domain_service_spec.rb b/spec/services/block_domain_service_spec.rb
index 242b02fff..e24e48d41 100644
--- a/spec/services/block_domain_service_spec.rb
+++ b/spec/services/block_domain_service_spec.rb
@@ -67,9 +67,9 @@ RSpec.describe BlockDomainService, type: :service do
end
it 'leaves the domains status and attachments, but clears media' do
- expect { bad_status1.reload }.not_to raise_error
- expect { bad_status2.reload }.not_to raise_error
- expect { bad_attachment.reload }.not_to raise_error
+ expect { bad_status1.reload }.to_not raise_error
+ expect { bad_status2.reload }.to_not raise_error
+ expect { bad_attachment.reload }.to_not raise_error
expect(bad_attachment.file.exists?).to be false
end
end
diff --git a/spec/services/clear_domain_media_service_spec.rb b/spec/services/clear_domain_media_service_spec.rb
index 45b92e2c9..e90faf84d 100644
--- a/spec/services/clear_domain_media_service_spec.rb
+++ b/spec/services/clear_domain_media_service_spec.rb
@@ -14,9 +14,9 @@ RSpec.describe ClearDomainMediaService, type: :service do
end
it 'leaves the domains status and attachments, but clears media' do
- expect { bad_status1.reload }.not_to raise_error
- expect { bad_status2.reload }.not_to raise_error
- expect { bad_attachment.reload }.not_to raise_error
+ expect { bad_status1.reload }.to_not raise_error
+ expect { bad_status2.reload }.to_not raise_error
+ expect { bad_attachment.reload }.to_not raise_error
expect(bad_attachment.file.exists?).to be false
end
end
diff --git a/spec/services/import_service_spec.rb b/spec/services/import_service_spec.rb
index a12148833..2b1516ff0 100644
--- a/spec/services/import_service_spec.rb
+++ b/spec/services/import_service_spec.rb
@@ -234,7 +234,7 @@ RSpec.describe ImportService, type: :service do
subject.call(import)
expect(account.bookmarks.map(&:status).map(&:id)).to include(local_status.id)
expect(account.bookmarks.map(&:status).map(&:id)).to include(remote_status.id)
- expect(account.bookmarks.map(&:status).map(&:id)).not_to include(direct_status.id)
+ expect(account.bookmarks.map(&:status).map(&:id)).to_not include(direct_status.id)
expect(account.bookmarks.count).to eq 3
end
end
diff --git a/spec/services/post_status_service_spec.rb b/spec/services/post_status_service_spec.rb
index 0b72253a5..2148f1819 100644
--- a/spec/services/post_status_service_spec.rb
+++ b/spec/services/post_status_service_spec.rb
@@ -50,7 +50,7 @@ RSpec.describe PostStatusService, type: :service do
end
it 'does not change statuses count' do
- expect { subject.call(account, text: 'Hi future!', scheduled_at: future, thread: previous_status) }.not_to change { [account.statuses_count, previous_status.replies_count] }
+ expect { subject.call(account, text: 'Hi future!', scheduled_at: future, thread: previous_status) }.to_not change { [account.statuses_count, previous_status.replies_count] }
end
end
@@ -157,7 +157,7 @@ RSpec.describe PostStatusService, type: :service do
expect do
subject.call(account, text: '@alice @alice @alice hey @alice')
- end.not_to raise_error
+ end.to_not raise_error
end
it 'processes hashtags' do
diff --git a/spec/services/search_service_spec.rb b/spec/services/search_service_spec.rb
index 6f32007e8..7ec334a56 100644
--- a/spec/services/search_service_spec.rb
+++ b/spec/services/search_service_spec.rb
@@ -13,8 +13,8 @@ describe SearchService, type: :service do
results = subject.call('', nil, 10)
expect(results).to eq(empty_results)
- expect(AccountSearchService).not_to have_received(:new)
- expect(Tag).not_to have_received(:search_for)
+ expect(AccountSearchService).to_not have_received(:new)
+ expect(Tag).to_not have_received(:search_for)
end
end
@@ -89,7 +89,7 @@ describe SearchService, type: :service do
allow(Tag).to receive(:search_for)
results = subject.call(query, nil, 10)
- expect(Tag).not_to have_received(:search_for)
+ expect(Tag).to_not have_received(:search_for)
expect(results).to eq empty_results
end
diff --git a/spec/validators/blacklisted_email_validator_spec.rb b/spec/validators/blacklisted_email_validator_spec.rb
index f9ee3b932..cb807fe24 100644
--- a/spec/validators/blacklisted_email_validator_spec.rb
+++ b/spec/validators/blacklisted_email_validator_spec.rb
@@ -26,7 +26,7 @@ RSpec.describe BlacklistedEmailValidator, type: :validator do
let(:blocked_email) { false }
it 'does not add errors' do
- expect(subject).not_to have_received(:add).with(:email, :blocked)
+ expect(subject).to_not have_received(:add).with(:email, :blocked)
end
context 'when canonical e-mail is blocked' do
diff --git a/spec/validators/disallowed_hashtags_validator_spec.rb b/spec/validators/disallowed_hashtags_validator_spec.rb
index 9deec0bb9..2c4ebc4f2 100644
--- a/spec/validators/disallowed_hashtags_validator_spec.rb
+++ b/spec/validators/disallowed_hashtags_validator_spec.rb
@@ -19,7 +19,7 @@ RSpec.describe DisallowedHashtagsValidator, type: :validator do
let(:reblog) { true }
it 'does not add errors' do
- expect(errors).not_to have_received(:add).with(:text, any_args)
+ expect(errors).to_not have_received(:add).with(:text, any_args)
end
end
@@ -31,7 +31,7 @@ RSpec.describe DisallowedHashtagsValidator, type: :validator do
let(:disallowed_tags) { [] }
it 'does not add errors' do
- expect(errors).not_to have_received(:add).with(:text, any_args)
+ expect(errors).to_not have_received(:add).with(:text, any_args)
end
end
diff --git a/spec/validators/email_mx_validator_spec.rb b/spec/validators/email_mx_validator_spec.rb
index 6640d6058..ffb6851d0 100644
--- a/spec/validators/email_mx_validator_spec.rb
+++ b/spec/validators/email_mx_validator_spec.rb
@@ -38,7 +38,7 @@ describe EmailMxValidator do
allow(Resolv::DNS).to receive(:open).and_yield(resolver)
subject.validate(user)
- expect(user.errors).not_to have_received(:add)
+ expect(user.errors).to_not have_received(:add)
end
it 'adds an error if the email domain name contains empty labels' do
diff --git a/spec/validators/follow_limit_validator_spec.rb b/spec/validators/follow_limit_validator_spec.rb
index cc8fbb631..94ba0c47f 100644
--- a/spec/validators/follow_limit_validator_spec.rb
+++ b/spec/validators/follow_limit_validator_spec.rb
@@ -22,7 +22,7 @@ RSpec.describe FollowLimitValidator, type: :validator do
let(:_nil) { true }
it 'not calls errors.add' do
- expect(errors).not_to have_received(:add).with(:base, any_args)
+ expect(errors).to_not have_received(:add).with(:base, any_args)
end
end
@@ -43,7 +43,7 @@ RSpec.describe FollowLimitValidator, type: :validator do
let(:limit_reached) { false }
it 'not calls errors.add' do
- expect(errors).not_to have_received(:add).with(:base, any_args)
+ expect(errors).to_not have_received(:add).with(:base, any_args)
end
end
end
diff --git a/spec/validators/poll_validator_spec.rb b/spec/validators/poll_validator_spec.rb
index a76c63ccc..f3f4b1288 100644
--- a/spec/validators/poll_validator_spec.rb
+++ b/spec/validators/poll_validator_spec.rb
@@ -15,14 +15,14 @@ RSpec.describe PollValidator, type: :validator do
let(:expires_at) { 1.day.from_now }
it 'have no errors' do
- expect(errors).not_to have_received(:add)
+ expect(errors).to_not have_received(:add)
end
context 'expires just 5 min ago' do
let(:expires_at) { 5.minutes.from_now }
it 'not calls errors add' do
- expect(errors).not_to have_received(:add)
+ expect(errors).to_not have_received(:add)
end
end
end
diff --git a/spec/validators/status_length_validator_spec.rb b/spec/validators/status_length_validator_spec.rb
index db9c728a8..e132b5618 100644
--- a/spec/validators/status_length_validator_spec.rb
+++ b/spec/validators/status_length_validator_spec.rb
@@ -7,13 +7,13 @@ describe StatusLengthValidator do
it 'does not add errors onto remote statuses' do
status = double(local?: false)
subject.validate(status)
- expect(status).not_to receive(:errors)
+ expect(status).to_not receive(:errors)
end
it 'does not add errors onto local reblogs' do
status = double(local?: false, reblog?: true)
subject.validate(status)
- expect(status).not_to receive(:errors)
+ expect(status).to_not receive(:errors)
end
it 'adds an error when content warning is over 500 characters' do
diff --git a/spec/validators/unreserved_username_validator_spec.rb b/spec/validators/unreserved_username_validator_spec.rb
index e2f051b08..3c6f71c59 100644
--- a/spec/validators/unreserved_username_validator_spec.rb
+++ b/spec/validators/unreserved_username_validator_spec.rb
@@ -17,7 +17,7 @@ RSpec.describe UnreservedUsernameValidator, type: :validator do
let(:username) { nil }
it 'not calls errors.add' do
- expect(errors).not_to have_received(:add).with(:username, any_args)
+ expect(errors).to_not have_received(:add).with(:username, any_args)
end
end
@@ -36,7 +36,7 @@ RSpec.describe UnreservedUsernameValidator, type: :validator do
let(:reserved_username) { false }
it 'not calls errors.add' do
- expect(errors).not_to have_received(:add).with(:username, any_args)
+ expect(errors).to_not have_received(:add).with(:username, any_args)
end
end
end
diff --git a/spec/validators/url_validator_spec.rb b/spec/validators/url_validator_spec.rb
index 85eadeb63..966261b50 100644
--- a/spec/validators/url_validator_spec.rb
+++ b/spec/validators/url_validator_spec.rb
@@ -27,7 +27,7 @@ RSpec.describe URLValidator, type: :validator do
let(:compliant) { true }
it 'not calls errors.add' do
- expect(errors).not_to have_received(:add).with(attribute, any_args)
+ expect(errors).to_not have_received(:add).with(attribute, any_args)
end
end
end
diff --git a/spec/workers/feed_insert_worker_spec.rb b/spec/workers/feed_insert_worker_spec.rb
index fb34970fc..1a723d63a 100644
--- a/spec/workers/feed_insert_worker_spec.rb
+++ b/spec/workers/feed_insert_worker_spec.rb
@@ -16,7 +16,7 @@ describe FeedInsertWorker do
result = subject.perform(nil, follower.id)
expect(result).to eq true
- expect(instance).not_to have_received(:push_to_home)
+ expect(instance).to_not have_received(:push_to_home)
end
it 'skips push with missing account' do
@@ -25,7 +25,7 @@ describe FeedInsertWorker do
result = subject.perform(status.id, nil)
expect(result).to eq true
- expect(instance).not_to have_received(:push_to_home)
+ expect(instance).to_not have_received(:push_to_home)
end
end
@@ -36,7 +36,7 @@ describe FeedInsertWorker do
result = subject.perform(status.id, follower.id)
expect(result).to be_nil
- expect(instance).not_to have_received(:push_to_home)
+ expect(instance).to_not have_received(:push_to_home)
end
it 'pushes the status onto the home timeline without filter' do
--
cgit
From dbc6d7b276aa1ccc085f76caa43cc091311af6b7 Mon Sep 17 00:00:00 2001
From: Nick Schonning
Date: Sun, 19 Feb 2023 20:45:50 -0500
Subject: Autofix Rubocop Lint/UnusedBlockArgument (#23712)
---
.rubocop_todo.yml | 8 --------
spec/lib/activitypub/activity/add_spec.rb | 4 ++--
spec/lib/request_pool_spec.rb | 2 +-
3 files changed, 3 insertions(+), 11 deletions(-)
(limited to 'spec/lib')
diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml
index 9076891e2..e33d1d745 100644
--- a/.rubocop_todo.yml
+++ b/.rubocop_todo.yml
@@ -278,14 +278,6 @@ Lint/OrAssignmentToConstant:
Exclude:
- 'lib/sanitize_ext/sanitize_config.rb'
-# Offense count: 3
-# This cop supports safe autocorrection (--autocorrect).
-# Configuration parameters: IgnoreEmptyBlocks, AllowUnusedKeywordArguments.
-Lint/UnusedBlockArgument:
- Exclude:
- - 'spec/lib/activitypub/activity/add_spec.rb'
- - 'spec/lib/request_pool_spec.rb'
-
# Offense count: 33
Lint/UselessAssignment:
Exclude:
diff --git a/spec/lib/activitypub/activity/add_spec.rb b/spec/lib/activitypub/activity/add_spec.rb
index 0b08e2924..e21c871e6 100644
--- a/spec/lib/activitypub/activity/add_spec.rb
+++ b/spec/lib/activitypub/activity/add_spec.rb
@@ -48,7 +48,7 @@ RSpec.describe ActivityPub::Activity::Add do
end
it 'fetches the status and pins it' do
- allow(service_stub).to receive(:call) do |uri, id: true, on_behalf_of: nil, request_id: nil|
+ allow(service_stub).to receive(:call) do |uri, id: true, on_behalf_of: nil, request_id: nil| # rubocop:disable Lint/UnusedBlockArgument
expect(uri).to eq 'https://example.com/unknown'
expect(id).to eq true
expect(on_behalf_of&.following?(sender)).to eq true
@@ -62,7 +62,7 @@ RSpec.describe ActivityPub::Activity::Add do
context 'when there is no local follower' do
it 'tries to fetch the status' do
- allow(service_stub).to receive(:call) do |uri, id: true, on_behalf_of: nil, request_id: nil|
+ allow(service_stub).to receive(:call) do |uri, id: true, on_behalf_of: nil, request_id: nil| # rubocop:disable Lint/UnusedBlockArgument
expect(uri).to eq 'https://example.com/unknown'
expect(id).to eq true
expect(on_behalf_of).to eq nil
diff --git a/spec/lib/request_pool_spec.rb b/spec/lib/request_pool_spec.rb
index 4a144d7c7..63dc9c5dd 100644
--- a/spec/lib/request_pool_spec.rb
+++ b/spec/lib/request_pool_spec.rb
@@ -33,7 +33,7 @@ describe RequestPool do
subject
- threads = 20.times.map do |i|
+ threads = 20.times.map do |_i|
Thread.new do
20.times do
subject.with('http://example.com') do |http_client|
--
cgit
From bd1d57c2303b7a5df1af749d8851c9364a044e77 Mon Sep 17 00:00:00 2001
From: Nick Schonning
Date: Sun, 19 Feb 2023 20:46:00 -0500
Subject: Autofix Rubocop RSpec/EmptyLineAfterSubject (#23719)
---
.rubocop_todo.yml | 21 ---------------------
.../activitypub/collections_controller_spec.rb | 1 +
.../followers_synchronizations_controller_spec.rb | 1 +
.../activitypub/outboxes_controller_spec.rb | 1 +
.../activitypub/replies_controller_spec.rb | 1 +
.../admin/reports/actions_controller_spec.rb | 2 ++
spec/controllers/api/web/embeds_controller_spec.rb | 1 +
spec/controllers/emojis_controller_spec.rb | 1 +
.../follower_accounts_controller_spec.rb | 1 +
.../following_accounts_controller_spec.rb | 1 +
spec/controllers/relationships_controller_spec.rb | 1 +
spec/lib/activitypub/activity/delete_spec.rb | 2 ++
spec/lib/activitypub/activity/flag_spec.rb | 1 +
spec/models/admin/account_action_spec.rb | 1 +
spec/models/user_spec.rb | 2 ++
spec/services/fetch_remote_status_service_spec.rb | 1 +
spec/workers/refollow_worker_spec.rb | 1 +
17 files changed, 19 insertions(+), 21 deletions(-)
(limited to 'spec/lib')
diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml
index e33d1d745..02f84e70f 100644
--- a/.rubocop_todo.yml
+++ b/.rubocop_todo.yml
@@ -817,27 +817,6 @@ RSpec/EmptyExampleGroup:
- 'spec/models/web/setting_spec.rb'
- 'spec/services/unmute_service_spec.rb'
-# Offense count: 19
-# This cop supports safe autocorrection (--autocorrect).
-RSpec/EmptyLineAfterSubject:
- Exclude:
- - 'spec/controllers/activitypub/collections_controller_spec.rb'
- - 'spec/controllers/activitypub/followers_synchronizations_controller_spec.rb'
- - 'spec/controllers/activitypub/outboxes_controller_spec.rb'
- - 'spec/controllers/activitypub/replies_controller_spec.rb'
- - 'spec/controllers/admin/reports/actions_controller_spec.rb'
- - 'spec/controllers/api/web/embeds_controller_spec.rb'
- - 'spec/controllers/emojis_controller_spec.rb'
- - 'spec/controllers/follower_accounts_controller_spec.rb'
- - 'spec/controllers/following_accounts_controller_spec.rb'
- - 'spec/controllers/relationships_controller_spec.rb'
- - 'spec/lib/activitypub/activity/delete_spec.rb'
- - 'spec/lib/activitypub/activity/flag_spec.rb'
- - 'spec/models/admin/account_action_spec.rb'
- - 'spec/models/user_spec.rb'
- - 'spec/services/fetch_remote_status_service_spec.rb'
- - 'spec/workers/refollow_worker_spec.rb'
-
# Offense count: 178
# Configuration parameters: CountAsOne.
RSpec/ExampleLength:
diff --git a/spec/controllers/activitypub/collections_controller_spec.rb b/spec/controllers/activitypub/collections_controller_spec.rb
index bf81cdb93..19c0e0a64 100644
--- a/spec/controllers/activitypub/collections_controller_spec.rb
+++ b/spec/controllers/activitypub/collections_controller_spec.rb
@@ -38,6 +38,7 @@ RSpec.describe ActivityPub::CollectionsController, type: :controller do
let(:remote_account) { nil }
subject(:response) { get :show, params: { id: 'featured', account_username: account.username } }
+
subject(:body) { body_as_json }
it 'returns http success' do
diff --git a/spec/controllers/activitypub/followers_synchronizations_controller_spec.rb b/spec/controllers/activitypub/followers_synchronizations_controller_spec.rb
index c19bb8cae..893c8e14f 100644
--- a/spec/controllers/activitypub/followers_synchronizations_controller_spec.rb
+++ b/spec/controllers/activitypub/followers_synchronizations_controller_spec.rb
@@ -35,6 +35,7 @@ RSpec.describe ActivityPub::FollowersSynchronizationsController, type: :controll
let(:remote_account) { Fabricate(:account, domain: 'example.com', uri: 'https://example.com/instance') }
subject(:response) { get :show, params: { account_username: account.username } }
+
subject(:body) { body_as_json }
it 'returns http success' do
diff --git a/spec/controllers/activitypub/outboxes_controller_spec.rb b/spec/controllers/activitypub/outboxes_controller_spec.rb
index d8d42b7ae..f84a902ea 100644
--- a/spec/controllers/activitypub/outboxes_controller_spec.rb
+++ b/spec/controllers/activitypub/outboxes_controller_spec.rb
@@ -36,6 +36,7 @@ RSpec.describe ActivityPub::OutboxesController, type: :controller do
let(:remote_account) { nil }
subject(:response) { get :show, params: { account_username: account.username, page: page } }
+
subject(:body) { body_as_json }
context 'with page not requested' do
diff --git a/spec/controllers/activitypub/replies_controller_spec.rb b/spec/controllers/activitypub/replies_controller_spec.rb
index 394d4baab..582ef863f 100644
--- a/spec/controllers/activitypub/replies_controller_spec.rb
+++ b/spec/controllers/activitypub/replies_controller_spec.rb
@@ -181,6 +181,7 @@ RSpec.describe ActivityPub::RepliesController, type: :controller do
describe 'GET #index' do
subject(:response) { get :index, params: { account_username: status.account.username, status_id: status.id, only_other_accounts: only_other_accounts } }
+
let(:only_other_accounts) { nil }
context 'with no signature' do
diff --git a/spec/controllers/admin/reports/actions_controller_spec.rb b/spec/controllers/admin/reports/actions_controller_spec.rb
index 9890ac9ce..db3a1d311 100644
--- a/spec/controllers/admin/reports/actions_controller_spec.rb
+++ b/spec/controllers/admin/reports/actions_controller_spec.rb
@@ -123,11 +123,13 @@ describe Admin::Reports::ActionsController do
context 'action as submit button' do
subject { post :create, params: { report_id: report.id, text: text, action => '' } }
+
it_behaves_like 'all action types'
end
context 'action as submit button' do
subject { post :create, params: { report_id: report.id, text: text, moderation_action: action } }
+
it_behaves_like 'all action types'
end
end
diff --git a/spec/controllers/api/web/embeds_controller_spec.rb b/spec/controllers/api/web/embeds_controller_spec.rb
index 345c317ba..b3ef73915 100644
--- a/spec/controllers/api/web/embeds_controller_spec.rb
+++ b/spec/controllers/api/web/embeds_controller_spec.rb
@@ -11,6 +11,7 @@ describe Api::Web::EmbedsController do
describe 'POST #create' do
subject(:response) { post :create, params: { url: url } }
+
subject(:body) { JSON.parse(response.body, symbolize_names: true) }
context 'when successfully finds status' do
diff --git a/spec/controllers/emojis_controller_spec.rb b/spec/controllers/emojis_controller_spec.rb
index fbbd11f64..9f6604964 100644
--- a/spec/controllers/emojis_controller_spec.rb
+++ b/spec/controllers/emojis_controller_spec.rb
@@ -7,6 +7,7 @@ describe EmojisController do
describe 'GET #show' do
subject(:response) { get :show, params: { id: emoji.id, format: :json } }
+
subject(:body) { JSON.parse(response.body, symbolize_names: true) }
it 'returns the right response' do
diff --git a/spec/controllers/follower_accounts_controller_spec.rb b/spec/controllers/follower_accounts_controller_spec.rb
index ab2e82e85..43fc4203c 100644
--- a/spec/controllers/follower_accounts_controller_spec.rb
+++ b/spec/controllers/follower_accounts_controller_spec.rb
@@ -38,6 +38,7 @@ describe FollowerAccountsController do
context 'when format is json' do
subject(:response) { get :index, params: { account_username: alice.username, page: page, format: :json } }
+
subject(:body) { JSON.parse(response.body) }
context 'with page' do
diff --git a/spec/controllers/following_accounts_controller_spec.rb b/spec/controllers/following_accounts_controller_spec.rb
index e43dbf882..b41bf0575 100644
--- a/spec/controllers/following_accounts_controller_spec.rb
+++ b/spec/controllers/following_accounts_controller_spec.rb
@@ -38,6 +38,7 @@ describe FollowingAccountsController do
context 'when format is json' do
subject(:response) { get :index, params: { account_username: alice.username, page: page, format: :json } }
+
subject(:body) { JSON.parse(response.body) }
context 'with page' do
diff --git a/spec/controllers/relationships_controller_spec.rb b/spec/controllers/relationships_controller_spec.rb
index 2056a2ac2..cd09cf50b 100644
--- a/spec/controllers/relationships_controller_spec.rb
+++ b/spec/controllers/relationships_controller_spec.rb
@@ -51,6 +51,7 @@ describe RelationshipsController do
context 'when select parameter is not provided' do
subject { patch :update }
+
include_examples 'redirects back to followers page'
end
diff --git a/spec/lib/activitypub/activity/delete_spec.rb b/spec/lib/activitypub/activity/delete_spec.rb
index 9dfb8a61b..40cd0fce9 100644
--- a/spec/lib/activitypub/activity/delete_spec.rb
+++ b/spec/lib/activitypub/activity/delete_spec.rb
@@ -30,6 +30,7 @@ RSpec.describe ActivityPub::Activity::Delete do
context 'when the status has been reblogged' do
describe '#perform' do
subject { described_class.new(json, sender) }
+
let!(:reblogger) { Fabricate(:account) }
let!(:follower) { Fabricate(:account, username: 'follower', protocol: :activitypub, domain: 'example.com', inbox_url: 'http://example.com/inbox') }
let!(:reblog) { Fabricate(:status, account: reblogger, reblog: status) }
@@ -53,6 +54,7 @@ RSpec.describe ActivityPub::Activity::Delete do
context 'when the status has been reported' do
describe '#perform' do
subject { described_class.new(json, sender) }
+
let!(:reporter) { Fabricate(:account) }
before do
diff --git a/spec/lib/activitypub/activity/flag_spec.rb b/spec/lib/activitypub/activity/flag_spec.rb
index 7890fd1e8..c2a505356 100644
--- a/spec/lib/activitypub/activity/flag_spec.rb
+++ b/spec/lib/activitypub/activity/flag_spec.rb
@@ -110,6 +110,7 @@ RSpec.describe ActivityPub::Activity::Flag do
describe '#perform with a defined uri' do
subject { described_class.new(json, sender) }
+
let(:flag_id) { 'http://example.com/reports/1' }
before do
diff --git a/spec/models/admin/account_action_spec.rb b/spec/models/admin/account_action_spec.rb
index b6a052b76..4516df2c2 100644
--- a/spec/models/admin/account_action_spec.rb
+++ b/spec/models/admin/account_action_spec.rb
@@ -5,6 +5,7 @@ RSpec.describe Admin::AccountAction, type: :model do
describe '#save!' do
subject { account_action.save! }
+
let(:account) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
let(:target_account) { Fabricate(:account) }
let(:type) { 'disable' }
diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb
index c2f7e99ac..d23439f1a 100644
--- a/spec/models/user_spec.rb
+++ b/spec/models/user_spec.rb
@@ -409,6 +409,7 @@ RSpec.describe User, type: :model do
describe '#disable!' do
subject(:user) { Fabricate(:user, disabled: false, current_sign_in_at: current_sign_in_at, last_sign_in_at: nil) }
+
let(:current_sign_in_at) { Time.zone.now }
before do
@@ -497,6 +498,7 @@ RSpec.describe User, type: :model do
describe '#active_for_authentication?' do
subject { user.active_for_authentication? }
+
let(:user) { Fabricate(:user, disabled: disabled, confirmed_at: confirmed_at) }
context 'when user is disabled' do
diff --git a/spec/services/fetch_remote_status_service_spec.rb b/spec/services/fetch_remote_status_service_spec.rb
index 02c62f8d6..ace520b8f 100644
--- a/spec/services/fetch_remote_status_service_spec.rb
+++ b/spec/services/fetch_remote_status_service_spec.rb
@@ -16,6 +16,7 @@ RSpec.describe FetchRemoteStatusService, type: :service do
context 'protocol is :activitypub' do
subject { described_class.new.call(note[:id], prefetched_body: prefetched_body) }
+
let(:prefetched_body) { Oj.dump(note) }
before do
diff --git a/spec/workers/refollow_worker_spec.rb b/spec/workers/refollow_worker_spec.rb
index d9c2293b6..1dac15385 100644
--- a/spec/workers/refollow_worker_spec.rb
+++ b/spec/workers/refollow_worker_spec.rb
@@ -4,6 +4,7 @@ require 'rails_helper'
describe RefollowWorker do
subject { described_class.new }
+
let(:account) { Fabricate(:account, domain: 'example.org', protocol: :activitypub) }
let(:alice) { Fabricate(:account, domain: nil, username: 'alice') }
let(:bob) { Fabricate(:account, domain: nil, username: 'bob') }
--
cgit
From 5179c47087e7807162f1466ec61a797586de007f Mon Sep 17 00:00:00 2001
From: Nick Schonning
Date: Sun, 19 Feb 2023 21:17:41 -0500
Subject: Autofix Rubocops RSpec/ScatteredLet (#23725)
---
.rubocop_todo.yml | 13 ------
.../admin/domain_blocks_controller_spec.rb | 9 ++---
.../api/v1/admin/domain_blocks_controller_spec.rb | 9 ++---
.../api/v1/push/subscriptions_controller_spec.rb | 14 +++----
spec/lib/activitypub/activity/create_spec.rb | 46 ++++++++++------------
spec/lib/vacuum/media_attachments_vacuum_spec.rb | 5 +--
.../process_status_update_service_spec.rb | 28 ++++++-------
spec/services/fan_out_on_write_service_spec.rb | 3 +-
spec/services/import_service_spec.rb | 12 +++---
9 files changed, 56 insertions(+), 83 deletions(-)
(limited to 'spec/lib')
diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml
index 521608de6..308e0e69e 100644
--- a/.rubocop_todo.yml
+++ b/.rubocop_todo.yml
@@ -1629,19 +1629,6 @@ RSpec/RepeatedExampleGroupDescription:
- 'spec/controllers/admin/reports/actions_controller_spec.rb'
- 'spec/policies/report_note_policy_spec.rb'
-# Offense count: 18
-# This cop supports safe autocorrection (--autocorrect).
-RSpec/ScatteredLet:
- Exclude:
- - 'spec/controllers/admin/domain_blocks_controller_spec.rb'
- - 'spec/controllers/api/v1/admin/domain_blocks_controller_spec.rb'
- - 'spec/controllers/api/v1/push/subscriptions_controller_spec.rb'
- - 'spec/lib/activitypub/activity/create_spec.rb'
- - 'spec/lib/vacuum/media_attachments_vacuum_spec.rb'
- - 'spec/services/activitypub/process_status_update_service_spec.rb'
- - 'spec/services/fan_out_on_write_service_spec.rb'
- - 'spec/services/import_service_spec.rb'
-
# Offense count: 12
RSpec/ScatteredSetup:
Exclude:
diff --git a/spec/controllers/admin/domain_blocks_controller_spec.rb b/spec/controllers/admin/domain_blocks_controller_spec.rb
index 92fc19efa..d58a0cafc 100644
--- a/spec/controllers/admin/domain_blocks_controller_spec.rb
+++ b/spec/controllers/admin/domain_blocks_controller_spec.rb
@@ -72,16 +72,15 @@ RSpec.describe Admin::DomainBlocksController, type: :controller do
describe 'PUT #update' do
let!(:remote_account) { Fabricate(:account, domain: 'example.com') }
- let(:domain_block) { Fabricate(:domain_block, domain: 'example.com', severity: original_severity) }
+ let(:subject) do
+ post :update, params: { id: domain_block.id, domain_block: { domain: 'example.com', severity: new_severity } }
+ end
+ let(:domain_block) { Fabricate(:domain_block, domain: 'example.com', severity: original_severity) }
before do
BlockDomainService.new.call(domain_block)
end
- let(:subject) do
- post :update, params: { id: domain_block.id, domain_block: { domain: 'example.com', severity: new_severity } }
- end
-
context 'downgrading a domain suspension to silence' do
let(:original_severity) { 'suspend' }
let(:new_severity) { 'silence' }
diff --git a/spec/controllers/api/v1/admin/domain_blocks_controller_spec.rb b/spec/controllers/api/v1/admin/domain_blocks_controller_spec.rb
index 606def602..b367ab9ce 100644
--- a/spec/controllers/api/v1/admin/domain_blocks_controller_spec.rb
+++ b/spec/controllers/api/v1/admin/domain_blocks_controller_spec.rb
@@ -73,16 +73,15 @@ RSpec.describe Api::V1::Admin::DomainBlocksController, type: :controller do
describe 'PUT #update' do
let!(:remote_account) { Fabricate(:account, domain: 'example.com') }
- let(:domain_block) { Fabricate(:domain_block, domain: 'example.com', severity: original_severity) }
+ let(:subject) do
+ post :update, params: { id: domain_block.id, domain: 'example.com', severity: new_severity }
+ end
+ let(:domain_block) { Fabricate(:domain_block, domain: 'example.com', severity: original_severity) }
before do
BlockDomainService.new.call(domain_block)
end
- let(:subject) do
- post :update, params: { id: domain_block.id, domain: 'example.com', severity: new_severity }
- end
-
context 'downgrading a domain suspension to silence' do
let(:original_severity) { 'suspend' }
let(:new_severity) { 'silence' }
diff --git a/spec/controllers/api/v1/push/subscriptions_controller_spec.rb b/spec/controllers/api/v1/push/subscriptions_controller_spec.rb
index 67f09da2d..168191468 100644
--- a/spec/controllers/api/v1/push/subscriptions_controller_spec.rb
+++ b/spec/controllers/api/v1/push/subscriptions_controller_spec.rb
@@ -5,13 +5,7 @@ require 'rails_helper'
describe Api::V1::Push::SubscriptionsController do
render_views
- let(:user) { Fabricate(:user) }
- let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'push') }
-
- before do
- allow(controller).to receive(:doorkeeper_token) { token }
- end
-
+ let(:user) { Fabricate(:user) }
let(:create_payload) do
{
subscription: {
@@ -23,7 +17,6 @@ describe Api::V1::Push::SubscriptionsController do
},
}.with_indifferent_access
end
-
let(:alerts_payload) do
{
data: {
@@ -41,6 +34,11 @@ describe Api::V1::Push::SubscriptionsController do
},
}.with_indifferent_access
end
+ let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'push') }
+
+ before do
+ allow(controller).to receive(:doorkeeper_token) { token }
+ end
describe 'POST #create' do
before do
diff --git a/spec/lib/activitypub/activity/create_spec.rb b/spec/lib/activitypub/activity/create_spec.rb
index 132e0c31c..ddbdb07aa 100644
--- a/spec/lib/activitypub/activity/create_spec.rb
+++ b/spec/lib/activitypub/activity/create_spec.rb
@@ -753,10 +753,6 @@ RSpec.describe ActivityPub::Activity::Create do
context 'with an encrypted message' do
let(:recipient) { Fabricate(:account) }
- let(:target_device) { Fabricate(:device, account: recipient) }
-
- subject { described_class.new(json, sender, delivery: true, delivered_to_account_id: recipient.id) }
-
let(:object_json) do
{
id: [ActivityPub::TagManager.instance.uri_for(sender), '#bar'].join,
@@ -778,6 +774,9 @@ 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
@@ -833,13 +832,6 @@ RSpec.describe ActivityPub::Activity::Create do
context 'when sender replies to local status' do
let!(:local_status) { Fabricate(:status) }
-
- subject { described_class.new(json, sender, delivery: true) }
-
- before do
- subject.perform
- end
-
let(:object_json) do
{
id: [ActivityPub::TagManager.instance.uri_for(sender), '#bar'].join,
@@ -849,6 +841,12 @@ RSpec.describe ActivityPub::Activity::Create do
}
end
+ subject { described_class.new(json, sender, delivery: true) }
+
+ before do
+ subject.perform
+ end
+
it 'creates status' do
status = sender.statuses.first
@@ -859,13 +857,6 @@ RSpec.describe ActivityPub::Activity::Create do
context 'when sender targets a local user' do
let!(:local_account) { Fabricate(:account) }
-
- subject { described_class.new(json, sender, delivery: true) }
-
- before do
- subject.perform
- end
-
let(:object_json) do
{
id: [ActivityPub::TagManager.instance.uri_for(sender), '#bar'].join,
@@ -875,6 +866,12 @@ RSpec.describe ActivityPub::Activity::Create do
}
end
+ subject { described_class.new(json, sender, delivery: true) }
+
+ before do
+ subject.perform
+ end
+
it 'creates status' do
status = sender.statuses.first
@@ -885,13 +882,6 @@ RSpec.describe ActivityPub::Activity::Create do
context 'when sender cc\'s a local user' do
let!(:local_account) { Fabricate(:account) }
-
- subject { described_class.new(json, sender, delivery: true) }
-
- before do
- subject.perform
- end
-
let(:object_json) do
{
id: [ActivityPub::TagManager.instance.uri_for(sender), '#bar'].join,
@@ -901,6 +891,12 @@ RSpec.describe ActivityPub::Activity::Create do
}
end
+ subject { described_class.new(json, sender, delivery: true) }
+
+ before do
+ subject.perform
+ end
+
it 'creates status' do
status = sender.statuses.first
diff --git a/spec/lib/vacuum/media_attachments_vacuum_spec.rb b/spec/lib/vacuum/media_attachments_vacuum_spec.rb
index be8458d9b..436237b25 100644
--- a/spec/lib/vacuum/media_attachments_vacuum_spec.rb
+++ b/spec/lib/vacuum/media_attachments_vacuum_spec.rb
@@ -2,12 +2,11 @@ require 'rails_helper'
RSpec.describe Vacuum::MediaAttachmentsVacuum do
let(:retention_period) { 7.days }
-
- subject { described_class.new(retention_period) }
-
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/services/activitypub/process_status_update_service_spec.rb b/spec/services/activitypub/process_status_update_service_spec.rb
index ae7db88bf..9a6d75ec0 100644
--- a/spec/services/activitypub/process_status_update_service_spec.rb
+++ b/spec/services/activitypub/process_status_update_service_spec.rb
@@ -6,20 +6,6 @@ end
RSpec.describe ActivityPub::ProcessStatusUpdateService, type: :service do
let!(:status) { Fabricate(:status, text: 'Hello world', account: Fabricate(:account, domain: 'example.com')) }
-
- let(:alice) { Fabricate(:account) }
- let(:bob) { Fabricate(:account) }
-
- let(:mentions) { [] }
- let(:tags) { [] }
- let(:media_attachments) { [] }
-
- before do
- mentions.each { |a| Fabricate(:mention, status: status, account: a) }
- tags.each { |t| status.tags << t }
- media_attachments.each { |m| status.media_attachments << m }
- end
-
let(:payload) do
{
'@context': 'https://www.w3.org/ns/activitystreams',
@@ -34,9 +20,21 @@ RSpec.describe ActivityPub::ProcessStatusUpdateService, type: :service do
],
}
end
-
let(:json) { Oj.load(Oj.dump(payload)) }
+ let(:alice) { Fabricate(:account) }
+ let(:bob) { Fabricate(:account) }
+
+ let(:mentions) { [] }
+ let(:tags) { [] }
+ let(:media_attachments) { [] }
+
+ before do
+ mentions.each { |a| Fabricate(:mention, status: status, account: a) }
+ tags.each { |t| status.tags << t }
+ media_attachments.each { |m| status.media_attachments << m }
+ end
+
subject { described_class.new }
describe '#call' do
diff --git a/spec/services/fan_out_on_write_service_spec.rb b/spec/services/fan_out_on_write_service_spec.rb
index 59e15d230..3c294cf95 100644
--- a/spec/services/fan_out_on_write_service_spec.rb
+++ b/spec/services/fan_out_on_write_service_spec.rb
@@ -2,6 +2,7 @@ require 'rails_helper'
RSpec.describe FanOutOnWriteService, type: :service do
let(:last_active_at) { Time.now.utc }
+ let(:status) { Fabricate(:status, account: alice, visibility: visibility, text: 'Hello @bob #hoge') }
let!(:alice) { Fabricate(:user, current_sign_in_at: last_active_at).account }
let!(:bob) { Fabricate(:user, current_sign_in_at: last_active_at, account_attributes: { username: 'bob' }).account }
@@ -9,8 +10,6 @@ RSpec.describe FanOutOnWriteService, type: :service do
subject { described_class.new }
- let(:status) { Fabricate(:status, account: alice, visibility: visibility, text: 'Hello @bob #hoge') }
-
before do
bob.follow!(alice)
tom.follow!(alice)
diff --git a/spec/services/import_service_spec.rb b/spec/services/import_service_spec.rb
index 2b1516ff0..4a517fb93 100644
--- a/spec/services/import_service_spec.rb
+++ b/spec/services/import_service_spec.rb
@@ -183,15 +183,14 @@ RSpec.describe ImportService, type: :service do
subject { ImportService.new }
let!(:nare) { Fabricate(:account, username: 'nare', domain: 'թութ.հայ', locked: false, protocol: :activitypub, inbox_url: 'https://թութ.հայ/inbox') }
+ let(:csv) { attachment_fixture('utf8-followers.txt') }
+ let(:import) { Import.create(account: account, type: 'following', data: csv) }
# Make sure to not actually go to the remote server
before do
stub_request(:post, 'https://թութ.հայ/inbox').to_return(status: 200)
end
- let(:csv) { attachment_fixture('utf8-followers.txt') }
- let(:import) { Import.create(account: account, type: 'following', data: csv) }
-
it 'follows the listed account' do
expect(account.follow_requests.count).to eq 0
subject.call(import)
@@ -203,6 +202,9 @@ RSpec.describe ImportService, type: :service do
subject { ImportService.new }
let(:csv) { attachment_fixture('bookmark-imports.txt') }
+ let(:local_account) { Fabricate(:account, username: 'foo', domain: '') }
+ let!(:remote_status) { Fabricate(:status, uri: 'https://example.com/statuses/1312') }
+ let!(:direct_status) { Fabricate(:status, uri: 'https://example.com/statuses/direct', visibility: :direct) }
around(:each) do |example|
local_before = Rails.configuration.x.local_domain
@@ -214,10 +216,6 @@ RSpec.describe ImportService, type: :service do
Rails.configuration.x.local_domain = local_before
end
- let(:local_account) { Fabricate(:account, username: 'foo', domain: '') }
- let!(:remote_status) { Fabricate(:status, uri: 'https://example.com/statuses/1312') }
- let!(:direct_status) { Fabricate(:status, uri: 'https://example.com/statuses/direct', visibility: :direct) }
-
before do
service = double
allow(ActivityPub::FetchRemoteStatusService).to receive(:new).and_return(service)
--
cgit
From 38a1d8bb85da6c7a52a3bde28af368b8d2104d02 Mon Sep 17 00:00:00 2001
From: Nick Schonning
Date: Sun, 19 Feb 2023 23:00:48 -0500
Subject: Autofix Rubocop RSpec/ImplicitSubject (#23721)
---
.rubocop_todo.yml | 86 +++++++---------------
app/serializers/initial_state_serializer.rb | 1 -
spec/controllers/admin/accounts_controller_spec.rb | 32 ++++----
.../controllers/admin/instances_controller_spec.rb | 4 +-
spec/controllers/application_controller_spec.rb | 2 +-
spec/controllers/home_controller_spec.rb | 4 +-
spec/controllers/relationships_controller_spec.rb | 2 +-
.../settings/featured_tags_controller_spec.rb | 2 +-
.../settings/migrations_controller_spec.rb | 18 ++---
.../settings/sessions_controller_spec.rb | 4 +-
spec/features/log_in_spec.rb | 6 +-
spec/features/profile_spec.rb | 4 +-
spec/lib/emoji_formatter_spec.rb | 8 +-
spec/lib/entity_cache_spec.rb | 2 +-
spec/lib/html_aware_formatter_spec.rb | 8 +-
spec/lib/ostatus/tag_manager_spec.rb | 6 +-
spec/lib/plain_text_formatter_spec.rb | 4 +-
spec/lib/text_formatter_spec.rb | 78 ++++++++++----------
spec/models/concerns/account_interactions_spec.rb | 86 +++++++++++-----------
spec/models/custom_emoji_spec.rb | 12 +--
spec/models/media_attachment_spec.rb | 10 +--
spec/models/notification_spec.rb | 2 +-
spec/models/remote_follow_spec.rb | 10 +--
spec/models/report_spec.rb | 4 +-
spec/models/session_activation_spec.rb | 6 +-
spec/models/setting_spec.rb | 4 +-
26 files changed, 184 insertions(+), 221 deletions(-)
(limited to 'spec/lib')
diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml
index 7cb4d55e0..4c3b3ecb6 100644
--- a/.rubocop_todo.yml
+++ b/.rubocop_todo.yml
@@ -1,6 +1,6 @@
# This configuration was generated by
# `rubocop --auto-gen-config --auto-gen-only-exclude --no-exclude-limit`
-# on 2023-02-16 05:53:07 UTC using RuboCop version 1.45.1.
+# on 2023-02-19 06:22:09 UTC using RuboCop version 1.45.1.
# The point is for the user to remove these configuration records
# one by one as the offenses are removed from the code base.
# Note that changes in the inspected code, or installation of new
@@ -162,7 +162,7 @@ Layout/HashAlignment:
- 'spec/models/admin/account_action_spec.rb'
- 'spec/models/concerns/account_interactions_spec.rb'
-# Offense count: 577
+# Offense count: 581
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, AllowedPatterns.
# URISchemes: http, https
@@ -305,18 +305,17 @@ Lint/Void:
Exclude:
- 'spec/services/resolve_account_service_spec.rb'
-# Offense count: 65
+# Offense count: 66
# Configuration parameters: AllowedMethods, AllowedPatterns, CountRepeatedAttributes.
Metrics/AbcSize:
Enabled: false
-# Offense count: 11
+# Offense count: 10
# Configuration parameters: CountComments, Max, CountAsOne, AllowedMethods, AllowedPatterns, inherit_mode.
# AllowedMethods: refine
Metrics/BlockLength:
Exclude:
- 'app/models/concerns/account_interactions.rb'
- - 'app/models/concerns/omniauthable.rb'
- 'db/post_migrate/20221101190723_backfill_admin_action_logs.rb'
- 'db/post_migrate/20221206114142_backfill_admin_action_logs_again.rb'
- 'lib/tasks/branding.rake'
@@ -335,7 +334,7 @@ Metrics/BlockNesting:
Metrics/CyclomaticComplexity:
Enabled: false
-# Offense count: 40
+# Offense count: 35
# Configuration parameters: CountComments, CountAsOne, AllowedMethods, AllowedPatterns.
Metrics/MethodLength:
Enabled: false
@@ -936,37 +935,6 @@ RSpec/HookArgument:
- 'spec/services/import_service_spec.rb'
- 'spec/spec_helper.rb'
-# Offense count: 159
-# This cop supports safe autocorrection (--autocorrect).
-# Configuration parameters: EnforcedStyle.
-# SupportedStyles: single_line_only, single_statement_only, disallow, require_implicit
-RSpec/ImplicitSubject:
- Exclude:
- - 'spec/controllers/admin/accounts_controller_spec.rb'
- - 'spec/controllers/admin/instances_controller_spec.rb'
- - 'spec/controllers/application_controller_spec.rb'
- - 'spec/controllers/home_controller_spec.rb'
- - 'spec/controllers/relationships_controller_spec.rb'
- - 'spec/controllers/settings/featured_tags_controller_spec.rb'
- - 'spec/controllers/settings/migrations_controller_spec.rb'
- - 'spec/controllers/settings/sessions_controller_spec.rb'
- - 'spec/features/log_in_spec.rb'
- - 'spec/features/profile_spec.rb'
- - 'spec/lib/emoji_formatter_spec.rb'
- - 'spec/lib/entity_cache_spec.rb'
- - 'spec/lib/html_aware_formatter_spec.rb'
- - 'spec/lib/ostatus/tag_manager_spec.rb'
- - 'spec/lib/plain_text_formatter_spec.rb'
- - 'spec/lib/text_formatter_spec.rb'
- - 'spec/models/concerns/account_interactions_spec.rb'
- - 'spec/models/custom_emoji_spec.rb'
- - 'spec/models/media_attachment_spec.rb'
- - 'spec/models/notification_spec.rb'
- - 'spec/models/remote_follow_spec.rb'
- - 'spec/models/report_spec.rb'
- - 'spec/models/session_activation_spec.rb'
- - 'spec/models/setting_spec.rb'
-
# Offense count: 101
# Configuration parameters: AssignmentOnly.
RSpec/InstanceVariable:
@@ -1199,7 +1167,7 @@ RSpec/MissingExampleGroupArgument:
RSpec/MultipleExpectations:
Max: 19
-# Offense count: 443
+# Offense count: 442
# Configuration parameters: AllowSubject.
RSpec/MultipleMemoizedHelpers:
Max: 21
@@ -1216,7 +1184,7 @@ RSpec/MultipleSubjects:
- 'spec/controllers/follower_accounts_controller_spec.rb'
- 'spec/controllers/following_accounts_controller_spec.rb'
-# Offense count: 1252
+# Offense count: 1407
# Configuration parameters: EnforcedStyle, IgnoreSharedExamples.
# SupportedStyles: always, named_only
RSpec/NamedSubject:
@@ -1226,6 +1194,7 @@ RSpec/NamedSubject:
- 'spec/controllers/admin/confirmations_controller_spec.rb'
- 'spec/controllers/admin/custom_emojis_controller_spec.rb'
- 'spec/controllers/admin/domain_blocks_controller_spec.rb'
+ - 'spec/controllers/admin/instances_controller_spec.rb'
- 'spec/controllers/admin/invites_controller_spec.rb'
- 'spec/controllers/admin/report_notes_controller_spec.rb'
- 'spec/controllers/api/v1/accounts/notes_controller_spec.rb'
@@ -1233,13 +1202,18 @@ RSpec/NamedSubject:
- 'spec/controllers/api/v1/admin/domain_blocks_controller_spec.rb'
- 'spec/controllers/auth/passwords_controller_spec.rb'
- 'spec/controllers/auth/registrations_controller_spec.rb'
+ - 'spec/controllers/home_controller_spec.rb'
- 'spec/controllers/invites_controller_spec.rb'
- 'spec/controllers/oauth/authorizations_controller_spec.rb'
- 'spec/controllers/oauth/authorized_applications_controller_spec.rb'
- 'spec/controllers/relationships_controller_spec.rb'
- 'spec/controllers/settings/featured_tags_controller_spec.rb'
+ - 'spec/controllers/settings/migrations_controller_spec.rb'
+ - 'spec/controllers/settings/sessions_controller_spec.rb'
- 'spec/controllers/settings/two_factor_authentication/confirmations_controller_spec.rb'
- 'spec/controllers/well_known/webfinger_controller_spec.rb'
+ - 'spec/features/log_in_spec.rb'
+ - 'spec/features/profile_spec.rb'
- 'spec/lib/activitypub/activity/accept_spec.rb'
- 'spec/lib/activitypub/activity/add_spec.rb'
- 'spec/lib/activitypub/activity/announce_spec.rb'
@@ -1262,16 +1236,21 @@ RSpec/NamedSubject:
- 'spec/lib/connection_pool/shared_timed_stack_spec.rb'
- 'spec/lib/delivery_failure_tracker_spec.rb'
- 'spec/lib/emoji_formatter_spec.rb'
+ - 'spec/lib/entity_cache_spec.rb'
- 'spec/lib/fast_ip_map_spec.rb'
- 'spec/lib/feed_manager_spec.rb'
- 'spec/lib/hashtag_normalizer_spec.rb'
+ - 'spec/lib/html_aware_formatter_spec.rb'
- 'spec/lib/link_details_extractor_spec.rb'
+ - 'spec/lib/ostatus/tag_manager_spec.rb'
+ - 'spec/lib/plain_text_formatter_spec.rb'
- 'spec/lib/request_pool_spec.rb'
- 'spec/lib/request_spec.rb'
- 'spec/lib/sanitize_config_spec.rb'
- 'spec/lib/status_finder_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/access_tokens_vacuum_spec.rb'
- 'spec/lib/vacuum/backups_vacuum_spec.rb'
- 'spec/lib/vacuum/feeds_vacuum_spec.rb'
@@ -1288,11 +1267,17 @@ RSpec/NamedSubject:
- 'spec/models/canonical_email_block_spec.rb'
- 'spec/models/concerns/account_interactions_spec.rb'
- 'spec/models/custom_emoji_filter_spec.rb'
+ - 'spec/models/custom_emoji_spec.rb'
- 'spec/models/follow_spec.rb'
- 'spec/models/home_feed_spec.rb'
+ - 'spec/models/media_attachment_spec.rb'
- 'spec/models/notification_spec.rb'
- 'spec/models/public_feed_spec.rb'
- 'spec/models/relationship_filter_spec.rb'
+ - 'spec/models/remote_follow_spec.rb'
+ - 'spec/models/report_spec.rb'
+ - 'spec/models/session_activation_spec.rb'
+ - 'spec/models/setting_spec.rb'
- 'spec/models/status_spec.rb'
- 'spec/models/tag_spec.rb'
- 'spec/models/trends/statuses_spec.rb'
@@ -2347,46 +2332,25 @@ Style/FormatStringToken:
Style/FrozenStringLiteralComment:
Enabled: false
-# Offense count: 69
+# Offense count: 34
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: MinBodyLength, AllowConsecutiveConditionals.
Style/GuardClause:
Exclude:
- 'app/controllers/admin/confirmations_controller.rb'
- - 'app/controllers/admin/domain_blocks_controller.rb'
- - 'app/controllers/api/v1/accounts/follower_accounts_controller.rb'
- - 'app/controllers/api/v1/accounts/following_accounts_controller.rb'
- - 'app/controllers/api/v1/accounts/statuses_controller.rb'
- - 'app/controllers/api/v1/blocks_controller.rb'
- - 'app/controllers/api/v1/conversations_controller.rb'
- - 'app/controllers/api/v1/domain_blocks_controller.rb'
- - 'app/controllers/api/v1/endorsements_controller.rb'
- - 'app/controllers/api/v1/favourites_controller.rb'
- - 'app/controllers/api/v1/follow_requests_controller.rb'
- - 'app/controllers/api/v1/lists/accounts_controller.rb'
- - 'app/controllers/api/v1/mutes_controller.rb'
- - 'app/controllers/api/v1/notifications_controller.rb'
- - 'app/controllers/api/v1/scheduled_statuses_controller.rb'
- - 'app/controllers/api/v1/statuses/favourited_by_accounts_controller.rb'
- - 'app/controllers/api/v1/statuses/reblogged_by_accounts_controller.rb'
- 'app/controllers/auth/confirmations_controller.rb'
- 'app/controllers/auth/passwords_controller.rb'
- - 'app/controllers/filters/statuses_controller.rb'
- 'app/controllers/settings/two_factor_authentication/webauthn_credentials_controller.rb'
- 'app/lib/activitypub/activity/block.rb'
- - 'app/lib/activitypub/linked_data_signature.rb'
- 'app/lib/connection_pool/shared_connection_pool.rb'
- 'app/lib/request.rb'
- 'app/lib/request_pool.rb'
- - 'app/lib/status_finder.rb'
- 'app/lib/webfinger.rb'
- 'app/lib/webfinger_resource.rb'
- - 'app/models/account_statuses_cleanup_policy.rb'
- 'app/models/concerns/account_counters.rb'
- 'app/models/concerns/ldap_authenticable.rb'
- 'app/models/tag.rb'
- 'app/models/user.rb'
- - 'app/serializers/rest/instance_serializer.rb'
- 'app/services/fan_out_on_write_service.rb'
- 'app/services/post_status_service.rb'
- 'app/services/process_hashtags_service.rb'
diff --git a/app/serializers/initial_state_serializer.rb b/app/serializers/initial_state_serializer.rb
index fa1ddc6d3..7905444e9 100644
--- a/app/serializers/initial_state_serializer.rb
+++ b/app/serializers/initial_state_serializer.rb
@@ -65,7 +65,6 @@ class InitialStateSerializer < ActiveModel::Serializer
store
end
- # rubocop:enable Metrics/AbcSize
def compose
store = {}
diff --git a/spec/controllers/admin/accounts_controller_spec.rb b/spec/controllers/admin/accounts_controller_spec.rb
index f5d68a8ad..fdc98ed46 100644
--- a/spec/controllers/admin/accounts_controller_spec.rb
+++ b/spec/controllers/admin/accounts_controller_spec.rb
@@ -83,7 +83,7 @@ RSpec.describe Admin::AccountsController, type: :controller do
let(:target_role) { UserRole.find_by(name: 'Admin') }
it 'fails to memorialize account' do
- is_expected.to have_http_status 403
+ expect(subject).to have_http_status 403
expect(account.reload).to_not be_memorial
end
end
@@ -92,7 +92,7 @@ RSpec.describe Admin::AccountsController, type: :controller do
let(:target_role) { UserRole.find_by(name: 'Moderator') }
it 'succeeds in memorializing account' do
- is_expected.to redirect_to admin_account_path(account.id)
+ expect(subject).to redirect_to admin_account_path(account.id)
expect(account.reload).to be_memorial
end
end
@@ -105,7 +105,7 @@ RSpec.describe Admin::AccountsController, type: :controller do
let(:target_role) { UserRole.find_by(name: 'Admin') }
it 'fails to memorialize account' do
- is_expected.to have_http_status 403
+ expect(subject).to have_http_status 403
expect(account.reload).to_not be_memorial
end
end
@@ -114,7 +114,7 @@ RSpec.describe Admin::AccountsController, type: :controller do
let(:target_role) { UserRole.find_by(name: 'Moderator') }
it 'fails to memorialize account' do
- is_expected.to have_http_status 403
+ expect(subject).to have_http_status 403
expect(account.reload).to_not be_memorial
end
end
@@ -132,7 +132,7 @@ RSpec.describe Admin::AccountsController, type: :controller do
let(:role) { UserRole.find_by(name: 'Admin') }
it 'succeeds in enabling account' do
- is_expected.to redirect_to admin_account_path(account.id)
+ expect(subject).to redirect_to admin_account_path(account.id)
expect(user.reload).to_not be_disabled
end
end
@@ -141,7 +141,7 @@ RSpec.describe Admin::AccountsController, type: :controller do
let(:role) { UserRole.everyone }
it 'fails to enable account' do
- is_expected.to have_http_status 403
+ expect(subject).to have_http_status 403
expect(user.reload).to be_disabled
end
end
@@ -162,12 +162,12 @@ RSpec.describe Admin::AccountsController, type: :controller do
let(:role) { UserRole.find_by(name: 'Admin') }
it 'succeeds in approving account' do
- is_expected.to redirect_to admin_accounts_path(status: 'pending')
+ expect(subject).to redirect_to admin_accounts_path(status: 'pending')
expect(user.reload).to be_approved
end
it 'logs action' do
- is_expected.to have_http_status 302
+ expect(subject).to have_http_status 302
log_item = Admin::ActionLog.last
@@ -182,7 +182,7 @@ RSpec.describe Admin::AccountsController, type: :controller do
let(:role) { UserRole.everyone }
it 'fails to approve account' do
- is_expected.to have_http_status 403
+ expect(subject).to have_http_status 403
expect(user.reload).to_not be_approved
end
end
@@ -203,11 +203,11 @@ RSpec.describe Admin::AccountsController, type: :controller do
let(:role) { UserRole.find_by(name: 'Admin') }
it 'succeeds in rejecting account' do
- is_expected.to redirect_to admin_accounts_path(status: 'pending')
+ expect(subject).to redirect_to admin_accounts_path(status: 'pending')
end
it 'logs action' do
- is_expected.to have_http_status 302
+ expect(subject).to have_http_status 302
log_item = Admin::ActionLog.last
@@ -222,7 +222,7 @@ RSpec.describe Admin::AccountsController, type: :controller do
let(:role) { UserRole.everyone }
it 'fails to reject account' do
- is_expected.to have_http_status 403
+ expect(subject).to have_http_status 403
expect(user.reload).to_not be_approved
end
end
@@ -242,7 +242,7 @@ RSpec.describe Admin::AccountsController, type: :controller do
let(:role) { UserRole.find_by(name: 'Admin') }
it 'succeeds in redownloading' do
- is_expected.to redirect_to admin_account_path(account.id)
+ expect(subject).to redirect_to admin_account_path(account.id)
end
end
@@ -250,7 +250,7 @@ RSpec.describe Admin::AccountsController, type: :controller do
let(:role) { UserRole.everyone }
it 'fails to redownload' do
- is_expected.to have_http_status 403
+ expect(subject).to have_http_status 403
end
end
end
@@ -265,7 +265,7 @@ RSpec.describe Admin::AccountsController, type: :controller do
let(:role) { UserRole.find_by(name: 'Admin') }
it 'succeeds in removing avatar' do
- is_expected.to redirect_to admin_account_path(account.id)
+ expect(subject).to redirect_to admin_account_path(account.id)
end
end
@@ -273,7 +273,7 @@ RSpec.describe Admin::AccountsController, type: :controller do
let(:role) { UserRole.everyone }
it 'fails to remove avatar' do
- is_expected.to have_http_status 403
+ expect(subject).to have_http_status 403
end
end
end
diff --git a/spec/controllers/admin/instances_controller_spec.rb b/spec/controllers/admin/instances_controller_spec.rb
index a7e348b1c..4716e486a 100644
--- a/spec/controllers/admin/instances_controller_spec.rb
+++ b/spec/controllers/admin/instances_controller_spec.rb
@@ -42,7 +42,7 @@ RSpec.describe Admin::InstancesController, type: :controller do
let(:role) { UserRole.find_by(name: 'Admin') }
it 'succeeds in purging instance' do
- is_expected.to redirect_to admin_instances_path
+ expect(subject).to redirect_to admin_instances_path
end
end
@@ -50,7 +50,7 @@ RSpec.describe Admin::InstancesController, type: :controller do
let(:role) { nil }
it 'fails to purge instance' do
- is_expected.to have_http_status 403
+ expect(subject).to have_http_status 403
end
end
end
diff --git a/spec/controllers/application_controller_spec.rb b/spec/controllers/application_controller_spec.rb
index f14c451de..e2a63002b 100644
--- a/spec/controllers/application_controller_spec.rb
+++ b/spec/controllers/application_controller_spec.rb
@@ -28,7 +28,7 @@ describe ApplicationController, type: :controller do
end
it 'renders template for http' do
- is_expected.to render_template("errors/#{code}", layout: 'error')
+ expect(subject).to render_template("errors/#{code}", layout: 'error')
end
end
diff --git a/spec/controllers/home_controller_spec.rb b/spec/controllers/home_controller_spec.rb
index d845ae01d..2409bf42c 100644
--- a/spec/controllers/home_controller_spec.rb
+++ b/spec/controllers/home_controller_spec.rb
@@ -9,7 +9,7 @@ RSpec.describe HomeController, type: :controller do
context 'when not signed in' do
it 'returns http success' do
@request.path = '/'
- is_expected.to have_http_status(:success)
+ expect(subject).to have_http_status(:success)
end
end
@@ -21,7 +21,7 @@ RSpec.describe HomeController, type: :controller do
end
it 'returns http success' do
- is_expected.to have_http_status(:success)
+ expect(subject).to have_http_status(:success)
end
end
end
diff --git a/spec/controllers/relationships_controller_spec.rb b/spec/controllers/relationships_controller_spec.rb
index cd09cf50b..4c4227d66 100644
--- a/spec/controllers/relationships_controller_spec.rb
+++ b/spec/controllers/relationships_controller_spec.rb
@@ -7,7 +7,7 @@ describe RelationshipsController do
shared_examples 'authenticate user' do
it 'redirects when not signed in' do
- is_expected.to redirect_to '/auth/sign_in'
+ expect(subject).to redirect_to '/auth/sign_in'
end
end
diff --git a/spec/controllers/settings/featured_tags_controller_spec.rb b/spec/controllers/settings/featured_tags_controller_spec.rb
index 33b87f9f6..fc338672d 100644
--- a/spec/controllers/settings/featured_tags_controller_spec.rb
+++ b/spec/controllers/settings/featured_tags_controller_spec.rb
@@ -5,7 +5,7 @@ describe Settings::FeaturedTagsController do
shared_examples 'authenticate user' do
it 'redirects to sign_in page' do
- is_expected.to redirect_to new_user_session_path
+ expect(subject).to redirect_to new_user_session_path
end
end
diff --git a/spec/controllers/settings/migrations_controller_spec.rb b/spec/controllers/settings/migrations_controller_spec.rb
index 4ce153c9d..8159bb21b 100644
--- a/spec/controllers/settings/migrations_controller_spec.rb
+++ b/spec/controllers/settings/migrations_controller_spec.rb
@@ -5,7 +5,7 @@ describe Settings::MigrationsController do
shared_examples 'authenticate user' do
it 'redirects to sign_in page' do
- is_expected.to redirect_to new_user_session_path
+ expect(subject).to redirect_to new_user_session_path
end
end
@@ -27,8 +27,8 @@ describe Settings::MigrationsController do
let(:moved_to_account) { nil }
it 'renders show page' do
- is_expected.to have_http_status 200
- is_expected.to render_template :show
+ expect(subject).to have_http_status 200
+ expect(subject).to render_template :show
end
end
@@ -36,8 +36,8 @@ describe Settings::MigrationsController do
let(:moved_to_account) { Fabricate(:account) }
it 'renders show page' do
- is_expected.to have_http_status 200
- is_expected.to render_template :show
+ expect(subject).to have_http_status 200
+ expect(subject).to render_template :show
end
end
end
@@ -61,7 +61,7 @@ describe Settings::MigrationsController do
let(:acct) { Fabricate(:account, also_known_as: [ActivityPub::TagManager.instance.uri_for(user.account)]) }
it 'updates moved to account' do
- is_expected.to redirect_to settings_migration_path
+ expect(subject).to redirect_to settings_migration_path
expect(user.account.reload.moved_to_account_id).to eq acct.id
end
end
@@ -70,7 +70,7 @@ describe Settings::MigrationsController do
let(:acct) { user.account }
it 'renders show' do
- is_expected.to render_template :show
+ expect(subject).to render_template :show
end
it 'does not update the moved account' do
@@ -82,7 +82,7 @@ describe Settings::MigrationsController do
let(:acct) { Fabricate(:account, also_known_as: []) }
it 'renders show' do
- is_expected.to render_template :show
+ expect(subject).to render_template :show
end
it 'does not update the moved account' do
@@ -99,7 +99,7 @@ describe Settings::MigrationsController do
end
it 'renders show' do
- is_expected.to render_template :show
+ expect(subject).to render_template :show
end
it 'does not update the moved account' do
diff --git a/spec/controllers/settings/sessions_controller_spec.rb b/spec/controllers/settings/sessions_controller_spec.rb
index 59c18889e..fdf46d947 100644
--- a/spec/controllers/settings/sessions_controller_spec.rb
+++ b/spec/controllers/settings/sessions_controller_spec.rb
@@ -15,7 +15,7 @@ describe Settings::SessionsController do
let(:id) { session_activation.id }
it 'destroys session activation' do
- is_expected.to redirect_to edit_user_registration_path
+ expect(subject).to redirect_to edit_user_registration_path
expect(SessionActivation.find_by(id: id)).to be_nil
end
end
@@ -24,7 +24,7 @@ describe Settings::SessionsController do
let(:id) { session_activation.id + 1000 }
it 'destroys session activation' do
- is_expected.to have_http_status 404
+ expect(subject).to have_http_status 404
end
end
end
diff --git a/spec/features/log_in_spec.rb b/spec/features/log_in_spec.rb
index 5ae738ee2..934575ea6 100644
--- a/spec/features/log_in_spec.rb
+++ b/spec/features/log_in_spec.rb
@@ -21,7 +21,7 @@ describe 'Log in' do
fill_in 'user_password', with: password
click_on I18n.t('auth.login')
- is_expected.to have_css('div.app-holder')
+ expect(subject).to have_css('div.app-holder')
end
it 'A invalid email and password user is not able to log in' do
@@ -29,7 +29,7 @@ describe 'Log in' do
fill_in 'user_password', with: 'invalid_password'
click_on I18n.t('auth.login')
- is_expected.to have_css('.flash-message', text: failure_message('invalid'))
+ expect(subject).to have_css('.flash-message', text: failure_message('invalid'))
end
context do
@@ -40,7 +40,7 @@ describe 'Log in' do
fill_in 'user_password', with: password
click_on I18n.t('auth.login')
- is_expected.to have_css('div.admin-wrapper')
+ expect(subject).to have_css('div.admin-wrapper')
end
end
diff --git a/spec/features/profile_spec.rb b/spec/features/profile_spec.rb
index d1c6919c1..421b68a16 100644
--- a/spec/features/profile_spec.rb
+++ b/spec/features/profile_spec.rb
@@ -17,7 +17,7 @@ describe 'Profile' do
it 'I can view Annes public account' do
visit account_path('alice')
- is_expected.to have_title("alice (@alice@#{local_domain})")
+ expect(subject).to have_title("alice (@alice@#{local_domain})")
end
it 'I can change my account' do
@@ -28,6 +28,6 @@ describe 'Profile' do
first('button[type=submit]').click
- is_expected.to have_content 'Changes successfully saved!'
+ expect(subject).to have_content 'Changes successfully saved!'
end
end
diff --git a/spec/lib/emoji_formatter_spec.rb b/spec/lib/emoji_formatter_spec.rb
index e1747bdd9..c6fe8cf37 100644
--- a/spec/lib/emoji_formatter_spec.rb
+++ b/spec/lib/emoji_formatter_spec.rb
@@ -24,7 +24,7 @@ RSpec.describe EmojiFormatter do
let(:text) { preformat_text(':coolcat: Beep boop') }
it 'converts the shortcode to an image tag' do
- is_expected.to match(/Foo bar
'
+ expect(subject).to eq '
Foo bar
'
end
end
@@ -20,7 +20,7 @@ RSpec.describe HtmlAwareFormatter do
let(:text) { 'Beep boop' }
it 'keeps the plain text' do
- is_expected.to include 'Beep boop'
+ expect(subject).to include 'Beep boop'
end
end
@@ -28,7 +28,7 @@ RSpec.describe HtmlAwareFormatter do
let(:text) { '' }
it 'strips the scripts' do
- is_expected.to_not include ''
+ expect(subject).to_not include ''
end
end
@@ -36,7 +36,7 @@ RSpec.describe HtmlAwareFormatter do
let(:text) { 'Show more' }
it 'strips the malicious classes' do
- is_expected.to_not include 'status__content__spoiler-link'
+ expect(subject).to_not include 'status__content__spoiler-link'
end
end
end
diff --git a/spec/lib/ostatus/tag_manager_spec.rb b/spec/lib/ostatus/tag_manager_spec.rb
index 31195bae2..65ba7577a 100644
--- a/spec/lib/ostatus/tag_manager_spec.rb
+++ b/spec/lib/ostatus/tag_manager_spec.rb
@@ -45,7 +45,7 @@ describe OStatus::TagManager do
it 'returns the unique tag for status' do
expect(target.object_type).to eq :comment
- is_expected.to eq target.uri
+ expect(subject).to eq target.uri
end
end
@@ -54,7 +54,7 @@ describe OStatus::TagManager do
it 'returns the unique tag for status' do
expect(target.object_type).to eq :note
- is_expected.to eq target.uri
+ expect(subject).to eq target.uri
end
end
@@ -63,7 +63,7 @@ describe OStatus::TagManager do
it 'returns the URL for account' do
expect(target.object_type).to eq :person
- is_expected.to eq 'https://cb6e6126.ngrok.io/users/alice'
+ expect(subject).to eq 'https://cb6e6126.ngrok.io/users/alice'
end
end
end
diff --git a/spec/lib/plain_text_formatter_spec.rb b/spec/lib/plain_text_formatter_spec.rb
index c3d0ee630..0e5f39031 100644
--- a/spec/lib/plain_text_formatter_spec.rb
+++ b/spec/lib/plain_text_formatter_spec.rb
@@ -8,7 +8,7 @@ RSpec.describe PlainTextFormatter do
let(:status) { Fabricate(:status, text: '
a text by a nerd who uses an HTML tag in text
', uri: nil) }
it 'returns the raw text' do
- is_expected.to eq '
a text by a nerd who uses an HTML tag in text
'
+ expect(subject).to eq '
a text by a nerd who uses an HTML tag in text
'
end
end
@@ -17,7 +17,7 @@ RSpec.describe PlainTextFormatter do
let(:status) { Fabricate(:status, account: remote_account, text: '
Hello
') }
it 'returns tag-stripped text' do
- is_expected.to eq 'Hello'
+ expect(subject).to eq 'Hello'
end
end
end
diff --git a/spec/lib/text_formatter_spec.rb b/spec/lib/text_formatter_spec.rb
index cc742b65e..63a9075c7 100644
--- a/spec/lib/text_formatter_spec.rb
+++ b/spec/lib/text_formatter_spec.rb
@@ -10,7 +10,7 @@ RSpec.describe TextFormatter do
let(:text) { 'text' }
it 'paragraphizes the text' do
- is_expected.to eq '
text
'
+ expect(subject).to eq '
text
'
end
end
@@ -18,7 +18,7 @@ RSpec.describe TextFormatter do
let(:text) { "line\nfeed" }
it 'removes line feeds' do
- is_expected.to_not include "\n"
+ expect(subject).to_not include "\n"
end
end
@@ -27,7 +27,7 @@ RSpec.describe TextFormatter do
let(:text) { '@alice' }
it 'creates a mention link' do
- is_expected.to include '@alice'
+ expect(subject).to include '@alice'
end
end
@@ -36,7 +36,7 @@ RSpec.describe TextFormatter do
let(:text) { '@alice' }
it 'does not create a mention link' do
- is_expected.to include '@alice'
+ expect(subject).to include '@alice'
end
end
@@ -44,7 +44,7 @@ RSpec.describe TextFormatter do
let(:text) { 'https://hackernoon.com/the-power-to-build-communities-a-response-to-mark-zuckerberg-3f2cac9148a4' }
it 'matches the full URL' do
- is_expected.to include 'href="https://hackernoon.com/the-power-to-build-communities-a-response-to-mark-zuckerberg-3f2cac9148a4"'
+ expect(subject).to include 'href="https://hackernoon.com/the-power-to-build-communities-a-response-to-mark-zuckerberg-3f2cac9148a4"'
end
end
@@ -52,7 +52,7 @@ RSpec.describe TextFormatter do
let(:text) { 'http://google.com' }
it 'matches the full URL' do
- is_expected.to include 'href="http://google.com"'
+ expect(subject).to include 'href="http://google.com"'
end
end
@@ -60,7 +60,7 @@ RSpec.describe TextFormatter do
let(:text) { 'http://example.gay' }
it 'matches the full URL' do
- is_expected.to include 'href="http://example.gay"'
+ expect(subject).to include 'href="http://example.gay"'
end
end
@@ -68,11 +68,11 @@ RSpec.describe TextFormatter do
let(:text) { 'https://nic.みんな/' }
it 'matches the full URL' do
- is_expected.to include 'href="https://nic.みんな/"'
+ expect(subject).to include 'href="https://nic.みんな/"'
end
it 'has display URL' do
- is_expected.to include 'nic.みんな/'
+ expect(subject).to include 'nic.みんな/'
end
end
@@ -80,7 +80,7 @@ RSpec.describe TextFormatter do
let(:text) { 'http://www.mcmansionhell.com/post/156408871451/50-states-of-mcmansion-hell-scottsdale-arizona. ' }
it 'matches the full URL but not the period' do
- is_expected.to include 'href="http://www.mcmansionhell.com/post/156408871451/50-states-of-mcmansion-hell-scottsdale-arizona"'
+ expect(subject).to include 'href="http://www.mcmansionhell.com/post/156408871451/50-states-of-mcmansion-hell-scottsdale-arizona"'
end
end
@@ -88,7 +88,7 @@ RSpec.describe TextFormatter do
let(:text) { '(http://google.com/)' }
it 'matches the full URL but not the parentheses' do
- is_expected.to include 'href="http://google.com/"'
+ expect(subject).to include 'href="http://google.com/"'
end
end
@@ -96,7 +96,7 @@ RSpec.describe TextFormatter do
let(:text) { 'http://www.google.com!' }
it 'matches the full URL but not the exclamation point' do
- is_expected.to include 'href="http://www.google.com"'
+ expect(subject).to include 'href="http://www.google.com"'
end
end
@@ -104,7 +104,7 @@ RSpec.describe TextFormatter do
let(:text) { "http://www.google.com'" }
it 'matches the full URL but not the single quote' do
- is_expected.to include 'href="http://www.google.com"'
+ expect(subject).to include 'href="http://www.google.com"'
end
end
@@ -112,7 +112,7 @@ RSpec.describe TextFormatter do
let(:text) { 'http://www.google.com>' }
it 'matches the full URL but not the angle bracket' do
- is_expected.to include 'href="http://www.google.com"'
+ expect(subject).to include 'href="http://www.google.com"'
end
end
@@ -121,7 +121,7 @@ RSpec.describe TextFormatter do
let(:text) { 'https://www.ruby-toolbox.com/search?utf8=%E2%9C%93&q=autolink' }
it 'matches the full URL' do
- is_expected.to include 'href="https://www.ruby-toolbox.com/search?utf8=%E2%9C%93&q=autolink"'
+ expect(subject).to include 'href="https://www.ruby-toolbox.com/search?utf8=%E2%9C%93&q=autolink"'
end
end
@@ -129,7 +129,7 @@ RSpec.describe TextFormatter do
let(:text) { 'https://www.ruby-toolbox.com/search?utf8=✓&q=autolink' }
it 'matches the full URL' do
- is_expected.to include 'href="https://www.ruby-toolbox.com/search?utf8=✓&q=autolink"'
+ expect(subject).to include 'href="https://www.ruby-toolbox.com/search?utf8=✓&q=autolink"'
end
end
@@ -137,7 +137,7 @@ RSpec.describe TextFormatter do
let(:text) { 'https://www.ruby-toolbox.com/search?utf8=✓' }
it 'matches the full URL' do
- is_expected.to include 'href="https://www.ruby-toolbox.com/search?utf8=✓"'
+ expect(subject).to include 'href="https://www.ruby-toolbox.com/search?utf8=✓"'
end
end
@@ -145,7 +145,7 @@ RSpec.describe TextFormatter do
let(:text) { 'https://www.ruby-toolbox.com/search?utf8=%E2%9C%93&utf81=✓&q=autolink' }
it 'preserves escaped unicode characters' do
- is_expected.to include 'href="https://www.ruby-toolbox.com/search?utf8=%E2%9C%93&utf81=✓&q=autolink"'
+ expect(subject).to include 'href="https://www.ruby-toolbox.com/search?utf8=%E2%9C%93&utf81=✓&q=autolink"'
end
end
end
@@ -154,7 +154,7 @@ RSpec.describe TextFormatter do
let(:text) { 'https://en.wikipedia.org/wiki/Diaspora_(software)' }
it 'matches the full URL' do
- is_expected.to include 'href="https://en.wikipedia.org/wiki/Diaspora_(software)"'
+ expect(subject).to include 'href="https://en.wikipedia.org/wiki/Diaspora_(software)"'
end
end
@@ -162,7 +162,7 @@ RSpec.describe TextFormatter do
let(:text) { '"https://example.com/"' }
it 'does not match the quotation marks' do
- is_expected.to include 'href="https://example.com/"'
+ expect(subject).to include 'href="https://example.com/"'
end
end
@@ -170,7 +170,7 @@ RSpec.describe TextFormatter do
let(:text) { '' }
it 'does not match the angle brackets' do
- is_expected.to include 'href="https://example.com/"'
+ expect(subject).to include 'href="https://example.com/"'
end
end
@@ -178,7 +178,7 @@ RSpec.describe TextFormatter do
let(:text) { 'https://ja.wikipedia.org/wiki/日本' }
it 'matches the full URL' do
- is_expected.to include 'href="https://ja.wikipedia.org/wiki/日本"'
+ expect(subject).to include 'href="https://ja.wikipedia.org/wiki/日本"'
end
end
@@ -186,7 +186,7 @@ RSpec.describe TextFormatter do
let(:text) { 'https://ko.wikipedia.org/wiki/대한민국' }
it 'matches the full URL' do
- is_expected.to include 'href="https://ko.wikipedia.org/wiki/대한민국"'
+ expect(subject).to include 'href="https://ko.wikipedia.org/wiki/대한민국"'
end
end
@@ -194,7 +194,7 @@ RSpec.describe TextFormatter do
let(:text) { 'https://example.com/ abc123' }
it 'does not match the full-width space' do
- is_expected.to include 'href="https://example.com/"'
+ expect(subject).to include 'href="https://example.com/"'
end
end
@@ -202,7 +202,7 @@ RSpec.describe TextFormatter do
let(:text) { '「[https://example.org/」' }
it 'does not match the quotation marks' do
- is_expected.to include 'href="https://example.org/"'
+ expect(subject).to include 'href="https://example.org/"'
end
end
@@ -210,7 +210,7 @@ RSpec.describe TextFormatter do
let(:text) { 'https://baike.baidu.com/item/中华人民共和国' }
it 'matches the full URL' do
- is_expected.to include 'href="https://baike.baidu.com/item/中华人民共和国"'
+ expect(subject).to include 'href="https://baike.baidu.com/item/中华人民共和国"'
end
end
@@ -218,7 +218,7 @@ RSpec.describe TextFormatter do
let(:text) { 'https://zh.wikipedia.org/wiki/臺灣' }
it 'matches the full URL' do
- is_expected.to include 'href="https://zh.wikipedia.org/wiki/臺灣"'
+ expect(subject).to include 'href="https://zh.wikipedia.org/wiki/臺灣"'
end
end
@@ -226,11 +226,11 @@ RSpec.describe TextFormatter do
let(:text) { 'http://example.com/bb' }
it 'does not include the HTML in the URL' do
- is_expected.to include '"http://example.com/b"'
+ expect(subject).to include '"http://example.com/b"'
end
it 'escapes the HTML' do
- is_expected.to include '<del>b</del>'
+ expect(subject).to include '<del>b</del>'
end
end
@@ -238,11 +238,11 @@ RSpec.describe TextFormatter do
let(:text) { 'http://example.com/blahblahblahblah/a' }
it 'does not include the HTML in the URL' do
- is_expected.to include '"http://example.com/blahblahblahblah/a"'
+ expect(subject).to include '"http://example.com/blahblahblahblah/a"'
end
it 'escapes the HTML' do
- is_expected.to include '<script>alert("Hello")</script>'
+ expect(subject).to include '<script>alert("Hello")</script>'
end
end
@@ -250,7 +250,7 @@ RSpec.describe TextFormatter do
let(:text) { '' }
it 'escapes the HTML' do
- is_expected.to include '
<script>alert("Hello")</script>
'
+ expect(subject).to include '
<script>alert("Hello")</script>
'
end
end
@@ -258,7 +258,7 @@ RSpec.describe TextFormatter do
let(:text) { %q{} }
it 'escapes the HTML' do
- is_expected.to include '
<img src="javascript:alert('XSS');">
'
+ expect(subject).to include '
<img src="javascript:alert('XSS');">
'
end
end
@@ -266,7 +266,7 @@ RSpec.describe TextFormatter do
let(:text) { 'http://www\.google\.com' }
it 'outputs the raw URL' do
- is_expected.to eq '
http://www\.google\.com
'
+ expect(subject).to eq '
http://www\.google\.com
'
end
end
@@ -274,7 +274,7 @@ RSpec.describe TextFormatter do
let(:text) { '#hashtag' }
it 'creates a hashtag link' do
- is_expected.to include '/tags/hashtag" class="mention hashtag" rel="tag">#hashtag'
+ expect(subject).to include '/tags/hashtag" class="mention hashtag" rel="tag">#hashtag'
end
end
@@ -282,7 +282,7 @@ RSpec.describe TextFormatter do
let(:text) { '#hashtagタグ' }
it 'creates a hashtag link' do
- is_expected.to include '/tags/hashtag%E3%82%BF%E3%82%B0" class="mention hashtag" rel="tag">#hashtagタグ'
+ expect(subject).to include '/tags/hashtag%E3%82%BF%E3%82%B0" class="mention hashtag" rel="tag">#hashtagタグ'
end
end
@@ -290,7 +290,7 @@ RSpec.describe TextFormatter do
let(:text) { 'xmpp:user@instance.com' }
it 'matches the full URI' do
- is_expected.to include 'href="xmpp:user@instance.com"'
+ expect(subject).to include 'href="xmpp:user@instance.com"'
end
end
@@ -298,7 +298,7 @@ RSpec.describe TextFormatter do
let(:text) { 'please join xmpp:muc@instance.com?join right now' }
it 'matches the full URI' do
- is_expected.to include 'href="xmpp:muc@instance.com?join"'
+ expect(subject).to include 'href="xmpp:muc@instance.com?join"'
end
end
@@ -306,7 +306,7 @@ RSpec.describe TextFormatter do
let(:text) { 'wikipedia gives this example of a magnet uri: magnet:?xt=urn:btih:c12fe1c06bba254a9dc9f519b335aa7c1367a88a' }
it 'matches the full URI' do
- is_expected.to include 'href="magnet:?xt=urn:btih:c12fe1c06bba254a9dc9f519b335aa7c1367a88a"'
+ expect(subject).to include 'href="magnet:?xt=urn:btih:c12fe1c06bba254a9dc9f519b335aa7c1367a88a"'
end
end
end
diff --git a/spec/models/concerns/account_interactions_spec.rb b/spec/models/concerns/account_interactions_spec.rb
index b2d84308b..fbfc9fbbc 100644
--- a/spec/models/concerns/account_interactions_spec.rb
+++ b/spec/models/concerns/account_interactions_spec.rb
@@ -14,13 +14,13 @@ describe AccountInteractions do
context 'account with Follow' do
it 'returns { target_account_id => true }' do
Fabricate(:follow, account: account, target_account: target_account)
- is_expected.to eq(target_account_id => { reblogs: true, notify: false, languages: nil })
+ expect(subject).to eq(target_account_id => { reblogs: true, notify: false, languages: nil })
end
end
context 'account without Follow' do
it 'returns {}' do
- is_expected.to eq({})
+ expect(subject).to eq({})
end
end
end
@@ -31,13 +31,13 @@ describe AccountInteractions do
context 'account with Follow' do
it 'returns { target_account_id => true }' do
Fabricate(:follow, account: target_account, target_account: account)
- is_expected.to eq(target_account_id => true)
+ expect(subject).to eq(target_account_id => true)
end
end
context 'account without Follow' do
it 'returns {}' do
- is_expected.to eq({})
+ expect(subject).to eq({})
end
end
end
@@ -48,13 +48,13 @@ describe AccountInteractions do
context 'account with Block' do
it 'returns { target_account_id => true }' do
Fabricate(:block, account: account, target_account: target_account)
- is_expected.to eq(target_account_id => true)
+ expect(subject).to eq(target_account_id => true)
end
end
context 'account without Block' do
it 'returns {}' do
- is_expected.to eq({})
+ expect(subject).to eq({})
end
end
end
@@ -71,7 +71,7 @@ describe AccountInteractions do
let(:hide) { true }
it 'returns { target_account_id => { notifications: true } }' do
- is_expected.to eq(target_account_id => { notifications: true })
+ expect(subject).to eq(target_account_id => { notifications: true })
end
end
@@ -79,14 +79,14 @@ describe AccountInteractions do
let(:hide) { false }
it 'returns { target_account_id => { notifications: false } }' do
- is_expected.to eq(target_account_id => { notifications: false })
+ expect(subject).to eq(target_account_id => { notifications: false })
end
end
end
context 'account without Mute' do
it 'returns {}' do
- is_expected.to eq({})
+ expect(subject).to eq({})
end
end
end
@@ -231,7 +231,7 @@ describe AccountInteractions do
it 'creates and returns ConversationMute' do
expect do
- is_expected.to be_a ConversationMute
+ expect(subject).to be_a ConversationMute
end.to change { account.conversation_mutes.count }.by 1
end
end
@@ -243,7 +243,7 @@ describe AccountInteractions do
it 'creates and returns AccountDomainBlock' do
expect do
- is_expected.to be_a AccountDomainBlock
+ expect(subject).to be_a AccountDomainBlock
end.to change { account.domain_blocks.count }.by 1
end
end
@@ -254,14 +254,14 @@ describe AccountInteractions do
context 'following target_account' do
it 'returns destroyed Follow' do
account.active_relationships.create(target_account: target_account)
- is_expected.to be_a Follow
+ expect(subject).to be_a Follow
expect(subject).to be_destroyed
end
end
context 'not following target_account' do
it 'returns nil' do
- is_expected.to be_nil
+ expect(subject).to be_nil
end
end
end
@@ -272,14 +272,14 @@ describe AccountInteractions do
context 'blocking target_account' do
it 'returns destroyed Block' do
account.block_relationships.create(target_account: target_account)
- is_expected.to be_a Block
+ expect(subject).to be_a Block
expect(subject).to be_destroyed
end
end
context 'not blocking target_account' do
it 'returns nil' do
- is_expected.to be_nil
+ expect(subject).to be_nil
end
end
end
@@ -290,14 +290,14 @@ describe AccountInteractions do
context 'muting target_account' do
it 'returns destroyed Mute' do
account.mute_relationships.create(target_account: target_account)
- is_expected.to be_a Mute
+ expect(subject).to be_a Mute
expect(subject).to be_destroyed
end
end
context 'not muting target_account' do
it 'returns nil' do
- is_expected.to be_nil
+ expect(subject).to be_nil
end
end
end
@@ -310,14 +310,14 @@ describe AccountInteractions do
context 'muting the conversation' do
it 'returns destroyed ConversationMute' do
account.conversation_mutes.create(conversation: conversation)
- is_expected.to be_a ConversationMute
+ expect(subject).to be_a ConversationMute
expect(subject).to be_destroyed
end
end
context 'not muting the conversation' do
it 'returns nil' do
- is_expected.to be_nil
+ expect(subject).to be_nil
end
end
end
@@ -331,14 +331,14 @@ describe AccountInteractions do
it 'returns destroyed AccountDomainBlock' do
account_domain_block = Fabricate(:account_domain_block, domain: domain)
account.domain_blocks << account_domain_block
- is_expected.to be_a AccountDomainBlock
+ expect(subject).to be_a AccountDomainBlock
expect(subject).to be_destroyed
end
end
context 'unblocking the domain' do
it 'returns nil' do
- is_expected.to be_nil
+ expect(subject).to be_nil
end
end
end
@@ -349,13 +349,13 @@ describe AccountInteractions do
context 'following target_account' do
it 'returns true' do
account.active_relationships.create(target_account: target_account)
- is_expected.to be true
+ expect(subject).to be true
end
end
context 'not following target_account' do
it 'returns false' do
- is_expected.to be false
+ expect(subject).to be false
end
end
end
@@ -366,13 +366,13 @@ describe AccountInteractions do
context 'followed by target_account' do
it 'returns true' do
account.passive_relationships.create(account: target_account)
- is_expected.to be true
+ expect(subject).to be true
end
end
context 'not followed by target_account' do
it 'returns false' do
- is_expected.to be false
+ expect(subject).to be false
end
end
end
@@ -383,13 +383,13 @@ describe AccountInteractions do
context 'blocking target_account' do
it 'returns true' do
account.block_relationships.create(target_account: target_account)
- is_expected.to be true
+ expect(subject).to be true
end
end
context 'not blocking target_account' do
it 'returns false' do
- is_expected.to be false
+ expect(subject).to be false
end
end
end
@@ -403,13 +403,13 @@ describe AccountInteractions do
it 'returns true' do
account_domain_block = Fabricate(:account_domain_block, domain: domain)
account.domain_blocks << account_domain_block
- is_expected.to be true
+ expect(subject).to be true
end
end
context 'not blocking the domain' do
it 'returns false' do
- is_expected.to be false
+ expect(subject).to be false
end
end
end
@@ -421,13 +421,13 @@ describe AccountInteractions do
it 'returns true' do
mute = Fabricate(:mute, account: account, target_account: target_account)
account.mute_relationships << mute
- is_expected.to be true
+ expect(subject).to be true
end
end
context 'not muting target_account' do
it 'returns false' do
- is_expected.to be false
+ expect(subject).to be false
end
end
end
@@ -440,13 +440,13 @@ describe AccountInteractions do
context 'muting the conversation' do
it 'returns true' do
account.conversation_mutes.create(conversation: conversation)
- is_expected.to be true
+ expect(subject).to be true
end
end
context 'not muting the conversation' do
it 'returns false' do
- is_expected.to be false
+ expect(subject).to be false
end
end
end
@@ -463,7 +463,7 @@ describe AccountInteractions do
let(:hide) { true }
it 'returns true' do
- is_expected.to be true
+ expect(subject).to be true
end
end
@@ -471,7 +471,7 @@ describe AccountInteractions do
let(:hide) { false }
it 'returns false' do
- is_expected.to be false
+ expect(subject).to be false
end
end
end
@@ -482,13 +482,13 @@ describe AccountInteractions do
context 'requested by target_account' do
it 'returns true' do
Fabricate(:follow_request, account: account, target_account: target_account)
- is_expected.to be true
+ expect(subject).to be true
end
end
context 'not requested by target_account' do
it 'returns false' do
- is_expected.to be false
+ expect(subject).to be false
end
end
end
@@ -502,7 +502,7 @@ describe AccountInteractions do
let(:favourites) { [Fabricate(:favourite, account: account)] }
it 'returns true' do
- is_expected.to be true
+ expect(subject).to be true
end
end
@@ -510,7 +510,7 @@ describe AccountInteractions do
let(:favourites) { [] }
it 'returns false' do
- is_expected.to be false
+ expect(subject).to be false
end
end
end
@@ -524,7 +524,7 @@ describe AccountInteractions do
let(:reblogs) { [Fabricate(:status, account: account)] }
it 'returns true' do
- is_expected.to be true
+ expect(subject).to be true
end
end
@@ -532,7 +532,7 @@ describe AccountInteractions do
let(:reblogs) { [] }
it 'returns false' do
- is_expected.to be false
+ expect(subject).to be false
end
end
end
@@ -545,13 +545,13 @@ describe AccountInteractions do
context 'pinned' do
it 'returns true' do
Fabricate(:status_pin, account: account, status: status)
- is_expected.to be true
+ expect(subject).to be true
end
end
context 'not pinned' do
it 'returns false' do
- is_expected.to be false
+ expect(subject).to be false
end
end
end
diff --git a/spec/models/custom_emoji_spec.rb b/spec/models/custom_emoji_spec.rb
index f9e1099c6..1fc112db3 100644
--- a/spec/models/custom_emoji_spec.rb
+++ b/spec/models/custom_emoji_spec.rb
@@ -11,7 +11,7 @@ RSpec.describe CustomEmoji, type: :model do
let(:search_term) { 'blobpats' }
it 'finds emoji' do
- is_expected.to include(custom_emoji)
+ expect(subject).to include(custom_emoji)
end
end
@@ -20,7 +20,7 @@ RSpec.describe CustomEmoji, type: :model do
let(:search_term) { 'blob' }
it 'finds emoji' do
- is_expected.to include(custom_emoji)
+ expect(subject).to include(custom_emoji)
end
end
end
@@ -34,7 +34,7 @@ RSpec.describe CustomEmoji, type: :model do
let(:domain) { nil }
it 'returns true' do
- is_expected.to be true
+ expect(subject).to be true
end
end
@@ -42,7 +42,7 @@ RSpec.describe CustomEmoji, type: :model do
let(:domain) { 'example.com' }
it 'returns false' do
- is_expected.to be false
+ expect(subject).to be false
end
end
end
@@ -63,7 +63,7 @@ RSpec.describe CustomEmoji, type: :model do
let(:text) { 'Hello :coolcat:' }
it 'returns records used via shortcodes in text' do
- is_expected.to include(emojo)
+ expect(subject).to include(emojo)
end
end
@@ -71,7 +71,7 @@ RSpec.describe CustomEmoji, type: :model do
let(:text) { '
Hello :coolcat:
' }
it 'returns records used via shortcodes in text' do
- is_expected.to include(emojo)
+ expect(subject).to include(emojo)
end
end
end
diff --git a/spec/models/media_attachment_spec.rb b/spec/models/media_attachment_spec.rb
index d1a94d41a..8889d5f7c 100644
--- a/spec/models/media_attachment_spec.rb
+++ b/spec/models/media_attachment_spec.rb
@@ -10,7 +10,7 @@ RSpec.describe MediaAttachment, type: :model do
let(:remote_url) { '' }
it 'returns true' do
- is_expected.to be true
+ expect(subject).to be true
end
end
@@ -18,7 +18,7 @@ RSpec.describe MediaAttachment, type: :model do
let(:remote_url) { 'remote_url' }
it 'returns false' do
- is_expected.to be false
+ expect(subject).to be false
end
end
end
@@ -35,7 +35,7 @@ RSpec.describe MediaAttachment, type: :model do
let(:remote_url) { 'remote_url' }
it 'returns true' do
- is_expected.to be true
+ expect(subject).to be true
end
end
end
@@ -47,7 +47,7 @@ RSpec.describe MediaAttachment, type: :model do
let(:remote_url) { '' }
it 'returns false' do
- is_expected.to be false
+ expect(subject).to be false
end
end
@@ -55,7 +55,7 @@ RSpec.describe MediaAttachment, type: :model do
let(:remote_url) { 'remote_url' }
it 'returns true' do
- is_expected.to be false
+ expect(subject).to be false
end
end
end
diff --git a/spec/models/notification_spec.rb b/spec/models/notification_spec.rb
index 1e9e45d8d..a8fb77639 100644
--- a/spec/models/notification_spec.rb
+++ b/spec/models/notification_spec.rb
@@ -68,7 +68,7 @@ RSpec.describe Notification, type: :model do
let(:notifications) { [] }
it 'returns []' do
- is_expected.to eq []
+ expect(subject).to eq []
end
end
diff --git a/spec/models/remote_follow_spec.rb b/spec/models/remote_follow_spec.rb
index 5b4c19b5b..c6bbecf25 100644
--- a/spec/models/remote_follow_spec.rb
+++ b/spec/models/remote_follow_spec.rb
@@ -17,7 +17,7 @@ RSpec.describe RemoteFollow do
let(:attrs) { { acct: 'gargron@quitter.no' } }
it 'returns acct' do
- is_expected.to eq 'gargron@quitter.no'
+ expect(subject).to eq 'gargron@quitter.no'
end
end
@@ -25,7 +25,7 @@ RSpec.describe RemoteFollow do
let(:attrs) { {} }
it do
- is_expected.to be_nil
+ expect(subject).to be_nil
end
end
end
@@ -37,7 +37,7 @@ RSpec.describe RemoteFollow do
let(:attrs) { { acct: 'gargron@quitter.no' } }
it do
- is_expected.to be true
+ expect(subject).to be true
end
end
@@ -45,7 +45,7 @@ RSpec.describe RemoteFollow do
let(:attrs) { {} }
it do
- is_expected.to be false
+ expect(subject).to be false
end
end
end
@@ -61,7 +61,7 @@ RSpec.describe RemoteFollow do
subject { remote_follow.subscribe_address_for(account) }
it 'returns subscribe address' do
- is_expected.to eq 'https://quitter.no/main/ostatussub?profile=https%3A%2F%2Fcb6e6126.ngrok.io%2Fusers%2Falice'
+ expect(subject).to eq 'https://quitter.no/main/ostatussub?profile=https%3A%2F%2Fcb6e6126.ngrok.io%2Fusers%2Falice'
end
end
end
diff --git a/spec/models/report_spec.rb b/spec/models/report_spec.rb
index 874be4132..317851297 100644
--- a/spec/models/report_spec.rb
+++ b/spec/models/report_spec.rb
@@ -33,7 +33,7 @@ describe Report do
end
it 'assigns to a given account' do
- is_expected.to eq current_account.id
+ expect(subject).to eq current_account.id
end
end
@@ -48,7 +48,7 @@ describe Report do
end
it 'unassigns' do
- is_expected.to be_nil
+ expect(subject).to be_nil
end
end
diff --git a/spec/models/session_activation_spec.rb b/spec/models/session_activation_spec.rb
index 26f2b561a..375199d57 100644
--- a/spec/models/session_activation_spec.rb
+++ b/spec/models/session_activation_spec.rb
@@ -44,7 +44,7 @@ RSpec.describe SessionActivation, type: :model do
let(:id) { nil }
it 'returns nil' do
- is_expected.to be_nil
+ expect(subject).to be_nil
end
end
@@ -54,7 +54,7 @@ RSpec.describe SessionActivation, type: :model do
context 'id exists as session_id' do
it 'returns true' do
- is_expected.to be true
+ expect(subject).to be true
end
end
@@ -64,7 +64,7 @@ RSpec.describe SessionActivation, type: :model do
end
it 'returns false' do
- is_expected.to be false
+ expect(subject).to be false
end
end
end
diff --git a/spec/models/setting_spec.rb b/spec/models/setting_spec.rb
index 077223094..86fdf4e08 100644
--- a/spec/models/setting_spec.rb
+++ b/spec/models/setting_spec.rb
@@ -173,7 +173,7 @@ RSpec.describe Setting, type: :model do
let(:enabled) { false }
it 'returns {}' do
- is_expected.to eq({})
+ expect(subject).to eq({})
end
end
@@ -181,7 +181,7 @@ RSpec.describe Setting, type: :model do
let(:enabled) { true }
it 'returns instance of RailsSettings::Default' do
- is_expected.to be_a RailsSettings::Default
+ expect(subject).to be_a RailsSettings::Default
end
end
end
--
cgit
From 4552685f6bd400666ec4058783eeabb11568e575 Mon Sep 17 00:00:00 2001
From: Nick Schonning
Date: Sun, 19 Feb 2023 23:24:14 -0500
Subject: Autofix Rubocop RSpec/LeadingSubject (#23670)
---
.rubocop_todo.yml | 82 ----------------------
.../activitypub/collections_controller_spec.rb | 4 +-
.../followers_synchronizations_controller_spec.rb | 4 +-
.../activitypub/inboxes_controller_spec.rb | 4 +-
.../activitypub/outboxes_controller_spec.rb | 4 +-
spec/controllers/admin/invites_controller_spec.rb | 4 +-
.../auth/registrations_controller_spec.rb | 64 ++++++++---------
.../well_known/webfinger_controller_spec.rb | 8 +--
spec/lib/activitypub/activity/accept_spec.rb | 4 +-
spec/lib/activitypub/activity/announce_spec.rb | 8 +--
spec/lib/activitypub/activity/create_spec.rb | 16 ++---
spec/lib/activitypub/activity/reject_spec.rb | 4 +-
spec/lib/activitypub/activity/undo_spec.rb | 4 +-
spec/lib/activitypub/activity/update_spec.rb | 4 +-
spec/lib/activitypub/adapter_spec.rb | 4 +-
spec/lib/activitypub/dereferencer_spec.rb | 4 +-
spec/lib/activitypub/linked_data_signature_spec.rb | 4 +-
spec/lib/link_details_extractor_spec.rb | 4 +-
spec/lib/status_filter_spec.rb | 4 +-
spec/lib/status_reach_finder_spec.rb | 4 +-
spec/lib/suspicious_sign_in_detector_spec.rb | 4 +-
spec/lib/text_formatter_spec.rb | 4 +-
spec/lib/vacuum/backups_vacuum_spec.rb | 4 +-
spec/lib/vacuum/media_attachments_vacuum_spec.rb | 4 +-
spec/lib/vacuum/preview_cards_vacuum_spec.rb | 4 +-
spec/lib/vacuum/statuses_vacuum_spec.rb | 4 +-
spec/models/account/field_spec.rb | 12 ++--
spec/models/account_spec.rb | 16 ++---
.../models/account_statuses_cleanup_policy_spec.rb | 20 +++---
spec/models/account_statuses_filter_spec.rb | 4 +-
spec/models/concerns/account_interactions_spec.rb | 40 +++++------
spec/models/custom_emoji_filter_spec.rb | 4 +-
spec/models/custom_emoji_spec.rb | 12 ++--
spec/models/home_feed_spec.rb | 4 +-
spec/models/media_attachment_spec.rb | 8 +--
spec/models/public_feed_spec.rb | 16 ++---
spec/models/remote_follow_spec.rb | 4 +-
spec/models/setting_spec.rb | 4 +-
spec/models/status_spec.rb | 16 ++---
spec/models/user_spec.rb | 4 +-
spec/models/web/push_subscription_spec.rb | 4 +-
.../familiar_followers_presenter_spec.rb | 4 +-
spec/serializers/activitypub/note_spec.rb | 4 +-
spec/serializers/activitypub/update_poll_spec.rb | 4 +-
spec/serializers/rest/account_serializer_spec.rb | 4 +-
.../fetch_featured_collection_service_spec.rb | 4 +-
.../fetch_featured_tags_collection_service_spec.rb | 4 +-
.../fetch_remote_status_service_spec.rb | 4 +-
.../activitypub/fetch_replies_service_spec.rb | 4 +-
.../activitypub/process_account_service_spec.rb | 8 +--
.../activitypub/process_collection_service_spec.rb | 4 +-
.../process_status_update_service_spec.rb | 4 +-
.../synchronize_followers_service_spec.rb | 4 +-
...after_block_domain_from_account_service_spec.rb | 4 +-
spec/services/app_sign_up_service_spec.rb | 4 +-
spec/services/authorize_follow_service_spec.rb | 4 +-
spec/services/block_domain_service_spec.rb | 4 +-
spec/services/block_service_spec.rb | 4 +-
spec/services/clear_domain_media_service_spec.rb | 4 +-
spec/services/delete_account_service_spec.rb | 4 +-
spec/services/fan_out_on_write_service_spec.rb | 4 +-
spec/services/favourite_service_spec.rb | 4 +-
spec/services/fetch_resource_service_spec.rb | 4 +-
spec/services/follow_service_spec.rb | 4 +-
spec/services/process_mentions_service_spec.rb | 4 +-
spec/services/purge_domain_service_spec.rb | 4 +-
spec/services/reblog_service_spec.rb | 8 +--
spec/services/reject_follow_service_spec.rb | 4 +-
spec/services/remove_from_follwers_service_spec.rb | 4 +-
spec/services/report_service_spec.rb | 12 ++--
spec/services/suspend_account_service_spec.rb | 4 +-
spec/services/unallow_domain_service_spec.rb | 4 +-
spec/services/unblock_service_spec.rb | 4 +-
spec/services/unfollow_service_spec.rb | 4 +-
spec/services/unsuspend_account_service_spec.rb | 4 +-
.../validators/blacklisted_email_validator_spec.rb | 4 +-
spec/workers/move_worker_spec.rb | 4 +-
spec/workers/unfollow_follow_worker_spec.rb | 4 +-
78 files changed, 256 insertions(+), 338 deletions(-)
(limited to 'spec/lib')
diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml
index eb0910fe6..1eb039110 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 19c0e0a64..77901131e 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 893c8e14f..6ec756d3c 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 7f4d6b2d3..8d4084648 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 f84a902ea..7369ee413 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 1fb488742..92ec4e449 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 52023eb2e..8cfb8e277 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 8574d369d..1ccfb218e 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 304cf2208..95a5a8747 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 adb13acc2..b3257e881 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 ddbdb07aa..c26c8b358 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 fed4cd8cd..7f04db4e6 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 c0309e49d..0bd1f17d3 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 4cd853af2..d2a1edd7a 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 ea03797aa..e4c403abb 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 e50b497c7..800473a7c 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 d55a7c7fa..ecb1e16db 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 7eb15ced3..fcc265474 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 cdb482059..08519bc59 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 f0c22b165..785ce28a0 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 101a18aa0..05aadfd8f 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 63a9075c7..04ae4e02c 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 4e2de083f..c505a3e1a 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 436237b25..afcb6f878 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 275f9ba92..524f4c927 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 83f3c5c9f..9583376b7 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 40bbee025..36e1a8595 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 03ed12d78..726e33048 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 d3c011b3a..8bd86730b 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 03f0ffeb0..fa7664d92 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 fbfc9fbbc..ed3fc056b 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 515c0a715..30f0ec2b2 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 1fc112db3..f6fcd468b 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 80f6edbff..196bef1e4 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 8889d5f7c..57e131423 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 be46639c5..59c81dd95 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 c6bbecf25..ea36b0076 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 86fdf4e08..826a13878 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 78cc05959..442f14ddf 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 d23439f1a..9af616b32 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 eeadbb71c..388154000 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 17be4b971..607e3002f 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 55bfbc16b..7ea47baef 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 f9e035eab..4360808b5 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 3bca06b73..528639943 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 23d90a9a2..d9266ffc2 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 692866bce..2110baa2d 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 4f3503ac2..6e47392b3 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 5741e0c3f..0231a5e9a 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 d0af7de76..6c3236bae 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 d35d9596d..c7d0bb92a 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 9a6d75ec0..3d6f76163 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 5a37f0733..0e829a302 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 006e3f4d2..9cca82bff 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 8ec4d4a7a..10da07dcf 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 888d694b6..8f8e44ec7 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 e24e48d41..56b3a5ad1 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 a53e1f928..049644dbc 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 e90faf84d..993ba789e 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 cc4b168fc..d0cc8d288 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 3c294cf95..d09750dd2 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 8703c2af8..4f621200a 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 c39f52632..84c4035cb 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 59073c27f..f95d59440 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 6a16928e0..79ccfa322 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 59285f126..7d8969ee8 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 c0ae5eedc..e2ac0154c 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 e14bfa78d..97b7412b9 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 9b9c846cf..782f859e2 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 02bc42ac1..c3a3fddf8 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 126b13986..5701090b3 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 b93945b9a..ae7d00c7d 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 10448b340..bd24005f6 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 bb5bef5c9..55969bef9 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 987eb09e2..667507469 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 cb807fe24..a642405ae 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 3ca6aaf4d..e93060adb 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 5ea4256a9..8025b88c0 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
--
cgit
From 5116347eb7cfd0a09f55efbd84f8d3fa11d4d6ba Mon Sep 17 00:00:00 2001
From: Nick Schonning
Date: Mon, 20 Feb 2023 00:14:50 -0500
Subject: Autofix Rubocop RSpec/BeEq (#23740)
---
.rubocop_todo.yml | 43 ----------------------
.../admin/export_domain_allows_controller_spec.rb | 2 +-
.../admin/reports/actions_controller_spec.rb | 2 +-
spec/controllers/admin/reports_controller_spec.rb | 8 ++--
.../two_factor_authentications_controller_spec.rb | 6 +--
.../api/v1/accounts/credentials_controller_spec.rb | 2 +-
.../api/v1/bookmarks_controller_spec.rb | 2 +-
.../api/v1/favourites_controller_spec.rb | 2 +-
.../api/v2/filters/keywords_controller_spec.rb | 4 +-
spec/controllers/application_controller_spec.rb | 6 +--
.../auth/registrations_controller_spec.rb | 6 +--
.../statuses_cleanup_controller_spec.rb | 6 +--
spec/helpers/application_helper_spec.rb | 10 ++---
spec/helpers/jsonld_helper_spec.rb | 12 +++---
spec/lib/activitypub/activity/add_spec.rb | 8 ++--
spec/lib/activitypub/activity/create_spec.rb | 4 +-
spec/lib/feed_manager_spec.rb | 28 +++++++-------
spec/lib/ostatus/tag_manager_spec.rb | 6 +--
spec/lib/tag_manager_spec.rb | 20 +++++-----
spec/lib/user_settings_decorator_spec.rb | 20 +++++-----
spec/models/account_domain_block_spec.rb | 4 +-
spec/models/account_spec.rb | 20 +++++-----
spec/models/block_spec.rb | 8 ++--
spec/models/domain_block_spec.rb | 6 +--
spec/models/favourite_spec.rb | 2 +-
spec/models/media_attachment_spec.rb | 2 +-
spec/models/user_spec.rb | 2 +-
spec/models/web/push_subscription_spec.rb | 12 +++---
.../process_status_update_service_spec.rb | 2 +-
spec/services/fetch_oembed_service_spec.rb | 6 +--
spec/services/fetch_resource_service_spec.rb | 2 +-
spec/services/post_status_service_spec.rb | 2 +-
spec/services/precompute_feed_service_spec.rb | 2 +-
spec/services/resolve_account_service_spec.rb | 12 +++---
.../examples/lib/settings/scoped_settings.rb | 32 ++++++++--------
spec/workers/domain_block_worker_spec.rb | 2 +-
spec/workers/domain_clear_media_worker_spec.rb | 2 +-
spec/workers/feed_insert_worker_spec.rb | 4 +-
spec/workers/regeneration_worker_spec.rb | 2 +-
39 files changed, 139 insertions(+), 182 deletions(-)
(limited to 'spec/lib')
diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml
index ce1ef9a2b..86a48a170 100644
--- a/.rubocop_todo.yml
+++ b/.rubocop_todo.yml
@@ -545,49 +545,6 @@ RSpec/AnyInstance:
- 'spec/workers/activitypub/delivery_worker_spec.rb'
- 'spec/workers/web/push_notification_worker_spec.rb'
-# Offense count: 139
-# This cop supports unsafe autocorrection (--autocorrect-all).
-RSpec/BeEq:
- Exclude:
- - 'spec/controllers/admin/export_domain_allows_controller_spec.rb'
- - 'spec/controllers/admin/reports/actions_controller_spec.rb'
- - 'spec/controllers/admin/reports_controller_spec.rb'
- - 'spec/controllers/admin/users/two_factor_authentications_controller_spec.rb'
- - 'spec/controllers/api/v1/accounts/credentials_controller_spec.rb'
- - 'spec/controllers/api/v1/bookmarks_controller_spec.rb'
- - 'spec/controllers/api/v1/favourites_controller_spec.rb'
- - 'spec/controllers/api/v2/filters/keywords_controller_spec.rb'
- - 'spec/controllers/application_controller_spec.rb'
- - 'spec/controllers/auth/registrations_controller_spec.rb'
- - 'spec/controllers/statuses_cleanup_controller_spec.rb'
- - 'spec/helpers/application_helper_spec.rb'
- - 'spec/helpers/jsonld_helper_spec.rb'
- - 'spec/lib/activitypub/activity/add_spec.rb'
- - 'spec/lib/activitypub/activity/create_spec.rb'
- - 'spec/lib/feed_manager_spec.rb'
- - 'spec/lib/ostatus/tag_manager_spec.rb'
- - 'spec/lib/tag_manager_spec.rb'
- - 'spec/lib/user_settings_decorator_spec.rb'
- - 'spec/models/account_domain_block_spec.rb'
- - 'spec/models/account_spec.rb'
- - 'spec/models/block_spec.rb'
- - 'spec/models/domain_block_spec.rb'
- - 'spec/models/favourite_spec.rb'
- - 'spec/models/media_attachment_spec.rb'
- - 'spec/models/user_spec.rb'
- - 'spec/models/web/push_subscription_spec.rb'
- - 'spec/services/activitypub/process_status_update_service_spec.rb'
- - 'spec/services/fetch_oembed_service_spec.rb'
- - 'spec/services/fetch_resource_service_spec.rb'
- - 'spec/services/post_status_service_spec.rb'
- - 'spec/services/precompute_feed_service_spec.rb'
- - 'spec/services/resolve_account_service_spec.rb'
- - 'spec/support/examples/lib/settings/scoped_settings.rb'
- - 'spec/workers/domain_block_worker_spec.rb'
- - 'spec/workers/domain_clear_media_worker_spec.rb'
- - 'spec/workers/feed_insert_worker_spec.rb'
- - 'spec/workers/regeneration_worker_spec.rb'
-
# Offense count: 1
RSpec/BeforeAfterAll:
Exclude:
diff --git a/spec/controllers/admin/export_domain_allows_controller_spec.rb b/spec/controllers/admin/export_domain_allows_controller_spec.rb
index 1e1a5ae7d..7ee064de7 100644
--- a/spec/controllers/admin/export_domain_allows_controller_spec.rb
+++ b/spec/controllers/admin/export_domain_allows_controller_spec.rb
@@ -25,7 +25,7 @@ RSpec.describe Admin::ExportDomainAllowsController, type: :controller do
expect(response).to redirect_to(admin_instances_path)
# Header should not be imported
- expect(DomainAllow.where(domain: '#domain').present?).to eq(false)
+ expect(DomainAllow.where(domain: '#domain').present?).to be(false)
# Domains should now be added
get :export, params: { format: :csv }
diff --git a/spec/controllers/admin/reports/actions_controller_spec.rb b/spec/controllers/admin/reports/actions_controller_spec.rb
index db3a1d311..20f85680f 100644
--- a/spec/controllers/admin/reports/actions_controller_spec.rb
+++ b/spec/controllers/admin/reports/actions_controller_spec.rb
@@ -116,7 +116,7 @@ describe Admin::Reports::ActionsController do
it 'marks the non-deleted as sensitive' do
subject
- expect(media_attached_status.reload.sensitive).to eq true
+ expect(media_attached_status.reload.sensitive).to be true
end
end
end
diff --git a/spec/controllers/admin/reports_controller_spec.rb b/spec/controllers/admin/reports_controller_spec.rb
index 4dcc277d9..c6b5770a8 100644
--- a/spec/controllers/admin/reports_controller_spec.rb
+++ b/spec/controllers/admin/reports_controller_spec.rb
@@ -55,7 +55,7 @@ describe Admin::ReportsController do
expect(response).to redirect_to(admin_reports_path)
report.reload
expect(report.action_taken_by_account).to eq user.account
- expect(report.action_taken?).to eq true
+ expect(report.action_taken?).to be true
end
end
@@ -66,8 +66,8 @@ describe Admin::ReportsController do
put :reopen, params: { id: report }
expect(response).to redirect_to(admin_report_path(report))
report.reload
- expect(report.action_taken_by_account).to eq nil
- expect(report.action_taken?).to eq false
+ expect(report.action_taken_by_account).to be_nil
+ expect(report.action_taken?).to be false
end
end
@@ -89,7 +89,7 @@ describe Admin::ReportsController do
put :unassign, params: { id: report }
expect(response).to redirect_to(admin_report_path(report))
report.reload
- expect(report.assigned_account).to eq nil
+ expect(report.assigned_account).to be_nil
end
end
end
diff --git a/spec/controllers/admin/users/two_factor_authentications_controller_spec.rb b/spec/controllers/admin/users/two_factor_authentications_controller_spec.rb
index e56264ef6..990dcf640 100644
--- a/spec/controllers/admin/users/two_factor_authentications_controller_spec.rb
+++ b/spec/controllers/admin/users/two_factor_authentications_controller_spec.rb
@@ -20,7 +20,7 @@ describe Admin::Users::TwoFactorAuthenticationsController do
delete :destroy, params: { user_id: user.id }
user.reload
- expect(user.otp_enabled?).to eq false
+ expect(user.otp_enabled?).to be false
expect(response).to redirect_to(admin_account_path(user.account_id))
end
end
@@ -43,8 +43,8 @@ describe Admin::Users::TwoFactorAuthenticationsController do
delete :destroy, params: { user_id: user.id }
user.reload
- expect(user.otp_enabled?).to eq false
- expect(user.webauthn_enabled?).to eq false
+ expect(user.otp_enabled?).to be false
+ expect(user.webauthn_enabled?).to be false
expect(response).to redirect_to(admin_account_path(user.account_id))
end
end
diff --git a/spec/controllers/api/v1/accounts/credentials_controller_spec.rb b/spec/controllers/api/v1/accounts/credentials_controller_spec.rb
index cf91aae38..3494ca674 100644
--- a/spec/controllers/api/v1/accounts/credentials_controller_spec.rb
+++ b/spec/controllers/api/v1/accounts/credentials_controller_spec.rb
@@ -51,7 +51,7 @@ describe Api::V1::Accounts::CredentialsController do
expect(user.account.avatar).to exist
expect(user.account.header).to exist
expect(user.setting_default_privacy).to eq('unlisted')
- expect(user.setting_default_sensitive).to eq(true)
+ expect(user.setting_default_sensitive).to be(true)
end
it 'queues up an account update distribution' do
diff --git a/spec/controllers/api/v1/bookmarks_controller_spec.rb b/spec/controllers/api/v1/bookmarks_controller_spec.rb
index b7af60d2b..48332b15a 100644
--- a/spec/controllers/api/v1/bookmarks_controller_spec.rb
+++ b/spec/controllers/api/v1/bookmarks_controller_spec.rb
@@ -70,7 +70,7 @@ RSpec.describe Api::V1::BookmarksController, type: :controller do
it 'does not add pagination headers if not necessary' do
get :index
- expect(response.headers['Link']).to eq nil
+ expect(response.headers['Link']).to be_nil
end
end
end
diff --git a/spec/controllers/api/v1/favourites_controller_spec.rb b/spec/controllers/api/v1/favourites_controller_spec.rb
index dfa3f1101..f0fb8f37b 100644
--- a/spec/controllers/api/v1/favourites_controller_spec.rb
+++ b/spec/controllers/api/v1/favourites_controller_spec.rb
@@ -70,7 +70,7 @@ RSpec.describe Api::V1::FavouritesController, type: :controller do
it 'does not add pagination headers if not necessary' do
get :index
- expect(response.headers['Link']).to eq nil
+ expect(response.headers['Link']).to be_nil
end
end
end
diff --git a/spec/controllers/api/v2/filters/keywords_controller_spec.rb b/spec/controllers/api/v2/filters/keywords_controller_spec.rb
index 1201a4ca2..0e0f52ea8 100644
--- a/spec/controllers/api/v2/filters/keywords_controller_spec.rb
+++ b/spec/controllers/api/v2/filters/keywords_controller_spec.rb
@@ -45,7 +45,7 @@ RSpec.describe Api::V2::Filters::KeywordsController, type: :controller do
it 'returns a keyword' do
json = body_as_json
expect(json[:keyword]).to eq 'magic'
- expect(json[:whole_word]).to eq false
+ expect(json[:whole_word]).to be false
end
it 'creates a keyword' do
@@ -78,7 +78,7 @@ RSpec.describe Api::V2::Filters::KeywordsController, type: :controller do
it 'returns expected data' do
json = body_as_json
expect(json[:keyword]).to eq 'foo'
- expect(json[:whole_word]).to eq false
+ expect(json[:whole_word]).to be false
end
context "when trying to access another user's filter keyword" do
diff --git a/spec/controllers/application_controller_spec.rb b/spec/controllers/application_controller_spec.rb
index e2a63002b..35c7326cb 100644
--- a/spec/controllers/application_controller_spec.rb
+++ b/spec/controllers/application_controller_spec.rb
@@ -57,19 +57,19 @@ describe ApplicationController, type: :controller do
describe 'helper_method :single_user_mode?' do
it 'returns false if it is in single_user_mode but there is no account' do
allow(Rails.configuration.x).to receive(:single_user_mode).and_return(true)
- expect(controller.view_context.single_user_mode?).to eq false
+ expect(controller.view_context.single_user_mode?).to be false
end
it 'returns false if there is an account but it is not in single_user_mode' do
allow(Rails.configuration.x).to receive(:single_user_mode).and_return(false)
Fabricate(:account)
- expect(controller.view_context.single_user_mode?).to eq false
+ expect(controller.view_context.single_user_mode?).to be false
end
it 'returns true if it is in single_user_mode and there is an account' do
allow(Rails.configuration.x).to receive(:single_user_mode).and_return(true)
Fabricate(:account)
- expect(controller.view_context.single_user_mode?).to eq true
+ expect(controller.view_context.single_user_mode?).to be true
end
end
diff --git a/spec/controllers/auth/registrations_controller_spec.rb b/spec/controllers/auth/registrations_controller_spec.rb
index 8cfb8e277..f42f685c1 100644
--- a/spec/controllers/auth/registrations_controller_spec.rb
+++ b/spec/controllers/auth/registrations_controller_spec.rb
@@ -163,7 +163,7 @@ RSpec.describe Auth::RegistrationsController, type: :controller do
user = User.find_by(email: 'test@example.com')
expect(user).to_not be_nil
expect(user.locale).to eq(accept_language)
- expect(user.approved).to eq(false)
+ expect(user.approved).to be(false)
end
end
@@ -191,7 +191,7 @@ RSpec.describe Auth::RegistrationsController, type: :controller do
user = User.find_by(email: 'test@example.com')
expect(user).to_not be_nil
expect(user.locale).to eq(accept_language)
- expect(user.approved).to eq(false)
+ expect(user.approved).to be(false)
end
end
@@ -223,7 +223,7 @@ RSpec.describe Auth::RegistrationsController, type: :controller do
user = User.find_by(email: 'test@example.com')
expect(user).to_not be_nil
expect(user.locale).to eq(accept_language)
- expect(user.approved).to eq(true)
+ expect(user.approved).to be(true)
end
end
diff --git a/spec/controllers/statuses_cleanup_controller_spec.rb b/spec/controllers/statuses_cleanup_controller_spec.rb
index 347fe4027..24b4ea7b6 100644
--- a/spec/controllers/statuses_cleanup_controller_spec.rb
+++ b/spec/controllers/statuses_cleanup_controller_spec.rb
@@ -19,9 +19,9 @@ RSpec.describe StatusesCleanupController, type: :controller do
it 'updates the account status cleanup policy' do
put :update, params: { account_statuses_cleanup_policy: { enabled: true, min_status_age: 2.weeks.seconds, keep_direct: false, keep_polls: true } }
expect(response).to redirect_to(statuses_cleanup_path)
- expect(@user.account.statuses_cleanup_policy.enabled).to eq true
- expect(@user.account.statuses_cleanup_policy.keep_direct).to eq false
- expect(@user.account.statuses_cleanup_policy.keep_polls).to eq true
+ expect(@user.account.statuses_cleanup_policy.enabled).to be true
+ expect(@user.account.statuses_cleanup_policy.keep_direct).to be false
+ expect(@user.account.statuses_cleanup_policy.keep_polls).to be true
end
end
end
diff --git a/spec/helpers/application_helper_spec.rb b/spec/helpers/application_helper_spec.rb
index 6502cfebf..e0f71afd5 100644
--- a/spec/helpers/application_helper_spec.rb
+++ b/spec/helpers/application_helper_spec.rb
@@ -65,7 +65,7 @@ describe ApplicationHelper do
expect(Setting).to receive(:registrations_mode).and_return('open')
end
- expect(helper.open_registrations?).to eq true
+ expect(helper.open_registrations?).to be true
end
it 'returns false when closed for registrations' do
@@ -73,7 +73,7 @@ describe ApplicationHelper do
expect(Setting).to receive(:registrations_mode).and_return('none')
end
- expect(helper.open_registrations?).to eq false
+ expect(helper.open_registrations?).to be false
end
end
@@ -84,7 +84,7 @@ describe ApplicationHelper do
end
it 'does not show landing strip' do
- expect(helper.show_landing_strip?).to eq false
+ expect(helper.show_landing_strip?).to be false
end
end
@@ -96,13 +96,13 @@ describe ApplicationHelper do
it 'does not show landing strip on single user instance' do
allow(helper).to receive(:single_user_mode?).and_return(true)
- expect(helper.show_landing_strip?).to eq false
+ expect(helper.show_landing_strip?).to be false
end
it 'shows landing strip on multi user instance' do
allow(helper).to receive(:single_user_mode?).and_return(false)
- expect(helper.show_landing_strip?).to eq true
+ expect(helper.show_landing_strip?).to be true
end
end
end
diff --git a/spec/helpers/jsonld_helper_spec.rb b/spec/helpers/jsonld_helper_spec.rb
index debee17f0..ddd4bfe62 100644
--- a/spec/helpers/jsonld_helper_spec.rb
+++ b/spec/helpers/jsonld_helper_spec.rb
@@ -66,14 +66,14 @@ describe JsonLdHelper do
stub_request(:get, 'https://mallory.test/').to_return body: '{"id": "https://marvin.test/"}'
stub_request(:get, 'https://marvin.test/').to_return body: '{"id": "https://alice.test/"}'
- expect(fetch_resource('https://mallory.test/', false)).to eq nil
+ expect(fetch_resource('https://mallory.test/', false)).to be_nil
end
end
context 'when the second argument is true' do
it 'returns nil if the retrieved ID and the given URI does not match' do
stub_request(:get, 'https://mallory.test/').to_return body: '{"id": "https://alice.test/"}'
- expect(fetch_resource('https://mallory.test/', true)).to eq nil
+ expect(fetch_resource('https://mallory.test/', true)).to be_nil
end
end
end
@@ -81,7 +81,7 @@ describe JsonLdHelper do
describe '#fetch_resource_without_id_validation' do
it 'returns nil if the status code is not 200' do
stub_request(:get, 'https://host.test/').to_return status: 400, body: '{}'
- expect(fetch_resource_without_id_validation('https://host.test/')).to eq nil
+ expect(fetch_resource_without_id_validation('https://host.test/')).to be_nil
end
it 'returns hash' do
@@ -150,7 +150,7 @@ describe JsonLdHelper do
patch_for_forwarding!(json, compacted)
expect(compacted['to']).to eq ['https://www.w3.org/ns/activitystreams#Public']
expect(compacted.dig('object', 'tag', 0, 'href')).to eq ['foo']
- expect(safe_for_forwarding?(json, compacted)).to eq true
+ expect(safe_for_forwarding?(json, compacted)).to be true
end
end
@@ -160,14 +160,14 @@ describe JsonLdHelper do
compacted = compact(json)
deemed_compatible = patch_for_forwarding!(json, compacted)
expect(compacted['to']).to eq ['https://www.w3.org/ns/activitystreams#Public']
- expect(safe_for_forwarding?(json, compacted)).to eq true
+ expect(safe_for_forwarding?(json, compacted)).to be true
end
it 'deems an unsafe compacting as such' do
compacted = compact(json)
deemed_compatible = patch_for_forwarding!(json, compacted)
expect(compacted['to']).to eq ['https://www.w3.org/ns/activitystreams#Public']
- expect(safe_for_forwarding?(json, compacted)).to eq false
+ expect(safe_for_forwarding?(json, compacted)).to be false
end
end
end
diff --git a/spec/lib/activitypub/activity/add_spec.rb b/spec/lib/activitypub/activity/add_spec.rb
index e21c871e6..a69c3d2b1 100644
--- a/spec/lib/activitypub/activity/add_spec.rb
+++ b/spec/lib/activitypub/activity/add_spec.rb
@@ -50,8 +50,8 @@ RSpec.describe ActivityPub::Activity::Add do
it 'fetches the status and pins it' do
allow(service_stub).to receive(:call) do |uri, id: true, on_behalf_of: nil, request_id: nil| # rubocop:disable Lint/UnusedBlockArgument
expect(uri).to eq 'https://example.com/unknown'
- expect(id).to eq true
- expect(on_behalf_of&.following?(sender)).to eq true
+ expect(id).to be true
+ expect(on_behalf_of&.following?(sender)).to be true
status
end
subject.perform
@@ -64,8 +64,8 @@ RSpec.describe ActivityPub::Activity::Add do
it 'tries to fetch the status' do
allow(service_stub).to receive(:call) do |uri, id: true, on_behalf_of: nil, request_id: nil| # rubocop:disable Lint/UnusedBlockArgument
expect(uri).to eq 'https://example.com/unknown'
- expect(id).to eq true
- expect(on_behalf_of).to eq nil
+ expect(id).to be true
+ expect(on_behalf_of).to be_nil
nil
end
subject.perform
diff --git a/spec/lib/activitypub/activity/create_spec.rb b/spec/lib/activitypub/activity/create_spec.rb
index c26c8b358..fd4983037 100644
--- a/spec/lib/activitypub/activity/create_spec.rb
+++ b/spec/lib/activitypub/activity/create_spec.rb
@@ -51,7 +51,7 @@ RSpec.describe ActivityPub::Activity::Create do
status = sender.statuses.first
expect(status).to_not be_nil
- expect(status.edited?).to eq true
+ expect(status.edited?).to be true
end
end
@@ -77,7 +77,7 @@ RSpec.describe ActivityPub::Activity::Create do
status = sender.statuses.first
expect(status).to_not be_nil
- expect(status.edited?).to eq false
+ expect(status.edited?).to be false
end
end
diff --git a/spec/lib/feed_manager_spec.rb b/spec/lib/feed_manager_spec.rb
index 7195cec06..d54050f8f 100644
--- a/spec/lib/feed_manager_spec.rb
+++ b/spec/lib/feed_manager_spec.rb
@@ -297,7 +297,7 @@ RSpec.describe FeedManager do
status = Fabricate(:status, reblog: reblog)
FeedManager.instance.push_to_home(account, status)
- expect(FeedManager.instance.push_to_home(account, reblog)).to eq false
+ expect(FeedManager.instance.push_to_home(account, reblog)).to be false
end
end
@@ -322,7 +322,7 @@ RSpec.describe FeedManager do
status = Fabricate(:status, reblog: reblog)
FeedManager.instance.push_to_list(list, status)
- expect(FeedManager.instance.push_to_list(list, reblog)).to eq false
+ expect(FeedManager.instance.push_to_list(list, reblog)).to be false
end
context 'when replies policy is set to no replies' do
@@ -332,19 +332,19 @@ RSpec.describe FeedManager do
it 'pushes statuses that are not replies' do
status = Fabricate(:status, text: 'Hello world', account: bob)
- expect(FeedManager.instance.push_to_list(list, status)).to eq true
+ expect(FeedManager.instance.push_to_list(list, status)).to be true
end
it 'pushes statuses that are replies to list owner' do
status = Fabricate(:status, text: 'Hello world', account: owner)
reply = Fabricate(:status, text: 'Nay', thread: status, account: bob)
- expect(FeedManager.instance.push_to_list(list, reply)).to eq true
+ expect(FeedManager.instance.push_to_list(list, reply)).to be true
end
it 'does not push replies to another member of the list' do
status = Fabricate(:status, text: 'Hello world', account: alice)
reply = Fabricate(:status, text: 'Nay', thread: status, account: bob)
- expect(FeedManager.instance.push_to_list(list, reply)).to eq false
+ expect(FeedManager.instance.push_to_list(list, reply)).to be false
end
end
@@ -355,25 +355,25 @@ RSpec.describe FeedManager do
it 'pushes statuses that are not replies' do
status = Fabricate(:status, text: 'Hello world', account: bob)
- expect(FeedManager.instance.push_to_list(list, status)).to eq true
+ expect(FeedManager.instance.push_to_list(list, status)).to be true
end
it 'pushes statuses that are replies to list owner' do
status = Fabricate(:status, text: 'Hello world', account: owner)
reply = Fabricate(:status, text: 'Nay', thread: status, account: bob)
- expect(FeedManager.instance.push_to_list(list, reply)).to eq true
+ expect(FeedManager.instance.push_to_list(list, reply)).to be true
end
it 'pushes replies to another member of the list' do
status = Fabricate(:status, text: 'Hello world', account: alice)
reply = Fabricate(:status, text: 'Nay', thread: status, account: bob)
- expect(FeedManager.instance.push_to_list(list, reply)).to eq true
+ expect(FeedManager.instance.push_to_list(list, reply)).to be true
end
it 'does not push replies to someone not a member of the list' do
status = Fabricate(:status, text: 'Hello world', account: eve)
reply = Fabricate(:status, text: 'Nay', thread: status, account: bob)
- expect(FeedManager.instance.push_to_list(list, reply)).to eq false
+ expect(FeedManager.instance.push_to_list(list, reply)).to be false
end
end
@@ -384,25 +384,25 @@ RSpec.describe FeedManager do
it 'pushes statuses that are not replies' do
status = Fabricate(:status, text: 'Hello world', account: bob)
- expect(FeedManager.instance.push_to_list(list, status)).to eq true
+ expect(FeedManager.instance.push_to_list(list, status)).to be true
end
it 'pushes statuses that are replies to list owner' do
status = Fabricate(:status, text: 'Hello world', account: owner)
reply = Fabricate(:status, text: 'Nay', thread: status, account: bob)
- expect(FeedManager.instance.push_to_list(list, reply)).to eq true
+ expect(FeedManager.instance.push_to_list(list, reply)).to be true
end
it 'pushes replies to another member of the list' do
status = Fabricate(:status, text: 'Hello world', account: alice)
reply = Fabricate(:status, text: 'Nay', thread: status, account: bob)
- expect(FeedManager.instance.push_to_list(list, reply)).to eq true
+ expect(FeedManager.instance.push_to_list(list, reply)).to be true
end
it 'pushes replies to someone not a member of the list' do
status = Fabricate(:status, text: 'Hello world', account: eve)
reply = Fabricate(:status, text: 'Nay', thread: status, account: bob)
- expect(FeedManager.instance.push_to_list(list, reply)).to eq true
+ expect(FeedManager.instance.push_to_list(list, reply)).to be true
end
end
end
@@ -416,7 +416,7 @@ RSpec.describe FeedManager do
FeedManager.instance.merge_into_home(account, reblog.account)
- expect(redis.zscore('feed:home:0', reblog.id)).to eq nil
+ expect(redis.zscore('feed:home:0', reblog.id)).to be_nil
end
end
diff --git a/spec/lib/ostatus/tag_manager_spec.rb b/spec/lib/ostatus/tag_manager_spec.rb
index 65ba7577a..8104a7e79 100644
--- a/spec/lib/ostatus/tag_manager_spec.rb
+++ b/spec/lib/ostatus/tag_manager_spec.rb
@@ -15,15 +15,15 @@ describe OStatus::TagManager do
end
it 'returns nil if it is not local id' do
- expect(OStatus::TagManager.instance.unique_tag_to_local_id('tag:remote,2000-01-01:objectId=12:objectType=Status', 'Status')).to eq nil
+ expect(OStatus::TagManager.instance.unique_tag_to_local_id('tag:remote,2000-01-01:objectId=12:objectType=Status', 'Status')).to be_nil
end
it 'returns nil if it is not expected type' do
- expect(OStatus::TagManager.instance.unique_tag_to_local_id('tag:cb6e6126.ngrok.io,2000-01-01:objectId=12:objectType=Block', 'Status')).to eq nil
+ expect(OStatus::TagManager.instance.unique_tag_to_local_id('tag:cb6e6126.ngrok.io,2000-01-01:objectId=12:objectType=Block', 'Status')).to be_nil
end
it 'returns nil if it does not have object ID' do
- expect(OStatus::TagManager.instance.unique_tag_to_local_id('tag:cb6e6126.ngrok.io,2000-01-01:objectType=Status', 'Status')).to eq nil
+ expect(OStatus::TagManager.instance.unique_tag_to_local_id('tag:cb6e6126.ngrok.io,2000-01-01:objectType=Status', 'Status')).to be_nil
end
end
diff --git a/spec/lib/tag_manager_spec.rb b/spec/lib/tag_manager_spec.rb
index cd9fb936c..d2bb24c0f 100644
--- a/spec/lib/tag_manager_spec.rb
+++ b/spec/lib/tag_manager_spec.rb
@@ -14,15 +14,15 @@ RSpec.describe TagManager do
end
it 'returns true for nil' do
- expect(TagManager.instance.local_domain?(nil)).to eq true
+ expect(TagManager.instance.local_domain?(nil)).to be true
end
it 'returns true if the slash-stripped string equals to local domain' do
- expect(TagManager.instance.local_domain?('DoMaIn.Example.com/')).to eq true
+ expect(TagManager.instance.local_domain?('DoMaIn.Example.com/')).to be true
end
it 'returns false for irrelevant string' do
- expect(TagManager.instance.local_domain?('DoMaIn.Example.com!')).to eq false
+ expect(TagManager.instance.local_domain?('DoMaIn.Example.com!')).to be false
end
end
@@ -39,21 +39,21 @@ RSpec.describe TagManager do
end
it 'returns true for nil' do
- expect(TagManager.instance.web_domain?(nil)).to eq true
+ expect(TagManager.instance.web_domain?(nil)).to be true
end
it 'returns true if the slash-stripped string equals to web domain' do
- expect(TagManager.instance.web_domain?('DoMaIn.Example.com/')).to eq true
+ expect(TagManager.instance.web_domain?('DoMaIn.Example.com/')).to be true
end
it 'returns false for string with irrelevant characters' do
- expect(TagManager.instance.web_domain?('DoMaIn.Example.com!')).to eq false
+ expect(TagManager.instance.web_domain?('DoMaIn.Example.com!')).to be false
end
end
describe '#normalize_domain' do
it 'returns nil if the given parameter is nil' do
- expect(TagManager.instance.normalize_domain(nil)).to eq nil
+ expect(TagManager.instance.normalize_domain(nil)).to be_nil
end
it 'returns normalized domain' do
@@ -70,17 +70,17 @@ RSpec.describe TagManager do
it 'returns true if the normalized string with port is local URL' do
Rails.configuration.x.web_domain = 'domain.example.com:42'
- expect(TagManager.instance.local_url?('https://DoMaIn.Example.com:42/')).to eq true
+ expect(TagManager.instance.local_url?('https://DoMaIn.Example.com:42/')).to be true
end
it 'returns true if the normalized string without port is local URL' do
Rails.configuration.x.web_domain = 'domain.example.com'
- expect(TagManager.instance.local_url?('https://DoMaIn.Example.com/')).to eq true
+ expect(TagManager.instance.local_url?('https://DoMaIn.Example.com/')).to be true
end
it 'returns false for string with irrelevant characters' do
Rails.configuration.x.web_domain = 'domain.example.com'
- expect(TagManager.instance.local_url?('https://domain.example.net/')).to eq false
+ expect(TagManager.instance.local_url?('https://domain.example.net/')).to be false
end
end
end
diff --git a/spec/lib/user_settings_decorator_spec.rb b/spec/lib/user_settings_decorator_spec.rb
index 462c5b124..3b9b7ee2b 100644
--- a/spec/lib/user_settings_decorator_spec.rb
+++ b/spec/lib/user_settings_decorator_spec.rb
@@ -11,14 +11,14 @@ describe UserSettingsDecorator do
values = { 'notification_emails' => { 'follow' => '1' } }
settings.update(values)
- expect(user.settings['notification_emails']['follow']).to eq true
+ expect(user.settings['notification_emails']['follow']).to be true
end
it 'updates the user settings value for interactions' do
values = { 'interactions' => { 'must_be_follower' => '0' } }
settings.update(values)
- expect(user.settings['interactions']['must_be_follower']).to eq false
+ expect(user.settings['interactions']['must_be_follower']).to be false
end
it 'updates the user settings value for privacy' do
@@ -32,42 +32,42 @@ describe UserSettingsDecorator do
values = { 'setting_default_sensitive' => '1' }
settings.update(values)
- expect(user.settings['default_sensitive']).to eq true
+ expect(user.settings['default_sensitive']).to be true
end
it 'updates the user settings value for unfollow modal' do
values = { 'setting_unfollow_modal' => '0' }
settings.update(values)
- expect(user.settings['unfollow_modal']).to eq false
+ expect(user.settings['unfollow_modal']).to be false
end
it 'updates the user settings value for boost modal' do
values = { 'setting_boost_modal' => '1' }
settings.update(values)
- expect(user.settings['boost_modal']).to eq true
+ expect(user.settings['boost_modal']).to be true
end
it 'updates the user settings value for delete toot modal' do
values = { 'setting_delete_modal' => '0' }
settings.update(values)
- expect(user.settings['delete_modal']).to eq false
+ expect(user.settings['delete_modal']).to be false
end
it 'updates the user settings value for gif auto play' do
values = { 'setting_auto_play_gif' => '0' }
settings.update(values)
- expect(user.settings['auto_play_gif']).to eq false
+ expect(user.settings['auto_play_gif']).to be false
end
it 'updates the user settings value for system font in UI' do
values = { 'setting_system_font_ui' => '0' }
settings.update(values)
- expect(user.settings['system_font_ui']).to eq false
+ expect(user.settings['system_font_ui']).to be false
end
it 'decoerces setting values before applying' do
@@ -77,8 +77,8 @@ describe UserSettingsDecorator do
}
settings.update(values)
- expect(user.settings['delete_modal']).to eq false
- expect(user.settings['boost_modal']).to eq true
+ expect(user.settings['delete_modal']).to be false
+ expect(user.settings['boost_modal']).to be true
end
end
end
diff --git a/spec/models/account_domain_block_spec.rb b/spec/models/account_domain_block_spec.rb
index 469bc05cb..a170abcd2 100644
--- a/spec/models/account_domain_block_spec.rb
+++ b/spec/models/account_domain_block_spec.rb
@@ -7,7 +7,7 @@ RSpec.describe AccountDomainBlock, type: :model do
AccountDomainBlock.create!(account: account, domain: 'a.domain.blocked.later')
- expect(Rails.cache.exist?("exclude_domains_for:#{account.id}")).to eq false
+ expect(Rails.cache.exist?("exclude_domains_for:#{account.id}")).to be false
end
it 'removes blocking cache after destruction' do
@@ -17,6 +17,6 @@ RSpec.describe AccountDomainBlock, type: :model do
block.destroy!
- expect(Rails.cache.exist?("exclude_domains_for:#{account.id}")).to eq false
+ expect(Rails.cache.exist?("exclude_domains_for:#{account.id}")).to be false
end
end
diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb
index 24239f85d..f3ad19877 100644
--- a/spec/models/account_spec.rb
+++ b/spec/models/account_spec.rb
@@ -160,7 +160,7 @@ RSpec.describe Account, type: :model do
it 'sets default avatar, header, avatar_remote_url, and header_remote_url' do
expect(account.avatar_remote_url).to eq 'https://remote.test/invalid_avatar'
expect(account.header_remote_url).to eq expectation.header_remote_url
- expect(account.avatar_file_name).to eq nil
+ expect(account.avatar_file_name).to be_nil
expect(account.header_file_name).to eq expectation.header_file_name
end
end
@@ -259,11 +259,11 @@ RSpec.describe Account, type: :model do
it 'is true when this account has favourited it' do
Fabricate(:favourite, status: original_reblog, account: subject)
- expect(subject.favourited?(original_status)).to eq true
+ expect(subject.favourited?(original_status)).to be true
end
it 'is false when this account has not favourited it' do
- expect(subject.favourited?(original_status)).to eq false
+ expect(subject.favourited?(original_status)).to be false
end
end
@@ -271,11 +271,11 @@ RSpec.describe Account, type: :model do
it 'is true when this account has favourited it' do
Fabricate(:favourite, status: original_status, account: subject)
- expect(subject.favourited?(original_status)).to eq true
+ expect(subject.favourited?(original_status)).to be true
end
it 'is false when this account has not favourited it' do
- expect(subject.favourited?(original_status)).to eq false
+ expect(subject.favourited?(original_status)).to be false
end
end
end
@@ -297,11 +297,11 @@ RSpec.describe Account, type: :model do
it 'is true when this account has reblogged it' do
Fabricate(:status, reblog: original_reblog, account: subject)
- expect(subject.reblogged?(original_reblog)).to eq true
+ expect(subject.reblogged?(original_reblog)).to be true
end
it 'is false when this account has not reblogged it' do
- expect(subject.reblogged?(original_reblog)).to eq false
+ expect(subject.reblogged?(original_reblog)).to be false
end
end
@@ -309,11 +309,11 @@ RSpec.describe Account, type: :model do
it 'is true when this account has reblogged it' do
Fabricate(:status, reblog: original_status, account: subject)
- expect(subject.reblogged?(original_status)).to eq true
+ expect(subject.reblogged?(original_status)).to be true
end
it 'is false when this account has not reblogged it' do
- expect(subject.reblogged?(original_status)).to eq false
+ expect(subject.reblogged?(original_status)).to be false
end
end
end
@@ -958,7 +958,7 @@ RSpec.describe Account, type: :model do
# Test disabled because test environment omits autogenerating keys for performance
xit 'generates keys' do
account = Account.create!(domain: nil, username: Faker::Internet.user_name(separators: ['_']))
- expect(account.keypair.private?).to eq true
+ expect(account.keypair.private?).to be true
end
end
diff --git a/spec/models/block_spec.rb b/spec/models/block_spec.rb
index acbdc77f5..1fd60c29d 100644
--- a/spec/models/block_spec.rb
+++ b/spec/models/block_spec.rb
@@ -28,8 +28,8 @@ RSpec.describe Block, type: :model do
Block.create!(account: account, target_account: target_account)
- expect(Rails.cache.exist?("exclude_account_ids_for:#{account.id}")).to eq false
- expect(Rails.cache.exist?("exclude_account_ids_for:#{target_account.id}")).to eq false
+ expect(Rails.cache.exist?("exclude_account_ids_for:#{account.id}")).to be false
+ expect(Rails.cache.exist?("exclude_account_ids_for:#{target_account.id}")).to be false
end
it 'removes blocking cache after destruction' do
@@ -41,7 +41,7 @@ RSpec.describe Block, type: :model do
block.destroy!
- expect(Rails.cache.exist?("exclude_account_ids_for:#{account.id}")).to eq false
- expect(Rails.cache.exist?("exclude_account_ids_for:#{target_account.id}")).to eq false
+ expect(Rails.cache.exist?("exclude_account_ids_for:#{account.id}")).to be false
+ expect(Rails.cache.exist?("exclude_account_ids_for:#{target_account.id}")).to be false
end
end
diff --git a/spec/models/domain_block_spec.rb b/spec/models/domain_block_spec.rb
index 28647dc89..d1d57c167 100644
--- a/spec/models/domain_block_spec.rb
+++ b/spec/models/domain_block_spec.rb
@@ -24,16 +24,16 @@ RSpec.describe DomainBlock, type: :model do
describe '.blocked?' do
it 'returns true if the domain is suspended' do
Fabricate(:domain_block, domain: 'example.com', severity: :suspend)
- expect(DomainBlock.blocked?('example.com')).to eq true
+ expect(DomainBlock.blocked?('example.com')).to be true
end
it 'returns false even if the domain is silenced' do
Fabricate(:domain_block, domain: 'example.com', severity: :silence)
- expect(DomainBlock.blocked?('example.com')).to eq false
+ expect(DomainBlock.blocked?('example.com')).to be false
end
it 'returns false if the domain is not suspended nor silenced' do
- expect(DomainBlock.blocked?('example.com')).to eq false
+ expect(DomainBlock.blocked?('example.com')).to be false
end
end
diff --git a/spec/models/favourite_spec.rb b/spec/models/favourite_spec.rb
index ba1410a45..f755590ee 100644
--- a/spec/models/favourite_spec.rb
+++ b/spec/models/favourite_spec.rb
@@ -9,7 +9,7 @@ RSpec.describe Favourite, type: :model do
it 'invalidates if the reblogged status is already a favourite' do
Favourite.create!(account: account, status: reblog)
- expect(Favourite.new(account: account, status: status).valid?).to eq false
+ expect(Favourite.new(account: account, status: status).valid?).to be false
end
it 'replaces status with the reblogged one if it is a reblog' do
diff --git a/spec/models/media_attachment_spec.rb b/spec/models/media_attachment_spec.rb
index 57e131423..097c76f31 100644
--- a/spec/models/media_attachment_spec.rb
+++ b/spec/models/media_attachment_spec.rb
@@ -138,7 +138,7 @@ RSpec.describe MediaAttachment, type: :model do
end
it 'extracts thumbnail' do
- expect(media.thumbnail.present?).to eq true
+ expect(media.thumbnail.present?).to be true
end
it 'extracts colors from thumbnail' do
diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb
index 9af616b32..9dfd6678a 100644
--- a/spec/models/user_spec.rb
+++ b/spec/models/user_spec.rb
@@ -46,7 +46,7 @@ RSpec.describe User, type: :model do
it 'cleans out empty string from languages' do
user = Fabricate.build(:user, chosen_languages: [''])
user.valid?
- expect(user.chosen_languages).to eq nil
+ expect(user.chosen_languages).to be_nil
end
end
diff --git a/spec/models/web/push_subscription_spec.rb b/spec/models/web/push_subscription_spec.rb
index 388154000..a5c34f4ed 100644
--- a/spec/models/web/push_subscription_spec.rb
+++ b/spec/models/web/push_subscription_spec.rb
@@ -39,7 +39,7 @@ RSpec.describe Web::PushSubscription, type: :model do
let(:policy) { 'all' }
it 'returns true' do
- expect(subject.pushable?(notification)).to eq true
+ expect(subject.pushable?(notification)).to be true
end
end
@@ -47,7 +47,7 @@ RSpec.describe Web::PushSubscription, type: :model do
let(:policy) { 'none' }
it 'returns false' do
- expect(subject.pushable?(notification)).to eq false
+ expect(subject.pushable?(notification)).to be false
end
end
@@ -60,13 +60,13 @@ RSpec.describe Web::PushSubscription, type: :model do
end
it 'returns true' do
- expect(subject.pushable?(notification)).to eq true
+ expect(subject.pushable?(notification)).to be true
end
end
context 'and notification is not from someone you follow' do
it 'returns false' do
- expect(subject.pushable?(notification)).to eq false
+ expect(subject.pushable?(notification)).to be false
end
end
end
@@ -80,13 +80,13 @@ RSpec.describe Web::PushSubscription, type: :model do
end
it 'returns true' do
- expect(subject.pushable?(notification)).to eq true
+ expect(subject.pushable?(notification)).to be true
end
end
context 'and notification is not from someone who follows you' do
it 'returns false' do
- expect(subject.pushable?(notification)).to eq false
+ expect(subject.pushable?(notification)).to be false
end
end
end
diff --git a/spec/services/activitypub/process_status_update_service_spec.rb b/spec/services/activitypub/process_status_update_service_spec.rb
index 3d6f76163..c8aa56def 100644
--- a/spec/services/activitypub/process_status_update_service_spec.rb
+++ b/spec/services/activitypub/process_status_update_service_spec.rb
@@ -410,7 +410,7 @@ RSpec.describe ActivityPub::ProcessStatusUpdateService, type: :service do
end
it 'removes poll' do
- expect(status.reload.poll).to eq nil
+ expect(status.reload.poll).to be_nil
end
it 'records media change in edit' do
diff --git a/spec/services/fetch_oembed_service_spec.rb b/spec/services/fetch_oembed_service_spec.rb
index cf46f2d39..8a0b49222 100644
--- a/spec/services/fetch_oembed_service_spec.rb
+++ b/spec/services/fetch_oembed_service_spec.rb
@@ -62,7 +62,7 @@ describe FetchOEmbedService, type: :service do
it 'does not cache OEmbed endpoint' do
subject.call('https://host.test/oembed.html', format: :xml)
- expect(Rails.cache.exist?('oembed_endpoint:host.test')).to eq false
+ expect(Rails.cache.exist?('oembed_endpoint:host.test')).to be false
end
end
@@ -83,7 +83,7 @@ describe FetchOEmbedService, type: :service do
it 'does not cache OEmbed endpoint' do
subject.call('https://host.test/oembed.html')
- expect(Rails.cache.exist?('oembed_endpoint:host.test')).to eq false
+ expect(Rails.cache.exist?('oembed_endpoint:host.test')).to be false
end
end
@@ -104,7 +104,7 @@ describe FetchOEmbedService, type: :service do
it 'does not cache OEmbed endpoint' do
subject.call('https://host.test/oembed.html')
- expect(Rails.cache.exist?('oembed_endpoint:host.test')).to eq false
+ expect(Rails.cache.exist?('oembed_endpoint:host.test')).to be false
end
end
diff --git a/spec/services/fetch_resource_service_spec.rb b/spec/services/fetch_resource_service_spec.rb
index 84c4035cb..226c98d70 100644
--- a/spec/services/fetch_resource_service_spec.rb
+++ b/spec/services/fetch_resource_service_spec.rb
@@ -74,7 +74,7 @@ RSpec.describe FetchResourceService, type: :service do
context 'when content type is application/atom+xml' do
let(:content_type) { 'application/atom+xml' }
- it { is_expected.to eq nil }
+ it { is_expected.to be_nil }
end
context 'when content type is activity+json' do
diff --git a/spec/services/post_status_service_spec.rb b/spec/services/post_status_service_spec.rb
index 2148f1819..c34f2393a 100644
--- a/spec/services/post_status_service_spec.rb
+++ b/spec/services/post_status_service_spec.rb
@@ -216,7 +216,7 @@ RSpec.describe PostStatusService, type: :service do
media_ids: [media.id]
)
- expect(media.reload.status).to eq nil
+ expect(media.reload.status).to be_nil
end
it 'does not allow attaching more than 4 files' do
diff --git a/spec/services/precompute_feed_service_spec.rb b/spec/services/precompute_feed_service_spec.rb
index b28824f9a..86ab59b29 100644
--- a/spec/services/precompute_feed_service_spec.rb
+++ b/spec/services/precompute_feed_service_spec.rb
@@ -31,7 +31,7 @@ RSpec.describe PrecomputeFeedService, type: :service do
subject.call(account)
- expect(redis.zscore(FeedManager.instance.key(:home, account.id), reblog.id)).to eq nil
+ expect(redis.zscore(FeedManager.instance.key(:home, account.id), reblog.id)).to be_nil
end
end
end
diff --git a/spec/services/resolve_account_service_spec.rb b/spec/services/resolve_account_service_spec.rb
index 192225229..02869f8c8 100644
--- a/spec/services/resolve_account_service_spec.rb
+++ b/spec/services/resolve_account_service_spec.rb
@@ -108,7 +108,7 @@ RSpec.describe ResolveAccountService, type: :service do
it 'returns new remote account' do
account = subject.call('Foo@redirected.example.com')
- expect(account.activitypub?).to eq true
+ expect(account.activitypub?).to be true
expect(account.acct).to eq 'foo@ap.example.com'
expect(account.inbox_url).to eq 'https://ap.example.com/users/foo/inbox'
end
@@ -123,7 +123,7 @@ RSpec.describe ResolveAccountService, type: :service do
it 'returns new remote account' do
account = subject.call('Foo@redirected.example.com')
- expect(account.activitypub?).to eq true
+ expect(account.activitypub?).to be true
expect(account.acct).to eq 'foo@ap.example.com'
expect(account.inbox_url).to eq 'https://ap.example.com/users/foo/inbox'
end
@@ -146,7 +146,7 @@ RSpec.describe ResolveAccountService, type: :service do
it 'returns new remote account' do
account = subject.call('foo@ap.example.com')
- expect(account.activitypub?).to eq true
+ expect(account.activitypub?).to be true
expect(account.domain).to eq 'ap.example.com'
expect(account.inbox_url).to eq 'https://ap.example.com/users/foo/inbox'
end
@@ -159,7 +159,7 @@ RSpec.describe ResolveAccountService, type: :service do
it 'returns new remote account' do
account = subject.call('foo@ap.example.com')
- expect(account.activitypub?).to eq true
+ expect(account.activitypub?).to be true
expect(account.domain).to eq 'ap.example.com'
expect(account.inbox_url).to eq 'https://ap.example.com/users/foo/inbox'
expect(account.actor_type).to eq 'Person'
@@ -174,7 +174,7 @@ RSpec.describe ResolveAccountService, type: :service do
it 'returns new remote account' do
account = subject.call('foo@ap.example.com')
- expect(account.activitypub?).to eq true
+ expect(account.activitypub?).to be true
expect(account.domain).to eq 'ap.example.com'
expect(account.inbox_url).to eq 'https://ap.example.com/users/foo/inbox'
expect(account.uri).to eq 'https://ap.example.com/users/foo'
@@ -195,7 +195,7 @@ RSpec.describe ResolveAccountService, type: :service do
it 'returns new remote account' do
account = subject.call('foo@ap.example.com')
- expect(account.activitypub?).to eq true
+ expect(account.activitypub?).to be true
expect(account.domain).to eq 'ap.example.com'
expect(account.inbox_url).to eq 'https://ap.example.com/users/foo/inbox'
expect(account.uri).to eq 'https://ap.example.com/users/foo'
diff --git a/spec/support/examples/lib/settings/scoped_settings.rb b/spec/support/examples/lib/settings/scoped_settings.rb
index 2457dcfbf..106adb4fa 100644
--- a/spec/support/examples/lib/settings/scoped_settings.rb
+++ b/spec/support/examples/lib/settings/scoped_settings.rb
@@ -3,13 +3,13 @@
shared_examples 'ScopedSettings' do
describe '[]' do
it 'inherits default settings' do
- expect(Setting.boost_modal).to eq false
- expect(Setting.interactions['must_be_follower']).to eq false
+ expect(Setting.boost_modal).to be false
+ expect(Setting.interactions['must_be_follower']).to be false
settings = create!
- expect(settings['boost_modal']).to eq false
- expect(settings['interactions']['must_be_follower']).to eq false
+ expect(settings['boost_modal']).to be false
+ expect(settings['interactions']['must_be_follower']).to be false
end
end
@@ -17,16 +17,16 @@ shared_examples 'ScopedSettings' do
# expecting [] and []= works
it 'returns records merged with default values except hashes' do
- expect(Setting.boost_modal).to eq false
- expect(Setting.delete_modal).to eq true
+ expect(Setting.boost_modal).to be false
+ expect(Setting.delete_modal).to be true
settings = create!
settings['boost_modal'] = true
records = settings.all_as_records
- expect(records['boost_modal'].value).to eq true
- expect(records['delete_modal'].value).to eq true
+ expect(records['boost_modal'].value).to be true
+ expect(records['delete_modal'].value).to be true
end
end
@@ -34,15 +34,15 @@ shared_examples 'ScopedSettings' do
# expecting [] and []= works.
it 'reads settings' do
- expect(Setting.boost_modal).to eq false
+ expect(Setting.boost_modal).to be false
settings = create!
- expect(settings.boost_modal).to eq false
+ expect(settings.boost_modal).to be false
end
it 'updates settings' do
settings = fabricate
settings.boost_modal = true
- expect(settings['boost_modal']).to eq true
+ expect(settings['boost_modal']).to be true
end
end
@@ -54,13 +54,13 @@ shared_examples 'ScopedSettings' do
Setting.save!
- expect(settings['boost_modal']).to eq true
- expect(settings['interactions']['must_be_follower']).to eq true
+ expect(settings['boost_modal']).to be true
+ expect(settings['interactions']['must_be_follower']).to be true
Rails.cache.clear
- expect(settings['boost_modal']).to eq true
- expect(settings['interactions']['must_be_follower']).to eq true
+ expect(settings['boost_modal']).to be true
+ expect(settings['interactions']['must_be_follower']).to be true
end
xit 'does not mutate defaults via the cache' do
@@ -69,6 +69,6 @@ shared_examples 'ScopedSettings' do
# This mutates the global settings default such that future
# instances will inherit the incorrect starting values
- expect(fabricate.settings['interactions']['must_be_follower']).to eq false
+ expect(fabricate.settings['interactions']['must_be_follower']).to be false
end
end
diff --git a/spec/workers/domain_block_worker_spec.rb b/spec/workers/domain_block_worker_spec.rb
index bd8fc4a62..8b98443fa 100644
--- a/spec/workers/domain_block_worker_spec.rb
+++ b/spec/workers/domain_block_worker_spec.rb
@@ -20,7 +20,7 @@ describe DomainBlockWorker do
it 'returns true for non-existent domain block' do
result = subject.perform('aaa')
- expect(result).to eq(true)
+ expect(result).to be(true)
end
end
end
diff --git a/spec/workers/domain_clear_media_worker_spec.rb b/spec/workers/domain_clear_media_worker_spec.rb
index 36251b1ec..f21d1fe18 100644
--- a/spec/workers/domain_clear_media_worker_spec.rb
+++ b/spec/workers/domain_clear_media_worker_spec.rb
@@ -20,7 +20,7 @@ describe DomainClearMediaWorker do
it 'returns true for non-existent domain block' do
result = subject.perform('aaa')
- expect(result).to eq(true)
+ expect(result).to be(true)
end
end
end
diff --git a/spec/workers/feed_insert_worker_spec.rb b/spec/workers/feed_insert_worker_spec.rb
index 1a723d63a..16f7d73e0 100644
--- a/spec/workers/feed_insert_worker_spec.rb
+++ b/spec/workers/feed_insert_worker_spec.rb
@@ -15,7 +15,7 @@ describe FeedInsertWorker do
allow(FeedManager).to receive(:instance).and_return(instance)
result = subject.perform(nil, follower.id)
- expect(result).to eq true
+ expect(result).to be true
expect(instance).to_not have_received(:push_to_home)
end
@@ -24,7 +24,7 @@ describe FeedInsertWorker do
allow(FeedManager).to receive(:instance).and_return(instance)
result = subject.perform(status.id, nil)
- expect(result).to eq true
+ expect(result).to be true
expect(instance).to_not have_received(:push_to_home)
end
end
diff --git a/spec/workers/regeneration_worker_spec.rb b/spec/workers/regeneration_worker_spec.rb
index c6bdfa0e5..147a76be5 100644
--- a/spec/workers/regeneration_worker_spec.rb
+++ b/spec/workers/regeneration_worker_spec.rb
@@ -20,7 +20,7 @@ describe RegenerationWorker do
it 'fails when account does not exist' do
result = subject.perform('aaa')
- expect(result).to eq(true)
+ expect(result).to be(true)
end
end
end
--
cgit
From 2c3c734bcc5e485a59145b78f5c783ca9a462cb7 Mon Sep 17 00:00:00 2001
From: Nick Schonning
Date: Mon, 20 Feb 2023 01:58:46 -0500
Subject: Autofix Rubocop Style/SymbolProc (#23742)
---
.rubocop_todo.yml | 8 --------
spec/lib/request_spec.rb | 8 ++++----
2 files changed, 4 insertions(+), 12 deletions(-)
(limited to 'spec/lib')
diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml
index 19d595e90..f365914cb 100644
--- a/.rubocop_todo.yml
+++ b/.rubocop_todo.yml
@@ -2451,11 +2451,3 @@ Style/SymbolArray:
- 'spec/controllers/concerns/signature_verification_spec.rb'
- 'spec/fabricators/notification_fabricator.rb'
- 'spec/models/public_feed_spec.rb'
-
-# Offense count: 4
-# This cop supports unsafe autocorrection (--autocorrect-all).
-# Configuration parameters: AllowMethodsWithArguments, AllowedMethods, AllowedPatterns, AllowComments.
-# AllowedMethods: define_method, mail, respond_to
-Style/SymbolProc:
- Exclude:
- - 'spec/lib/request_spec.rb'
diff --git a/spec/lib/request_spec.rb b/spec/lib/request_spec.rb
index f63a836de..25fe9ed37 100644
--- a/spec/lib/request_spec.rb
+++ b/spec/lib/request_spec.rb
@@ -97,12 +97,12 @@ describe Request do
describe "response's body_with_limit method" do
it 'rejects body more than 1 megabyte by default' do
stub_request(:any, 'http://example.com').to_return(body: SecureRandom.random_bytes(2.megabytes))
- expect { subject.perform { |response| response.body_with_limit } }.to raise_error Mastodon::LengthValidationError
+ expect { subject.perform(&:body_with_limit) }.to raise_error Mastodon::LengthValidationError
end
it 'accepts body less than 1 megabyte by default' do
stub_request(:any, 'http://example.com').to_return(body: SecureRandom.random_bytes(2.kilobytes))
- expect { subject.perform { |response| response.body_with_limit } }.to_not raise_error
+ expect { subject.perform(&:body_with_limit) }.to_not raise_error
end
it 'rejects body by given size' do
@@ -112,12 +112,12 @@ describe Request do
it 'rejects too large chunked body' do
stub_request(:any, 'http://example.com').to_return(body: SecureRandom.random_bytes(2.megabytes), headers: { 'Transfer-Encoding' => 'chunked' })
- expect { subject.perform { |response| response.body_with_limit } }.to raise_error Mastodon::LengthValidationError
+ expect { subject.perform(&:body_with_limit) }.to raise_error Mastodon::LengthValidationError
end
it 'rejects too large monolithic body' do
stub_request(:any, 'http://example.com').to_return(body: SecureRandom.random_bytes(2.megabytes), headers: { 'Content-Length' => 2.megabytes })
- expect { subject.perform { |response| response.body_with_limit } }.to raise_error Mastodon::LengthValidationError
+ expect { subject.perform(&:body_with_limit) }.to raise_error Mastodon::LengthValidationError
end
it 'truncates large monolithic body' do
--
cgit
From 84cc805caea566d4fb0fafce411cd07f83cfd0e2 Mon Sep 17 00:00:00 2001
From: Nick Schonning
Date: Tue, 21 Feb 2023 19:55:31 -0500
Subject: Enable Style/FrozenStringLiteralComment for specs (#23790)
---
spec/config/initializers/rack_attack_spec.rb | 2 ++
spec/controllers/about_controller_spec.rb | 2 ++
spec/controllers/accounts_controller_spec.rb | 2 ++
.../activitypub/followers_synchronizations_controller_spec.rb | 2 ++
spec/controllers/activitypub/outboxes_controller_spec.rb | 2 ++
spec/controllers/admin/account_moderation_notes_controller_spec.rb | 2 ++
spec/controllers/admin/accounts_controller_spec.rb | 2 ++
spec/controllers/admin/change_email_controller_spec.rb | 2 ++
spec/controllers/admin/confirmations_controller_spec.rb | 2 ++
spec/controllers/admin/custom_emojis_controller_spec.rb | 2 ++
spec/controllers/admin/disputes/appeals_controller_spec.rb | 2 ++
spec/controllers/admin/domain_allows_controller_spec.rb | 2 ++
spec/controllers/admin/domain_blocks_controller_spec.rb | 2 ++
spec/controllers/admin/export_domain_allows_controller_spec.rb | 2 ++
spec/controllers/admin/export_domain_blocks_controller_spec.rb | 2 ++
spec/controllers/admin/instances_controller_spec.rb | 2 ++
spec/controllers/admin/report_notes_controller_spec.rb | 2 ++
spec/controllers/admin/reports/actions_controller_spec.rb | 2 ++
spec/controllers/admin/reports_controller_spec.rb | 2 ++
spec/controllers/admin/resets_controller_spec.rb | 2 ++
spec/controllers/admin/roles_controller_spec.rb | 2 ++
spec/controllers/admin/statuses_controller_spec.rb | 2 ++
spec/controllers/admin/users/roles_controller.rb | 2 ++
.../admin/users/two_factor_authentications_controller_spec.rb | 2 ++
spec/controllers/api/oembed_controller_spec.rb | 2 ++
spec/controllers/api/v1/accounts/credentials_controller_spec.rb | 2 ++
spec/controllers/api/v1/accounts/follower_accounts_controller_spec.rb | 2 ++
spec/controllers/api/v1/accounts/following_accounts_controller_spec.rb | 2 ++
spec/controllers/api/v1/accounts/lists_controller_spec.rb | 2 ++
spec/controllers/api/v1/accounts/notes_controller_spec.rb | 2 ++
spec/controllers/api/v1/accounts/relationships_controller_spec.rb | 2 ++
spec/controllers/api/v1/accounts/search_controller_spec.rb | 2 ++
spec/controllers/api/v1/accounts_controller_spec.rb | 2 ++
spec/controllers/api/v1/admin/account_actions_controller_spec.rb | 2 ++
spec/controllers/api/v1/admin/accounts_controller_spec.rb | 2 ++
spec/controllers/api/v1/admin/domain_allows_controller_spec.rb | 2 ++
spec/controllers/api/v1/admin/domain_blocks_controller_spec.rb | 2 ++
spec/controllers/api/v1/admin/reports_controller_spec.rb | 2 ++
spec/controllers/api/v1/apps/credentials_controller_spec.rb | 2 ++
spec/controllers/api/v1/apps_controller_spec.rb | 2 ++
spec/controllers/api/v1/blocks_controller_spec.rb | 2 ++
spec/controllers/api/v1/bookmarks_controller_spec.rb | 2 ++
spec/controllers/api/v1/conversations_controller_spec.rb | 2 ++
spec/controllers/api/v1/domain_blocks_controller_spec.rb | 2 ++
spec/controllers/api/v1/emails/confirmations_controller_spec.rb | 2 ++
spec/controllers/api/v1/favourites_controller_spec.rb | 2 ++
spec/controllers/api/v1/filters_controller_spec.rb | 2 ++
spec/controllers/api/v1/follow_requests_controller_spec.rb | 2 ++
spec/controllers/api/v1/followed_tags_controller_spec.rb | 2 ++
spec/controllers/api/v1/lists/accounts_controller_spec.rb | 2 ++
spec/controllers/api/v1/lists_controller_spec.rb | 2 ++
spec/controllers/api/v1/markers_controller_spec.rb | 2 ++
spec/controllers/api/v1/media_controller_spec.rb | 2 ++
spec/controllers/api/v1/mutes_controller_spec.rb | 2 ++
spec/controllers/api/v1/notifications_controller_spec.rb | 2 ++
spec/controllers/api/v1/polls/votes_controller_spec.rb | 2 ++
spec/controllers/api/v1/polls_controller_spec.rb | 2 ++
.../api/v1/statuses/favourited_by_accounts_controller_spec.rb | 2 ++
.../api/v1/statuses/reblogged_by_accounts_controller_spec.rb | 2 ++
spec/controllers/api/v1/statuses_controller_spec.rb | 2 ++
spec/controllers/api/v1/suggestions_controller_spec.rb | 2 ++
spec/controllers/api/v1/tags_controller_spec.rb | 2 ++
spec/controllers/api/v2/admin/accounts_controller_spec.rb | 2 ++
spec/controllers/api/v2/filters/keywords_controller_spec.rb | 2 ++
spec/controllers/api/v2/filters/statuses_controller_spec.rb | 2 ++
spec/controllers/api/v2/filters_controller_spec.rb | 2 ++
spec/controllers/auth/registrations_controller_spec.rb | 2 ++
spec/controllers/disputes/appeals_controller_spec.rb | 2 ++
spec/controllers/disputes/strikes_controller_spec.rb | 2 ++
spec/controllers/emojis_controller_spec.rb | 2 ++
spec/controllers/follower_accounts_controller_spec.rb | 2 ++
spec/controllers/following_accounts_controller_spec.rb | 2 ++
spec/controllers/home_controller_spec.rb | 2 ++
spec/controllers/instance_actors_controller_spec.rb | 2 ++
spec/controllers/intents_controller_spec.rb | 2 ++
spec/controllers/invites_controller_spec.rb | 2 ++
spec/controllers/manifests_controller_spec.rb | 2 ++
spec/controllers/relationships_controller_spec.rb | 2 ++
spec/controllers/settings/applications_controller_spec.rb | 2 ++
spec/controllers/settings/deletes_controller_spec.rb | 2 ++
spec/controllers/settings/exports/blocked_accounts_controller_spec.rb | 2 ++
spec/controllers/settings/exports/bookmarks_controller_spec.rb | 2 ++
spec/controllers/settings/exports/following_accounts_controller_spec.rb | 2 ++
spec/controllers/settings/exports/muted_accounts_controller_spec.rb | 2 ++
spec/controllers/settings/featured_tags_controller_spec.rb | 2 ++
spec/controllers/settings/imports_controller_spec.rb | 2 ++
spec/controllers/settings/migrations_controller_spec.rb | 2 ++
spec/controllers/settings/preferences/notifications_controller_spec.rb | 2 ++
spec/controllers/settings/preferences/other_controller_spec.rb | 2 ++
spec/controllers/settings/profiles_controller_spec.rb | 2 ++
spec/controllers/settings/sessions_controller_spec.rb | 2 ++
spec/controllers/shares_controller_spec.rb | 2 ++
spec/controllers/statuses_cleanup_controller_spec.rb | 2 ++
spec/controllers/tags_controller_spec.rb | 2 ++
spec/controllers/well_known/host_meta_controller_spec.rb | 2 ++
spec/controllers/well_known/nodeinfo_controller_spec.rb | 2 ++
spec/controllers/well_known/webfinger_controller_spec.rb | 2 ++
spec/fabricators/access_grant_fabricator.rb | 2 ++
spec/fabricators/access_token_fabricator.rb | 2 ++
spec/fabricators/accessible_access_token_fabricator.rb | 2 ++
spec/fabricators/account_alias_fabricator.rb | 2 ++
spec/fabricators/account_deletion_request_fabricator.rb | 2 ++
spec/fabricators/account_domain_block_fabricator.rb | 2 ++
spec/fabricators/account_fabricator.rb | 2 ++
spec/fabricators/account_migration_fabricator.rb | 2 ++
spec/fabricators/account_moderation_note_fabricator.rb | 2 ++
spec/fabricators/account_note_fabricator.rb | 2 ++
spec/fabricators/account_pin_fabricator.rb | 2 ++
spec/fabricators/account_stat_fabricator.rb | 2 ++
spec/fabricators/account_statuses_cleanup_policy_fabricator.rb | 2 ++
spec/fabricators/account_tag_stat_fabricator.rb | 2 ++
spec/fabricators/account_warning_fabricator.rb | 2 ++
spec/fabricators/account_warning_preset_fabricator.rb | 2 ++
spec/fabricators/admin_action_log_fabricator.rb | 2 ++
spec/fabricators/announcement_fabricator.rb | 2 ++
spec/fabricators/announcement_mute_fabricator.rb | 2 ++
spec/fabricators/announcement_reaction_fabricator.rb | 2 ++
spec/fabricators/appeal_fabricator.rb | 2 ++
spec/fabricators/application_fabricator.rb | 2 ++
spec/fabricators/backup_fabricator.rb | 2 ++
spec/fabricators/block_fabricator.rb | 2 ++
spec/fabricators/bookmark_fabricator.rb | 2 ++
spec/fabricators/canonical_email_block_fabricator.rb | 2 ++
spec/fabricators/conversation_account_fabricator.rb | 2 ++
spec/fabricators/conversation_fabricator.rb | 2 ++
spec/fabricators/conversation_mute_fabricator.rb | 2 ++
spec/fabricators/custom_emoji_category_fabricator.rb | 2 ++
spec/fabricators/custom_emoji_fabricator.rb | 2 ++
spec/fabricators/custom_filter_fabricator.rb | 2 ++
spec/fabricators/custom_filter_keyword_fabricator.rb | 2 ++
spec/fabricators/custom_filter_status_fabricator.rb | 2 ++
spec/fabricators/device_fabricator.rb | 2 ++
spec/fabricators/domain_allow_fabricator.rb | 2 ++
spec/fabricators/domain_block_fabricator.rb | 2 ++
spec/fabricators/email_domain_block_fabricator.rb | 2 ++
spec/fabricators/encrypted_message_fabricator.rb | 2 ++
spec/fabricators/favourite_fabricator.rb | 2 ++
spec/fabricators/featured_tag_fabricator.rb | 2 ++
spec/fabricators/follow_fabricator.rb | 2 ++
spec/fabricators/follow_recommendation_suppression_fabricator.rb | 2 ++
spec/fabricators/follow_request_fabricator.rb | 2 ++
spec/fabricators/identity_fabricator.rb | 2 ++
spec/fabricators/import_fabricator.rb | 2 ++
spec/fabricators/invite_fabricator.rb | 2 ++
spec/fabricators/ip_block_fabricator.rb | 2 ++
spec/fabricators/list_account_fabricator.rb | 2 ++
spec/fabricators/list_fabricator.rb | 2 ++
spec/fabricators/login_activity_fabricator.rb | 2 ++
spec/fabricators/marker_fabricator.rb | 2 ++
spec/fabricators/media_attachment_fabricator.rb | 2 ++
spec/fabricators/mention_fabricator.rb | 2 ++
spec/fabricators/mute_fabricator.rb | 2 ++
spec/fabricators/notification_fabricator.rb | 2 ++
spec/fabricators/one_time_key_fabricator.rb | 2 ++
spec/fabricators/poll_fabricator.rb | 2 ++
spec/fabricators/poll_vote_fabricator.rb | 2 ++
spec/fabricators/preview_card_fabricator.rb | 2 ++
spec/fabricators/relay_fabricator.rb | 2 ++
spec/fabricators/report_fabricator.rb | 2 ++
spec/fabricators/report_note_fabricator.rb | 2 ++
spec/fabricators/rule_fabricator.rb | 2 ++
spec/fabricators/scheduled_status_fabricator.rb | 2 ++
spec/fabricators/session_activation_fabricator.rb | 2 ++
spec/fabricators/site_upload_fabricator.rb | 2 ++
spec/fabricators/status_edit_fabricator.rb | 2 ++
spec/fabricators/status_fabricator.rb | 2 ++
spec/fabricators/status_pin_fabricator.rb | 2 ++
spec/fabricators/status_stat_fabricator.rb | 2 ++
spec/fabricators/system_key_fabricator.rb | 2 ++
spec/fabricators/tag_fabricator.rb | 2 ++
spec/fabricators/tag_follow_fabricator.rb | 2 ++
spec/fabricators/unavailable_domain_fabricator.rb | 2 ++
spec/fabricators/user_fabricator.rb | 2 ++
spec/fabricators/user_invite_request_fabricator.rb | 2 ++
spec/fabricators/user_role_fabricator.rb | 2 ++
spec/fabricators/web_push_subscription_fabricator.rb | 2 ++
spec/fabricators/web_setting_fabricator.rb | 2 ++
spec/fabricators/webauthn_credential_fabricator.rb | 2 ++
spec/fabricators/webhook_fabricator.rb | 2 ++
spec/helpers/accounts_helper_spec.rb | 2 ++
spec/helpers/admin/filter_helper_spec.rb | 2 ++
spec/helpers/application_helper_spec.rb | 2 ++
spec/helpers/home_helper_spec.rb | 2 ++
spec/helpers/statuses_helper_spec.rb | 2 ++
spec/lib/activitypub/activity/accept_spec.rb | 2 ++
spec/lib/activitypub/activity/add_spec.rb | 2 ++
spec/lib/activitypub/activity/announce_spec.rb | 2 ++
spec/lib/activitypub/activity/block_spec.rb | 2 ++
spec/lib/activitypub/activity/create_spec.rb | 2 ++
spec/lib/activitypub/activity/delete_spec.rb | 2 ++
spec/lib/activitypub/activity/flag_spec.rb | 2 ++
spec/lib/activitypub/activity/follow_spec.rb | 2 ++
spec/lib/activitypub/activity/like_spec.rb | 2 ++
spec/lib/activitypub/activity/move_spec.rb | 2 ++
spec/lib/activitypub/activity/reject_spec.rb | 2 ++
spec/lib/activitypub/activity/remove_spec.rb | 2 ++
spec/lib/activitypub/activity/undo_spec.rb | 2 ++
spec/lib/activitypub/activity/update_spec.rb | 2 ++
spec/lib/activitypub/adapter_spec.rb | 2 ++
spec/lib/activitypub/dereferencer_spec.rb | 2 ++
spec/lib/activitypub/linked_data_signature_spec.rb | 2 ++
spec/lib/activitypub/tag_manager_spec.rb | 2 ++
spec/lib/emoji_formatter_spec.rb | 2 ++
spec/lib/entity_cache_spec.rb | 2 ++
spec/lib/feed_manager_spec.rb | 2 ++
spec/lib/html_aware_formatter_spec.rb | 2 ++
spec/lib/link_details_extractor_spec.rb | 2 ++
spec/lib/plain_text_formatter_spec.rb | 2 ++
spec/lib/suspicious_sign_in_detector_spec.rb | 2 ++
spec/lib/tag_manager_spec.rb | 2 ++
spec/lib/text_formatter_spec.rb | 2 ++
spec/lib/vacuum/access_tokens_vacuum_spec.rb | 2 ++
spec/lib/vacuum/backups_vacuum_spec.rb | 2 ++
spec/lib/vacuum/feeds_vacuum_spec.rb | 2 ++
spec/lib/vacuum/media_attachments_vacuum_spec.rb | 2 ++
spec/lib/vacuum/preview_cards_vacuum_spec.rb | 2 ++
spec/lib/vacuum/statuses_vacuum_spec.rb | 2 ++
spec/lib/vacuum/system_keys_vacuum_spec.rb | 2 ++
spec/lib/webfinger_resource_spec.rb | 2 ++
spec/mailers/notification_mailer_spec.rb | 2 ++
spec/mailers/previews/admin_mailer_preview.rb | 2 ++
spec/mailers/previews/notification_mailer_preview.rb | 2 ++
spec/mailers/previews/user_mailer_preview.rb | 2 ++
spec/models/account/field_spec.rb | 2 ++
spec/models/account_alias_spec.rb | 2 ++
spec/models/account_conversation_spec.rb | 2 ++
spec/models/account_deletion_request_spec.rb | 2 ++
spec/models/account_domain_block_spec.rb | 2 ++
spec/models/account_filter_spec.rb | 2 ++
spec/models/account_migration_spec.rb | 2 ++
spec/models/account_moderation_note_spec.rb | 2 ++
spec/models/account_spec.rb | 2 ++
spec/models/account_statuses_cleanup_policy_spec.rb | 2 ++
spec/models/admin/account_action_spec.rb | 2 ++
spec/models/announcement_mute_spec.rb | 2 ++
spec/models/announcement_reaction_spec.rb | 2 ++
spec/models/announcement_spec.rb | 2 ++
spec/models/appeal_spec.rb | 2 ++
spec/models/backup_spec.rb | 2 ++
spec/models/block_spec.rb | 2 ++
spec/models/canonical_email_block_spec.rb | 2 ++
spec/models/concerns/account_counters_spec.rb | 2 ++
spec/models/concerns/account_interactions_spec.rb | 2 ++
spec/models/conversation_mute_spec.rb | 2 ++
spec/models/conversation_spec.rb | 2 ++
spec/models/custom_emoji_category_spec.rb | 2 ++
spec/models/custom_emoji_spec.rb | 2 ++
spec/models/custom_filter_keyword_spec.rb | 2 ++
spec/models/custom_filter_spec.rb | 2 ++
spec/models/device_spec.rb | 2 ++
spec/models/domain_allow_spec.rb | 2 ++
spec/models/domain_block_spec.rb | 2 ++
spec/models/email_domain_block_spec.rb | 2 ++
spec/models/encrypted_message_spec.rb | 2 ++
spec/models/export_spec.rb | 2 ++
spec/models/favourite_spec.rb | 2 ++
spec/models/featured_tag_spec.rb | 2 ++
spec/models/follow_recommendation_suppression_spec.rb | 2 ++
spec/models/follow_request_spec.rb | 2 ++
spec/models/follow_spec.rb | 2 ++
spec/models/home_feed_spec.rb | 2 ++
spec/models/identity_spec.rb | 2 ++
spec/models/import_spec.rb | 2 ++
spec/models/invite_spec.rb | 2 ++
spec/models/ip_block_spec.rb | 2 ++
spec/models/list_account_spec.rb | 2 ++
spec/models/list_spec.rb | 2 ++
spec/models/login_activity_spec.rb | 2 ++
spec/models/marker_spec.rb | 2 ++
spec/models/media_attachment_spec.rb | 2 ++
spec/models/mention_spec.rb | 2 ++
spec/models/mute_spec.rb | 2 ++
spec/models/notification_spec.rb | 2 ++
spec/models/one_time_key_spec.rb | 2 ++
spec/models/poll_spec.rb | 2 ++
spec/models/preview_card_spec.rb | 2 ++
spec/models/preview_card_trend_spec.rb | 2 ++
spec/models/public_feed_spec.rb | 2 ++
spec/models/relay_spec.rb | 2 ++
spec/models/report_filter_spec.rb | 2 ++
spec/models/report_spec.rb | 2 ++
spec/models/rule_spec.rb | 2 ++
spec/models/scheduled_status_spec.rb | 2 ++
spec/models/status_edit_spec.rb | 2 ++
spec/models/status_pin_spec.rb | 2 ++
spec/models/status_spec.rb | 2 ++
spec/models/status_stat_spec.rb | 2 ++
spec/models/status_trend_spec.rb | 2 ++
spec/models/system_key_spec.rb | 2 ++
spec/models/tag_feed_spec.rb | 2 ++
spec/models/tag_follow_spec.rb | 2 ++
spec/models/trends/statuses_spec.rb | 2 ++
spec/models/trends/tags_spec.rb | 2 ++
spec/models/unavailable_domain_spec.rb | 2 ++
spec/models/user_invite_request_spec.rb | 2 ++
spec/models/user_role_spec.rb | 2 ++
spec/models/user_spec.rb | 2 ++
spec/models/web/push_subscription_spec.rb | 2 ++
spec/models/web/setting_spec.rb | 2 ++
spec/models/webauthn_credentials_spec.rb | 2 ++
spec/models/webhook_spec.rb | 2 ++
spec/presenters/instance_presenter_spec.rb | 2 ++
spec/rails_helper.rb | 2 ++
spec/requests/catch_all_route_request_spec.rb | 2 ++
spec/requests/host_meta_request_spec.rb | 2 ++
spec/requests/webfinger_request_spec.rb | 2 ++
spec/routing/accounts_routing_spec.rb | 2 ++
spec/routing/well_known_routes_spec.rb | 2 ++
spec/services/account_search_service_spec.rb | 2 ++
spec/services/account_statuses_cleanup_service_spec.rb | 2 ++
spec/services/activitypub/fetch_featured_collection_service_spec.rb | 2 ++
.../services/activitypub/fetch_featured_tags_collection_service_spec.rb | 2 ++
spec/services/activitypub/fetch_remote_account_service_spec.rb | 2 ++
spec/services/activitypub/fetch_remote_actor_service_spec.rb | 2 ++
spec/services/activitypub/fetch_remote_key_service_spec.rb | 2 ++
spec/services/activitypub/fetch_remote_status_service_spec.rb | 2 ++
spec/services/activitypub/fetch_replies_service_spec.rb | 2 ++
spec/services/activitypub/process_account_service_spec.rb | 2 ++
spec/services/activitypub/process_collection_service_spec.rb | 2 ++
spec/services/activitypub/process_status_update_service_spec.rb | 2 ++
spec/services/activitypub/synchronize_followers_service_spec.rb | 2 ++
spec/services/after_block_domain_from_account_service_spec.rb | 2 ++
spec/services/after_block_service_spec.rb | 2 ++
spec/services/app_sign_up_service_spec.rb | 2 ++
spec/services/authorize_follow_service_spec.rb | 2 ++
spec/services/batched_remove_status_service_spec.rb | 2 ++
spec/services/block_domain_service_spec.rb | 2 ++
spec/services/block_service_spec.rb | 2 ++
spec/services/bootstrap_timeline_service_spec.rb | 2 ++
spec/services/clear_domain_media_service_spec.rb | 2 ++
spec/services/delete_account_service_spec.rb | 2 ++
spec/services/fan_out_on_write_service_spec.rb | 2 ++
spec/services/favourite_service_spec.rb | 2 ++
spec/services/fetch_link_card_service_spec.rb | 2 ++
spec/services/fetch_remote_status_service_spec.rb | 2 ++
spec/services/fetch_resource_service_spec.rb | 2 ++
spec/services/follow_service_spec.rb | 2 ++
spec/services/import_service_spec.rb | 2 ++
spec/services/mute_service_spec.rb | 2 ++
spec/services/notify_service_spec.rb | 2 ++
spec/services/post_status_service_spec.rb | 2 ++
spec/services/process_mentions_service_spec.rb | 2 ++
spec/services/purge_domain_service_spec.rb | 2 ++
spec/services/reblog_service_spec.rb | 2 ++
spec/services/reject_follow_service_spec.rb | 2 ++
spec/services/remove_from_follwers_service_spec.rb | 2 ++
spec/services/remove_status_service_spec.rb | 2 ++
spec/services/report_service_spec.rb | 2 ++
spec/services/resolve_account_service_spec.rb | 2 ++
spec/services/suspend_account_service_spec.rb | 2 ++
spec/services/unallow_domain_service_spec.rb | 2 ++
spec/services/unblock_service_spec.rb | 2 ++
spec/services/unfollow_service_spec.rb | 2 ++
spec/services/unmute_service_spec.rb | 2 ++
spec/services/unsuspend_account_service_spec.rb | 2 ++
spec/services/update_account_service_spec.rb | 2 ++
spec/services/update_status_service_spec.rb | 2 ++
spec/services/verify_link_service_spec.rb | 2 ++
spec/spec_helper.rb | 2 ++
spec/support/matchers/json/match_json_schema.rb | 2 ++
spec/support/matchers/model/model_have_error_on_field.rb | 2 ++
spec/workers/activitypub/distribute_poll_update_worker_spec.rb | 2 ++
spec/workers/activitypub/distribution_worker_spec.rb | 2 ++
spec/workers/activitypub/move_distribution_worker_spec.rb | 2 ++
spec/workers/activitypub/processing_worker_spec.rb | 2 ++
spec/workers/activitypub/status_update_distribution_worker_spec.rb | 2 ++
spec/workers/activitypub/update_distribution_worker_spec.rb | 2 ++
spec/workers/scheduler/accounts_statuses_cleanup_scheduler_spec.rb | 2 ++
spec/workers/scheduler/user_cleanup_scheduler_spec.rb | 2 ++
369 files changed, 738 insertions(+)
(limited to 'spec/lib')
diff --git a/spec/config/initializers/rack_attack_spec.rb b/spec/config/initializers/rack_attack_spec.rb
index 50d4505b7..2cfe90b1a 100644
--- a/spec/config/initializers/rack_attack_spec.rb
+++ b/spec/config/initializers/rack_attack_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe Rack::Attack do
diff --git a/spec/controllers/about_controller_spec.rb b/spec/controllers/about_controller_spec.rb
index 97143ec43..ccd28a96c 100644
--- a/spec/controllers/about_controller_spec.rb
+++ b/spec/controllers/about_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe AboutController, type: :controller do
diff --git a/spec/controllers/accounts_controller_spec.rb b/spec/controllers/accounts_controller_spec.rb
index db588156c..9c38b3032 100644
--- a/spec/controllers/accounts_controller_spec.rb
+++ b/spec/controllers/accounts_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe AccountsController, type: :controller do
diff --git a/spec/controllers/activitypub/followers_synchronizations_controller_spec.rb b/spec/controllers/activitypub/followers_synchronizations_controller_spec.rb
index 6ec756d3c..8357f5f39 100644
--- a/spec/controllers/activitypub/followers_synchronizations_controller_spec.rb
+++ b/spec/controllers/activitypub/followers_synchronizations_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe ActivityPub::FollowersSynchronizationsController, type: :controller do
diff --git a/spec/controllers/activitypub/outboxes_controller_spec.rb b/spec/controllers/activitypub/outboxes_controller_spec.rb
index 7369ee413..167bbcc21 100644
--- a/spec/controllers/activitypub/outboxes_controller_spec.rb
+++ b/spec/controllers/activitypub/outboxes_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe ActivityPub::OutboxesController, type: :controller do
diff --git a/spec/controllers/admin/account_moderation_notes_controller_spec.rb b/spec/controllers/admin/account_moderation_notes_controller_spec.rb
index b8d606322..d2c52f594 100644
--- a/spec/controllers/admin/account_moderation_notes_controller_spec.rb
+++ b/spec/controllers/admin/account_moderation_notes_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Admin::AccountModerationNotesController, type: :controller do
diff --git a/spec/controllers/admin/accounts_controller_spec.rb b/spec/controllers/admin/accounts_controller_spec.rb
index fdc98ed46..b182715b0 100644
--- a/spec/controllers/admin/accounts_controller_spec.rb
+++ b/spec/controllers/admin/accounts_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Admin::AccountsController, type: :controller do
diff --git a/spec/controllers/admin/change_email_controller_spec.rb b/spec/controllers/admin/change_email_controller_spec.rb
index 520842a19..832998471 100644
--- a/spec/controllers/admin/change_email_controller_spec.rb
+++ b/spec/controllers/admin/change_email_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Admin::ChangeEmailsController, type: :controller do
diff --git a/spec/controllers/admin/confirmations_controller_spec.rb b/spec/controllers/admin/confirmations_controller_spec.rb
index 7ca90f3e1..d05711e27 100644
--- a/spec/controllers/admin/confirmations_controller_spec.rb
+++ b/spec/controllers/admin/confirmations_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Admin::ConfirmationsController, type: :controller do
diff --git a/spec/controllers/admin/custom_emojis_controller_spec.rb b/spec/controllers/admin/custom_emojis_controller_spec.rb
index 06cd0c22d..d40691e1b 100644
--- a/spec/controllers/admin/custom_emojis_controller_spec.rb
+++ b/spec/controllers/admin/custom_emojis_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe Admin::CustomEmojisController do
diff --git a/spec/controllers/admin/disputes/appeals_controller_spec.rb b/spec/controllers/admin/disputes/appeals_controller_spec.rb
index 712657791..576a0c12b 100644
--- a/spec/controllers/admin/disputes/appeals_controller_spec.rb
+++ b/spec/controllers/admin/disputes/appeals_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Admin::Disputes::AppealsController, type: :controller do
diff --git a/spec/controllers/admin/domain_allows_controller_spec.rb b/spec/controllers/admin/domain_allows_controller_spec.rb
index 6c4e67787..2a0f47145 100644
--- a/spec/controllers/admin/domain_allows_controller_spec.rb
+++ b/spec/controllers/admin/domain_allows_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Admin::DomainAllowsController, type: :controller do
diff --git a/spec/controllers/admin/domain_blocks_controller_spec.rb b/spec/controllers/admin/domain_blocks_controller_spec.rb
index d58a0cafc..ef13f7676 100644
--- a/spec/controllers/admin/domain_blocks_controller_spec.rb
+++ b/spec/controllers/admin/domain_blocks_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Admin::DomainBlocksController, type: :controller do
diff --git a/spec/controllers/admin/export_domain_allows_controller_spec.rb b/spec/controllers/admin/export_domain_allows_controller_spec.rb
index 1f974bc00..f12bd1344 100644
--- a/spec/controllers/admin/export_domain_allows_controller_spec.rb
+++ b/spec/controllers/admin/export_domain_allows_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Admin::ExportDomainAllowsController, type: :controller do
diff --git a/spec/controllers/admin/export_domain_blocks_controller_spec.rb b/spec/controllers/admin/export_domain_blocks_controller_spec.rb
index a8d7b7383..4da9f90e4 100644
--- a/spec/controllers/admin/export_domain_blocks_controller_spec.rb
+++ b/spec/controllers/admin/export_domain_blocks_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Admin::ExportDomainBlocksController, type: :controller do
diff --git a/spec/controllers/admin/instances_controller_spec.rb b/spec/controllers/admin/instances_controller_spec.rb
index 4716e486a..33174b992 100644
--- a/spec/controllers/admin/instances_controller_spec.rb
+++ b/spec/controllers/admin/instances_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Admin::InstancesController, type: :controller do
diff --git a/spec/controllers/admin/report_notes_controller_spec.rb b/spec/controllers/admin/report_notes_controller_spec.rb
index 8a2603611..fb2fbd058 100644
--- a/spec/controllers/admin/report_notes_controller_spec.rb
+++ b/spec/controllers/admin/report_notes_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe Admin::ReportNotesController do
diff --git a/spec/controllers/admin/reports/actions_controller_spec.rb b/spec/controllers/admin/reports/actions_controller_spec.rb
index 20f85680f..3e42e4cb1 100644
--- a/spec/controllers/admin/reports/actions_controller_spec.rb
+++ b/spec/controllers/admin/reports/actions_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe Admin::Reports::ActionsController do
diff --git a/spec/controllers/admin/reports_controller_spec.rb b/spec/controllers/admin/reports_controller_spec.rb
index c6b5770a8..97daaf8da 100644
--- a/spec/controllers/admin/reports_controller_spec.rb
+++ b/spec/controllers/admin/reports_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe Admin::ReportsController do
diff --git a/spec/controllers/admin/resets_controller_spec.rb b/spec/controllers/admin/resets_controller_spec.rb
index 64fe027fd..16adb8a12 100644
--- a/spec/controllers/admin/resets_controller_spec.rb
+++ b/spec/controllers/admin/resets_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe Admin::ResetsController do
diff --git a/spec/controllers/admin/roles_controller_spec.rb b/spec/controllers/admin/roles_controller_spec.rb
index e2b1030d9..223d0a472 100644
--- a/spec/controllers/admin/roles_controller_spec.rb
+++ b/spec/controllers/admin/roles_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe Admin::RolesController do
diff --git a/spec/controllers/admin/statuses_controller_spec.rb b/spec/controllers/admin/statuses_controller_spec.rb
index 7f912c1c0..79d83db97 100644
--- a/spec/controllers/admin/statuses_controller_spec.rb
+++ b/spec/controllers/admin/statuses_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe Admin::StatusesController do
diff --git a/spec/controllers/admin/users/roles_controller.rb b/spec/controllers/admin/users/roles_controller.rb
index 9fa8aef41..fe2cee01b 100644
--- a/spec/controllers/admin/users/roles_controller.rb
+++ b/spec/controllers/admin/users/roles_controller.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe Admin::Users::RolesController do
diff --git a/spec/controllers/admin/users/two_factor_authentications_controller_spec.rb b/spec/controllers/admin/users/two_factor_authentications_controller_spec.rb
index 990dcf640..eb10d4796 100644
--- a/spec/controllers/admin/users/two_factor_authentications_controller_spec.rb
+++ b/spec/controllers/admin/users/two_factor_authentications_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
require 'webauthn/fake_client'
diff --git a/spec/controllers/api/oembed_controller_spec.rb b/spec/controllers/api/oembed_controller_spec.rb
index b9082bde1..930f36250 100644
--- a/spec/controllers/api/oembed_controller_spec.rb
+++ b/spec/controllers/api/oembed_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Api::OEmbedController, type: :controller do
diff --git a/spec/controllers/api/v1/accounts/credentials_controller_spec.rb b/spec/controllers/api/v1/accounts/credentials_controller_spec.rb
index 3494ca674..57fe0aee6 100644
--- a/spec/controllers/api/v1/accounts/credentials_controller_spec.rb
+++ b/spec/controllers/api/v1/accounts/credentials_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe Api::V1::Accounts::CredentialsController do
diff --git a/spec/controllers/api/v1/accounts/follower_accounts_controller_spec.rb b/spec/controllers/api/v1/accounts/follower_accounts_controller_spec.rb
index 1e6e1d8e0..53298a2e4 100644
--- a/spec/controllers/api/v1/accounts/follower_accounts_controller_spec.rb
+++ b/spec/controllers/api/v1/accounts/follower_accounts_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe Api::V1::Accounts::FollowerAccountsController do
diff --git a/spec/controllers/api/v1/accounts/following_accounts_controller_spec.rb b/spec/controllers/api/v1/accounts/following_accounts_controller_spec.rb
index cc962c6ee..7390b25b5 100644
--- a/spec/controllers/api/v1/accounts/following_accounts_controller_spec.rb
+++ b/spec/controllers/api/v1/accounts/following_accounts_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe Api::V1::Accounts::FollowingAccountsController do
diff --git a/spec/controllers/api/v1/accounts/lists_controller_spec.rb b/spec/controllers/api/v1/accounts/lists_controller_spec.rb
index d71485633..418839cfa 100644
--- a/spec/controllers/api/v1/accounts/lists_controller_spec.rb
+++ b/spec/controllers/api/v1/accounts/lists_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe Api::V1::Accounts::ListsController do
diff --git a/spec/controllers/api/v1/accounts/notes_controller_spec.rb b/spec/controllers/api/v1/accounts/notes_controller_spec.rb
index 42c2d8a86..fd4d34f69 100644
--- a/spec/controllers/api/v1/accounts/notes_controller_spec.rb
+++ b/spec/controllers/api/v1/accounts/notes_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe Api::V1::Accounts::NotesController do
diff --git a/spec/controllers/api/v1/accounts/relationships_controller_spec.rb b/spec/controllers/api/v1/accounts/relationships_controller_spec.rb
index 69ad0d061..da8d7fe3f 100644
--- a/spec/controllers/api/v1/accounts/relationships_controller_spec.rb
+++ b/spec/controllers/api/v1/accounts/relationships_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe Api::V1::Accounts::RelationshipsController do
diff --git a/spec/controllers/api/v1/accounts/search_controller_spec.rb b/spec/controllers/api/v1/accounts/search_controller_spec.rb
index 5b23bff68..d2b675a3c 100644
--- a/spec/controllers/api/v1/accounts/search_controller_spec.rb
+++ b/spec/controllers/api/v1/accounts/search_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Api::V1::Accounts::SearchController, type: :controller do
diff --git a/spec/controllers/api/v1/accounts_controller_spec.rb b/spec/controllers/api/v1/accounts_controller_spec.rb
index d6bbcefd7..5fbb65021 100644
--- a/spec/controllers/api/v1/accounts_controller_spec.rb
+++ b/spec/controllers/api/v1/accounts_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Api::V1::AccountsController, type: :controller do
diff --git a/spec/controllers/api/v1/admin/account_actions_controller_spec.rb b/spec/controllers/api/v1/admin/account_actions_controller_spec.rb
index 462c2cfa9..cafbee212 100644
--- a/spec/controllers/api/v1/admin/account_actions_controller_spec.rb
+++ b/spec/controllers/api/v1/admin/account_actions_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Api::V1::Admin::AccountActionsController, type: :controller do
diff --git a/spec/controllers/api/v1/admin/accounts_controller_spec.rb b/spec/controllers/api/v1/admin/accounts_controller_spec.rb
index a4c509c60..9ffcdb34f 100644
--- a/spec/controllers/api/v1/admin/accounts_controller_spec.rb
+++ b/spec/controllers/api/v1/admin/accounts_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Api::V1::Admin::AccountsController, type: :controller do
diff --git a/spec/controllers/api/v1/admin/domain_allows_controller_spec.rb b/spec/controllers/api/v1/admin/domain_allows_controller_spec.rb
index 8100363f6..15567907e 100644
--- a/spec/controllers/api/v1/admin/domain_allows_controller_spec.rb
+++ b/spec/controllers/api/v1/admin/domain_allows_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Api::V1::Admin::DomainAllowsController, type: :controller do
diff --git a/spec/controllers/api/v1/admin/domain_blocks_controller_spec.rb b/spec/controllers/api/v1/admin/domain_blocks_controller_spec.rb
index b367ab9ce..0460c701a 100644
--- a/spec/controllers/api/v1/admin/domain_blocks_controller_spec.rb
+++ b/spec/controllers/api/v1/admin/domain_blocks_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Api::V1::Admin::DomainBlocksController, type: :controller do
diff --git a/spec/controllers/api/v1/admin/reports_controller_spec.rb b/spec/controllers/api/v1/admin/reports_controller_spec.rb
index 880e72030..3d61fe5c3 100644
--- a/spec/controllers/api/v1/admin/reports_controller_spec.rb
+++ b/spec/controllers/api/v1/admin/reports_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Api::V1::Admin::ReportsController, type: :controller do
diff --git a/spec/controllers/api/v1/apps/credentials_controller_spec.rb b/spec/controllers/api/v1/apps/credentials_controller_spec.rb
index 701ba8acb..350e0c7a0 100644
--- a/spec/controllers/api/v1/apps/credentials_controller_spec.rb
+++ b/spec/controllers/api/v1/apps/credentials_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe Api::V1::Apps::CredentialsController do
diff --git a/spec/controllers/api/v1/apps_controller_spec.rb b/spec/controllers/api/v1/apps_controller_spec.rb
index 61158e881..bde132c52 100644
--- a/spec/controllers/api/v1/apps_controller_spec.rb
+++ b/spec/controllers/api/v1/apps_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Api::V1::AppsController, type: :controller do
diff --git a/spec/controllers/api/v1/blocks_controller_spec.rb b/spec/controllers/api/v1/blocks_controller_spec.rb
index cf996c47c..a746389ca 100644
--- a/spec/controllers/api/v1/blocks_controller_spec.rb
+++ b/spec/controllers/api/v1/blocks_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Api::V1::BlocksController, type: :controller do
diff --git a/spec/controllers/api/v1/bookmarks_controller_spec.rb b/spec/controllers/api/v1/bookmarks_controller_spec.rb
index 48332b15a..352d2ca02 100644
--- a/spec/controllers/api/v1/bookmarks_controller_spec.rb
+++ b/spec/controllers/api/v1/bookmarks_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Api::V1::BookmarksController, type: :controller do
diff --git a/spec/controllers/api/v1/conversations_controller_spec.rb b/spec/controllers/api/v1/conversations_controller_spec.rb
index 5add7cf1d..36c4cb56f 100644
--- a/spec/controllers/api/v1/conversations_controller_spec.rb
+++ b/spec/controllers/api/v1/conversations_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Api::V1::ConversationsController, type: :controller do
diff --git a/spec/controllers/api/v1/domain_blocks_controller_spec.rb b/spec/controllers/api/v1/domain_blocks_controller_spec.rb
index d9dc1bdbf..467ddbccc 100644
--- a/spec/controllers/api/v1/domain_blocks_controller_spec.rb
+++ b/spec/controllers/api/v1/domain_blocks_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Api::V1::DomainBlocksController, type: :controller do
diff --git a/spec/controllers/api/v1/emails/confirmations_controller_spec.rb b/spec/controllers/api/v1/emails/confirmations_controller_spec.rb
index d272ff38d..fc9843fef 100644
--- a/spec/controllers/api/v1/emails/confirmations_controller_spec.rb
+++ b/spec/controllers/api/v1/emails/confirmations_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Api::V1::Emails::ConfirmationsController, type: :controller do
diff --git a/spec/controllers/api/v1/favourites_controller_spec.rb b/spec/controllers/api/v1/favourites_controller_spec.rb
index f0fb8f37b..6ae0fdc49 100644
--- a/spec/controllers/api/v1/favourites_controller_spec.rb
+++ b/spec/controllers/api/v1/favourites_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Api::V1::FavouritesController, type: :controller do
diff --git a/spec/controllers/api/v1/filters_controller_spec.rb b/spec/controllers/api/v1/filters_controller_spec.rb
index 8acb46a00..d583365cc 100644
--- a/spec/controllers/api/v1/filters_controller_spec.rb
+++ b/spec/controllers/api/v1/filters_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Api::V1::FiltersController, type: :controller do
diff --git a/spec/controllers/api/v1/follow_requests_controller_spec.rb b/spec/controllers/api/v1/follow_requests_controller_spec.rb
index 856ba2a1c..0220e0277 100644
--- a/spec/controllers/api/v1/follow_requests_controller_spec.rb
+++ b/spec/controllers/api/v1/follow_requests_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Api::V1::FollowRequestsController, type: :controller do
diff --git a/spec/controllers/api/v1/followed_tags_controller_spec.rb b/spec/controllers/api/v1/followed_tags_controller_spec.rb
index 2191350ef..e990065a9 100644
--- a/spec/controllers/api/v1/followed_tags_controller_spec.rb
+++ b/spec/controllers/api/v1/followed_tags_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Api::V1::FollowedTagsController, type: :controller do
diff --git a/spec/controllers/api/v1/lists/accounts_controller_spec.rb b/spec/controllers/api/v1/lists/accounts_controller_spec.rb
index 526d8b561..337a5645c 100644
--- a/spec/controllers/api/v1/lists/accounts_controller_spec.rb
+++ b/spec/controllers/api/v1/lists/accounts_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe Api::V1::Lists::AccountsController do
diff --git a/spec/controllers/api/v1/lists_controller_spec.rb b/spec/controllers/api/v1/lists_controller_spec.rb
index 71a8094e6..f54d27e42 100644
--- a/spec/controllers/api/v1/lists_controller_spec.rb
+++ b/spec/controllers/api/v1/lists_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Api::V1::ListsController, type: :controller do
diff --git a/spec/controllers/api/v1/markers_controller_spec.rb b/spec/controllers/api/v1/markers_controller_spec.rb
index 64ec18e59..fb5f59a7c 100644
--- a/spec/controllers/api/v1/markers_controller_spec.rb
+++ b/spec/controllers/api/v1/markers_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Api::V1::MarkersController, type: :controller do
diff --git a/spec/controllers/api/v1/media_controller_spec.rb b/spec/controllers/api/v1/media_controller_spec.rb
index ef1e439f9..90379dd92 100644
--- a/spec/controllers/api/v1/media_controller_spec.rb
+++ b/spec/controllers/api/v1/media_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Api::V1::MediaController, type: :controller do
diff --git a/spec/controllers/api/v1/mutes_controller_spec.rb b/spec/controllers/api/v1/mutes_controller_spec.rb
index 8288cb815..122d9d1c5 100644
--- a/spec/controllers/api/v1/mutes_controller_spec.rb
+++ b/spec/controllers/api/v1/mutes_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Api::V1::MutesController, type: :controller do
diff --git a/spec/controllers/api/v1/notifications_controller_spec.rb b/spec/controllers/api/v1/notifications_controller_spec.rb
index 22ebfa3dd..f6cbd105e 100644
--- a/spec/controllers/api/v1/notifications_controller_spec.rb
+++ b/spec/controllers/api/v1/notifications_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Api::V1::NotificationsController, type: :controller do
diff --git a/spec/controllers/api/v1/polls/votes_controller_spec.rb b/spec/controllers/api/v1/polls/votes_controller_spec.rb
index d7a9c1970..9d9b14e81 100644
--- a/spec/controllers/api/v1/polls/votes_controller_spec.rb
+++ b/spec/controllers/api/v1/polls/votes_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Api::V1::Polls::VotesController, type: :controller do
diff --git a/spec/controllers/api/v1/polls_controller_spec.rb b/spec/controllers/api/v1/polls_controller_spec.rb
index f0d9eaf92..0602e44ee 100644
--- a/spec/controllers/api/v1/polls_controller_spec.rb
+++ b/spec/controllers/api/v1/polls_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Api::V1::PollsController, type: :controller do
diff --git a/spec/controllers/api/v1/statuses/favourited_by_accounts_controller_spec.rb b/spec/controllers/api/v1/statuses/favourited_by_accounts_controller_spec.rb
index c1c6f5f12..c7e1b73c7 100644
--- a/spec/controllers/api/v1/statuses/favourited_by_accounts_controller_spec.rb
+++ b/spec/controllers/api/v1/statuses/favourited_by_accounts_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Api::V1::Statuses::FavouritedByAccountsController, type: :controller do
diff --git a/spec/controllers/api/v1/statuses/reblogged_by_accounts_controller_spec.rb b/spec/controllers/api/v1/statuses/reblogged_by_accounts_controller_spec.rb
index 90187a585..1aab502ef 100644
--- a/spec/controllers/api/v1/statuses/reblogged_by_accounts_controller_spec.rb
+++ b/spec/controllers/api/v1/statuses/reblogged_by_accounts_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Api::V1::Statuses::RebloggedByAccountsController, type: :controller do
diff --git a/spec/controllers/api/v1/statuses_controller_spec.rb b/spec/controllers/api/v1/statuses_controller_spec.rb
index e839c8494..f011bfd47 100644
--- a/spec/controllers/api/v1/statuses_controller_spec.rb
+++ b/spec/controllers/api/v1/statuses_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Api::V1::StatusesController, type: :controller do
diff --git a/spec/controllers/api/v1/suggestions_controller_spec.rb b/spec/controllers/api/v1/suggestions_controller_spec.rb
index 35ba155e7..c99380c58 100644
--- a/spec/controllers/api/v1/suggestions_controller_spec.rb
+++ b/spec/controllers/api/v1/suggestions_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Api::V1::SuggestionsController, type: :controller do
diff --git a/spec/controllers/api/v1/tags_controller_spec.rb b/spec/controllers/api/v1/tags_controller_spec.rb
index 216faad87..ed17a4fbf 100644
--- a/spec/controllers/api/v1/tags_controller_spec.rb
+++ b/spec/controllers/api/v1/tags_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Api::V1::TagsController, type: :controller do
diff --git a/spec/controllers/api/v2/admin/accounts_controller_spec.rb b/spec/controllers/api/v2/admin/accounts_controller_spec.rb
index 1477049a1..5766fd549 100644
--- a/spec/controllers/api/v2/admin/accounts_controller_spec.rb
+++ b/spec/controllers/api/v2/admin/accounts_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Api::V2::Admin::AccountsController, type: :controller do
diff --git a/spec/controllers/api/v2/filters/keywords_controller_spec.rb b/spec/controllers/api/v2/filters/keywords_controller_spec.rb
index 0e0f52ea8..8c61059c6 100644
--- a/spec/controllers/api/v2/filters/keywords_controller_spec.rb
+++ b/spec/controllers/api/v2/filters/keywords_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Api::V2::Filters::KeywordsController, type: :controller do
diff --git a/spec/controllers/api/v2/filters/statuses_controller_spec.rb b/spec/controllers/api/v2/filters/statuses_controller_spec.rb
index 969b2ea73..330cf45a6 100644
--- a/spec/controllers/api/v2/filters/statuses_controller_spec.rb
+++ b/spec/controllers/api/v2/filters/statuses_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Api::V2::Filters::StatusesController, type: :controller do
diff --git a/spec/controllers/api/v2/filters_controller_spec.rb b/spec/controllers/api/v2/filters_controller_spec.rb
index cc0070d57..2b5610a4d 100644
--- a/spec/controllers/api/v2/filters_controller_spec.rb
+++ b/spec/controllers/api/v2/filters_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Api::V2::FiltersController, type: :controller do
diff --git a/spec/controllers/auth/registrations_controller_spec.rb b/spec/controllers/auth/registrations_controller_spec.rb
index f42f685c1..e3a00fa39 100644
--- a/spec/controllers/auth/registrations_controller_spec.rb
+++ b/spec/controllers/auth/registrations_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Auth::RegistrationsController, type: :controller do
diff --git a/spec/controllers/disputes/appeals_controller_spec.rb b/spec/controllers/disputes/appeals_controller_spec.rb
index 90f222f49..affe63c59 100644
--- a/spec/controllers/disputes/appeals_controller_spec.rb
+++ b/spec/controllers/disputes/appeals_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Disputes::AppealsController, type: :controller do
diff --git a/spec/controllers/disputes/strikes_controller_spec.rb b/spec/controllers/disputes/strikes_controller_spec.rb
index e060d37ac..1d678875c 100644
--- a/spec/controllers/disputes/strikes_controller_spec.rb
+++ b/spec/controllers/disputes/strikes_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Disputes::StrikesController, type: :controller do
diff --git a/spec/controllers/emojis_controller_spec.rb b/spec/controllers/emojis_controller_spec.rb
index 9f6604964..710d23d92 100644
--- a/spec/controllers/emojis_controller_spec.rb
+++ b/spec/controllers/emojis_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe EmojisController do
diff --git a/spec/controllers/follower_accounts_controller_spec.rb b/spec/controllers/follower_accounts_controller_spec.rb
index 43fc4203c..7c53e5b47 100644
--- a/spec/controllers/follower_accounts_controller_spec.rb
+++ b/spec/controllers/follower_accounts_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe FollowerAccountsController do
diff --git a/spec/controllers/following_accounts_controller_spec.rb b/spec/controllers/following_accounts_controller_spec.rb
index b41bf0575..122f72e2d 100644
--- a/spec/controllers/following_accounts_controller_spec.rb
+++ b/spec/controllers/following_accounts_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe FollowingAccountsController do
diff --git a/spec/controllers/home_controller_spec.rb b/spec/controllers/home_controller_spec.rb
index 2409bf42c..0d3722920 100644
--- a/spec/controllers/home_controller_spec.rb
+++ b/spec/controllers/home_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe HomeController, type: :controller do
diff --git a/spec/controllers/instance_actors_controller_spec.rb b/spec/controllers/instance_actors_controller_spec.rb
index d6b4c793b..84a07d497 100644
--- a/spec/controllers/instance_actors_controller_spec.rb
+++ b/spec/controllers/instance_actors_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe InstanceActorsController, type: :controller do
diff --git a/spec/controllers/intents_controller_spec.rb b/spec/controllers/intents_controller_spec.rb
index 394f7d512..02b46ddc7 100644
--- a/spec/controllers/intents_controller_spec.rb
+++ b/spec/controllers/intents_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe IntentsController, type: :controller do
diff --git a/spec/controllers/invites_controller_spec.rb b/spec/controllers/invites_controller_spec.rb
index 23b98fb12..408c5e1b5 100644
--- a/spec/controllers/invites_controller_spec.rb
+++ b/spec/controllers/invites_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe InvitesController do
diff --git a/spec/controllers/manifests_controller_spec.rb b/spec/controllers/manifests_controller_spec.rb
index a549adef3..ecd6957fc 100644
--- a/spec/controllers/manifests_controller_spec.rb
+++ b/spec/controllers/manifests_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe ManifestsController do
diff --git a/spec/controllers/relationships_controller_spec.rb b/spec/controllers/relationships_controller_spec.rb
index 4c4227d66..39f455e03 100644
--- a/spec/controllers/relationships_controller_spec.rb
+++ b/spec/controllers/relationships_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe RelationshipsController do
diff --git a/spec/controllers/settings/applications_controller_spec.rb b/spec/controllers/settings/applications_controller_spec.rb
index a653b87c7..5c6b04a15 100644
--- a/spec/controllers/settings/applications_controller_spec.rb
+++ b/spec/controllers/settings/applications_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe Settings::ApplicationsController do
diff --git a/spec/controllers/settings/deletes_controller_spec.rb b/spec/controllers/settings/deletes_controller_spec.rb
index a94dc042a..a7edac6a9 100644
--- a/spec/controllers/settings/deletes_controller_spec.rb
+++ b/spec/controllers/settings/deletes_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe Settings::DeletesController do
diff --git a/spec/controllers/settings/exports/blocked_accounts_controller_spec.rb b/spec/controllers/settings/exports/blocked_accounts_controller_spec.rb
index 5ff41b7fc..459b278d6 100644
--- a/spec/controllers/settings/exports/blocked_accounts_controller_spec.rb
+++ b/spec/controllers/settings/exports/blocked_accounts_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe Settings::Exports::BlockedAccountsController do
diff --git a/spec/controllers/settings/exports/bookmarks_controller_spec.rb b/spec/controllers/settings/exports/bookmarks_controller_spec.rb
index a06c02e0c..9982eff16 100644
--- a/spec/controllers/settings/exports/bookmarks_controller_spec.rb
+++ b/spec/controllers/settings/exports/bookmarks_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe Settings::Exports::BookmarksController do
diff --git a/spec/controllers/settings/exports/following_accounts_controller_spec.rb b/spec/controllers/settings/exports/following_accounts_controller_spec.rb
index bfe010555..72b0b94e1 100644
--- a/spec/controllers/settings/exports/following_accounts_controller_spec.rb
+++ b/spec/controllers/settings/exports/following_accounts_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe Settings::Exports::FollowingAccountsController do
diff --git a/spec/controllers/settings/exports/muted_accounts_controller_spec.rb b/spec/controllers/settings/exports/muted_accounts_controller_spec.rb
index 642f0a9b8..b4170cb16 100644
--- a/spec/controllers/settings/exports/muted_accounts_controller_spec.rb
+++ b/spec/controllers/settings/exports/muted_accounts_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe Settings::Exports::MutedAccountsController do
diff --git a/spec/controllers/settings/featured_tags_controller_spec.rb b/spec/controllers/settings/featured_tags_controller_spec.rb
index fc338672d..5c61351af 100644
--- a/spec/controllers/settings/featured_tags_controller_spec.rb
+++ b/spec/controllers/settings/featured_tags_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe Settings::FeaturedTagsController do
diff --git a/spec/controllers/settings/imports_controller_spec.rb b/spec/controllers/settings/imports_controller_spec.rb
index e50504cc5..78973df2b 100644
--- a/spec/controllers/settings/imports_controller_spec.rb
+++ b/spec/controllers/settings/imports_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Settings::ImportsController, type: :controller do
diff --git a/spec/controllers/settings/migrations_controller_spec.rb b/spec/controllers/settings/migrations_controller_spec.rb
index 8159bb21b..9b12bc40f 100644
--- a/spec/controllers/settings/migrations_controller_spec.rb
+++ b/spec/controllers/settings/migrations_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe Settings::MigrationsController do
diff --git a/spec/controllers/settings/preferences/notifications_controller_spec.rb b/spec/controllers/settings/preferences/notifications_controller_spec.rb
index a821052ed..66fb8c5eb 100644
--- a/spec/controllers/settings/preferences/notifications_controller_spec.rb
+++ b/spec/controllers/settings/preferences/notifications_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe Settings::Preferences::NotificationsController do
diff --git a/spec/controllers/settings/preferences/other_controller_spec.rb b/spec/controllers/settings/preferences/other_controller_spec.rb
index ffb37e0bd..63eeefaf0 100644
--- a/spec/controllers/settings/preferences/other_controller_spec.rb
+++ b/spec/controllers/settings/preferences/other_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe Settings::Preferences::OtherController do
diff --git a/spec/controllers/settings/profiles_controller_spec.rb b/spec/controllers/settings/profiles_controller_spec.rb
index c7a6ad664..e45596b1a 100644
--- a/spec/controllers/settings/profiles_controller_spec.rb
+++ b/spec/controllers/settings/profiles_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Settings::ProfilesController, type: :controller do
diff --git a/spec/controllers/settings/sessions_controller_spec.rb b/spec/controllers/settings/sessions_controller_spec.rb
index fdf46d947..a4248e1bd 100644
--- a/spec/controllers/settings/sessions_controller_spec.rb
+++ b/spec/controllers/settings/sessions_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe Settings::SessionsController do
diff --git a/spec/controllers/shares_controller_spec.rb b/spec/controllers/shares_controller_spec.rb
index 0fde8c692..6d5bb4f8d 100644
--- a/spec/controllers/shares_controller_spec.rb
+++ b/spec/controllers/shares_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe SharesController do
diff --git a/spec/controllers/statuses_cleanup_controller_spec.rb b/spec/controllers/statuses_cleanup_controller_spec.rb
index 24b4ea7b6..969778bbf 100644
--- a/spec/controllers/statuses_cleanup_controller_spec.rb
+++ b/spec/controllers/statuses_cleanup_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe StatusesCleanupController, type: :controller do
diff --git a/spec/controllers/tags_controller_spec.rb b/spec/controllers/tags_controller_spec.rb
index 547bcfb39..8a3fa0bf8 100644
--- a/spec/controllers/tags_controller_spec.rb
+++ b/spec/controllers/tags_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe TagsController, type: :controller do
diff --git a/spec/controllers/well_known/host_meta_controller_spec.rb b/spec/controllers/well_known/host_meta_controller_spec.rb
index 654bad406..d53704370 100644
--- a/spec/controllers/well_known/host_meta_controller_spec.rb
+++ b/spec/controllers/well_known/host_meta_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe WellKnown::HostMetaController, type: :controller do
diff --git a/spec/controllers/well_known/nodeinfo_controller_spec.rb b/spec/controllers/well_known/nodeinfo_controller_spec.rb
index 0cadc5435..f5cde150d 100644
--- a/spec/controllers/well_known/nodeinfo_controller_spec.rb
+++ b/spec/controllers/well_known/nodeinfo_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe WellKnown::NodeInfoController, type: :controller do
diff --git a/spec/controllers/well_known/webfinger_controller_spec.rb b/spec/controllers/well_known/webfinger_controller_spec.rb
index 1ccfb218e..00103df70 100644
--- a/spec/controllers/well_known/webfinger_controller_spec.rb
+++ b/spec/controllers/well_known/webfinger_controller_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe WellKnown::WebfingerController, type: :controller do
diff --git a/spec/fabricators/access_grant_fabricator.rb b/spec/fabricators/access_grant_fabricator.rb
index ae1945f2b..adc2b8369 100644
--- a/spec/fabricators/access_grant_fabricator.rb
+++ b/spec/fabricators/access_grant_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator :access_grant, from: 'Doorkeeper::AccessGrant' do
application
resource_owner_id { Fabricate(:user).id }
diff --git a/spec/fabricators/access_token_fabricator.rb b/spec/fabricators/access_token_fabricator.rb
index 1856a8eb3..508c32808 100644
--- a/spec/fabricators/access_token_fabricator.rb
+++ b/spec/fabricators/access_token_fabricator.rb
@@ -1,2 +1,4 @@
+# frozen_string_literal: true
+
Fabricator :access_token, from: 'Doorkeeper::AccessToken' do
end
diff --git a/spec/fabricators/accessible_access_token_fabricator.rb b/spec/fabricators/accessible_access_token_fabricator.rb
index 4b7e99b20..fb3d0889b 100644
--- a/spec/fabricators/accessible_access_token_fabricator.rb
+++ b/spec/fabricators/accessible_access_token_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator :accessible_access_token, from: :access_token do
expires_in { nil }
revoked_at { nil }
diff --git a/spec/fabricators/account_alias_fabricator.rb b/spec/fabricators/account_alias_fabricator.rb
index 94dde9bb8..4f434c078 100644
--- a/spec/fabricators/account_alias_fabricator.rb
+++ b/spec/fabricators/account_alias_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:account_alias) do
account
acct 'test@example.com'
diff --git a/spec/fabricators/account_deletion_request_fabricator.rb b/spec/fabricators/account_deletion_request_fabricator.rb
index 08a82ba3c..3d3d37398 100644
--- a/spec/fabricators/account_deletion_request_fabricator.rb
+++ b/spec/fabricators/account_deletion_request_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:account_deletion_request) do
account
end
diff --git a/spec/fabricators/account_domain_block_fabricator.rb b/spec/fabricators/account_domain_block_fabricator.rb
index 2ad4b67a9..ff85e17f3 100644
--- a/spec/fabricators/account_domain_block_fabricator.rb
+++ b/spec/fabricators/account_domain_block_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:account_domain_block) do
account
domain 'example.com'
diff --git a/spec/fabricators/account_fabricator.rb b/spec/fabricators/account_fabricator.rb
index 205706532..6ffbba584 100644
--- a/spec/fabricators/account_fabricator.rb
+++ b/spec/fabricators/account_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
keypair = OpenSSL::PKey::RSA.new(2048)
public_key = keypair.public_key.to_pem
private_key = keypair.to_pem
diff --git a/spec/fabricators/account_migration_fabricator.rb b/spec/fabricators/account_migration_fabricator.rb
index 2a8e747a8..fd453f6d2 100644
--- a/spec/fabricators/account_migration_fabricator.rb
+++ b/spec/fabricators/account_migration_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:account_migration) do
account
target_account { |attrs| Fabricate(:account, also_known_as: [ActivityPub::TagManager.instance.uri_for(attrs[:account])]) }
diff --git a/spec/fabricators/account_moderation_note_fabricator.rb b/spec/fabricators/account_moderation_note_fabricator.rb
index 343a41fb1..403870db6 100644
--- a/spec/fabricators/account_moderation_note_fabricator.rb
+++ b/spec/fabricators/account_moderation_note_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:account_moderation_note) do
content 'MyText'
account nil
diff --git a/spec/fabricators/account_note_fabricator.rb b/spec/fabricators/account_note_fabricator.rb
index 285703b38..bb4ed8b24 100644
--- a/spec/fabricators/account_note_fabricator.rb
+++ b/spec/fabricators/account_note_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:account_note) do
account
target_account { Fabricate(:account) }
diff --git a/spec/fabricators/account_pin_fabricator.rb b/spec/fabricators/account_pin_fabricator.rb
index c0f8b8afb..7d8a77bb5 100644
--- a/spec/fabricators/account_pin_fabricator.rb
+++ b/spec/fabricators/account_pin_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:account_pin) do
account nil
target_account nil
diff --git a/spec/fabricators/account_stat_fabricator.rb b/spec/fabricators/account_stat_fabricator.rb
index b1b47ffef..45b1524ef 100644
--- a/spec/fabricators/account_stat_fabricator.rb
+++ b/spec/fabricators/account_stat_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:account_stat) do
account nil
statuses_count ''
diff --git a/spec/fabricators/account_statuses_cleanup_policy_fabricator.rb b/spec/fabricators/account_statuses_cleanup_policy_fabricator.rb
index 29cf1d133..0e756ddba 100644
--- a/spec/fabricators/account_statuses_cleanup_policy_fabricator.rb
+++ b/spec/fabricators/account_statuses_cleanup_policy_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:account_statuses_cleanup_policy) do
account
end
diff --git a/spec/fabricators/account_tag_stat_fabricator.rb b/spec/fabricators/account_tag_stat_fabricator.rb
index 7a4de07f6..769015bd0 100644
--- a/spec/fabricators/account_tag_stat_fabricator.rb
+++ b/spec/fabricators/account_tag_stat_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:account_tag_stat) do
accounts_count ''
end
diff --git a/spec/fabricators/account_warning_fabricator.rb b/spec/fabricators/account_warning_fabricator.rb
index 72fe835d9..e5059e37f 100644
--- a/spec/fabricators/account_warning_fabricator.rb
+++ b/spec/fabricators/account_warning_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:account_warning) do
account
target_account(fabricator: :account)
diff --git a/spec/fabricators/account_warning_preset_fabricator.rb b/spec/fabricators/account_warning_preset_fabricator.rb
index 7e7c03cb8..7588e7f9c 100644
--- a/spec/fabricators/account_warning_preset_fabricator.rb
+++ b/spec/fabricators/account_warning_preset_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:account_warning_preset) do
text 'MyText'
end
diff --git a/spec/fabricators/admin_action_log_fabricator.rb b/spec/fabricators/admin_action_log_fabricator.rb
index 474bef1bc..eb738c01c 100644
--- a/spec/fabricators/admin_action_log_fabricator.rb
+++ b/spec/fabricators/admin_action_log_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator('Admin::ActionLog') do
account nil
action 'MyString'
diff --git a/spec/fabricators/announcement_fabricator.rb b/spec/fabricators/announcement_fabricator.rb
index 5a3871d90..5d7736587 100644
--- a/spec/fabricators/announcement_fabricator.rb
+++ b/spec/fabricators/announcement_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:announcement) do
text { Faker::Lorem.paragraph(sentence_count: 2) }
published true
diff --git a/spec/fabricators/announcement_mute_fabricator.rb b/spec/fabricators/announcement_mute_fabricator.rb
index c4eafe8f4..109fec041 100644
--- a/spec/fabricators/announcement_mute_fabricator.rb
+++ b/spec/fabricators/announcement_mute_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:announcement_mute) do
account
announcement
diff --git a/spec/fabricators/announcement_reaction_fabricator.rb b/spec/fabricators/announcement_reaction_fabricator.rb
index f923c59c6..5da51caaa 100644
--- a/spec/fabricators/announcement_reaction_fabricator.rb
+++ b/spec/fabricators/announcement_reaction_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:announcement_reaction) do
account
announcement
diff --git a/spec/fabricators/appeal_fabricator.rb b/spec/fabricators/appeal_fabricator.rb
index 339363822..039086c4e 100644
--- a/spec/fabricators/appeal_fabricator.rb
+++ b/spec/fabricators/appeal_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:appeal) do
strike(fabricator: :account_warning)
account { |attrs| attrs[:strike].target_account }
diff --git a/spec/fabricators/application_fabricator.rb b/spec/fabricators/application_fabricator.rb
index 42b7009dc..272821304 100644
--- a/spec/fabricators/application_fabricator.rb
+++ b/spec/fabricators/application_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:application, from: Doorkeeper::Application) do
name 'Example'
website 'http://example.com'
diff --git a/spec/fabricators/backup_fabricator.rb b/spec/fabricators/backup_fabricator.rb
index 99a5bdcda..c73ae54be 100644
--- a/spec/fabricators/backup_fabricator.rb
+++ b/spec/fabricators/backup_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:backup) do
user
end
diff --git a/spec/fabricators/block_fabricator.rb b/spec/fabricators/block_fabricator.rb
index 379931ba6..c2e9e9628 100644
--- a/spec/fabricators/block_fabricator.rb
+++ b/spec/fabricators/block_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:block) do
account
target_account { Fabricate(:account) }
diff --git a/spec/fabricators/bookmark_fabricator.rb b/spec/fabricators/bookmark_fabricator.rb
index 12cbc5bfa..e21046fc2 100644
--- a/spec/fabricators/bookmark_fabricator.rb
+++ b/spec/fabricators/bookmark_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:bookmark) do
account
status
diff --git a/spec/fabricators/canonical_email_block_fabricator.rb b/spec/fabricators/canonical_email_block_fabricator.rb
index 61afde3de..21d7c2402 100644
--- a/spec/fabricators/canonical_email_block_fabricator.rb
+++ b/spec/fabricators/canonical_email_block_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:canonical_email_block) do
email 'test@example.com'
reference_account { Fabricate(:account) }
diff --git a/spec/fabricators/conversation_account_fabricator.rb b/spec/fabricators/conversation_account_fabricator.rb
index 0fe7a494e..f69d36855 100644
--- a/spec/fabricators/conversation_account_fabricator.rb
+++ b/spec/fabricators/conversation_account_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:conversation_account) do
account nil
conversation nil
diff --git a/spec/fabricators/conversation_fabricator.rb b/spec/fabricators/conversation_fabricator.rb
index b4fadb46b..07c6780bf 100644
--- a/spec/fabricators/conversation_fabricator.rb
+++ b/spec/fabricators/conversation_fabricator.rb
@@ -1,2 +1,4 @@
+# frozen_string_literal: true
+
Fabricator(:conversation) do
end
diff --git a/spec/fabricators/conversation_mute_fabricator.rb b/spec/fabricators/conversation_mute_fabricator.rb
index 84f131c26..5cf4dd3d5 100644
--- a/spec/fabricators/conversation_mute_fabricator.rb
+++ b/spec/fabricators/conversation_mute_fabricator.rb
@@ -1,2 +1,4 @@
+# frozen_string_literal: true
+
Fabricator(:conversation_mute) do
end
diff --git a/spec/fabricators/custom_emoji_category_fabricator.rb b/spec/fabricators/custom_emoji_category_fabricator.rb
index 119c343cf..6019baba2 100644
--- a/spec/fabricators/custom_emoji_category_fabricator.rb
+++ b/spec/fabricators/custom_emoji_category_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:custom_emoji_category) do
name 'MyString'
end
diff --git a/spec/fabricators/custom_emoji_fabricator.rb b/spec/fabricators/custom_emoji_fabricator.rb
index 18a7d23dc..298a50b4b 100644
--- a/spec/fabricators/custom_emoji_fabricator.rb
+++ b/spec/fabricators/custom_emoji_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:custom_emoji) do
shortcode 'coolcat'
domain nil
diff --git a/spec/fabricators/custom_filter_fabricator.rb b/spec/fabricators/custom_filter_fabricator.rb
index 64297a7e3..5fee4f01a 100644
--- a/spec/fabricators/custom_filter_fabricator.rb
+++ b/spec/fabricators/custom_filter_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:custom_filter) do
account
expires_at nil
diff --git a/spec/fabricators/custom_filter_keyword_fabricator.rb b/spec/fabricators/custom_filter_keyword_fabricator.rb
index 201566cbe..f1fb440dc 100644
--- a/spec/fabricators/custom_filter_keyword_fabricator.rb
+++ b/spec/fabricators/custom_filter_keyword_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:custom_filter_keyword) do
custom_filter
keyword 'discourse'
diff --git a/spec/fabricators/custom_filter_status_fabricator.rb b/spec/fabricators/custom_filter_status_fabricator.rb
index d082b81c5..3ef1d0ec8 100644
--- a/spec/fabricators/custom_filter_status_fabricator.rb
+++ b/spec/fabricators/custom_filter_status_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:custom_filter_status) do
custom_filter
status
diff --git a/spec/fabricators/device_fabricator.rb b/spec/fabricators/device_fabricator.rb
index b15d8248f..26c71b4fd 100644
--- a/spec/fabricators/device_fabricator.rb
+++ b/spec/fabricators/device_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:device) do
access_token
account
diff --git a/spec/fabricators/domain_allow_fabricator.rb b/spec/fabricators/domain_allow_fabricator.rb
index 6f62ce3b8..b32af129b 100644
--- a/spec/fabricators/domain_allow_fabricator.rb
+++ b/spec/fabricators/domain_allow_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:domain_allow) do
domain 'MyString'
end
diff --git a/spec/fabricators/domain_block_fabricator.rb b/spec/fabricators/domain_block_fabricator.rb
index cc1f928e5..c703a18e9 100644
--- a/spec/fabricators/domain_block_fabricator.rb
+++ b/spec/fabricators/domain_block_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:domain_block) do
domain { sequence(:domain) { |i| "#{i}#{Faker::Internet.domain_name}" } }
end
diff --git a/spec/fabricators/email_domain_block_fabricator.rb b/spec/fabricators/email_domain_block_fabricator.rb
index d18af6433..a74cca73d 100644
--- a/spec/fabricators/email_domain_block_fabricator.rb
+++ b/spec/fabricators/email_domain_block_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:email_domain_block) do
domain { sequence(:domain) { |i| "#{i}#{Faker::Internet.domain_name}" } }
end
diff --git a/spec/fabricators/encrypted_message_fabricator.rb b/spec/fabricators/encrypted_message_fabricator.rb
index 4de0d7add..289882754 100644
--- a/spec/fabricators/encrypted_message_fabricator.rb
+++ b/spec/fabricators/encrypted_message_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:encrypted_message) do
device
from_account
diff --git a/spec/fabricators/favourite_fabricator.rb b/spec/fabricators/favourite_fabricator.rb
index 464ac8d71..005947e6f 100644
--- a/spec/fabricators/favourite_fabricator.rb
+++ b/spec/fabricators/favourite_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:favourite) do
account
status
diff --git a/spec/fabricators/featured_tag_fabricator.rb b/spec/fabricators/featured_tag_fabricator.rb
index 25cbdaac0..4bfa3e924 100644
--- a/spec/fabricators/featured_tag_fabricator.rb
+++ b/spec/fabricators/featured_tag_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:featured_tag) do
account
tag
diff --git a/spec/fabricators/follow_fabricator.rb b/spec/fabricators/follow_fabricator.rb
index 9b25dc547..41b5305d5 100644
--- a/spec/fabricators/follow_fabricator.rb
+++ b/spec/fabricators/follow_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:follow) do
account
target_account { Fabricate(:account) }
diff --git a/spec/fabricators/follow_recommendation_suppression_fabricator.rb b/spec/fabricators/follow_recommendation_suppression_fabricator.rb
index 4a6a07a66..6477baee1 100644
--- a/spec/fabricators/follow_recommendation_suppression_fabricator.rb
+++ b/spec/fabricators/follow_recommendation_suppression_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:follow_recommendation_suppression) do
account
end
diff --git a/spec/fabricators/follow_request_fabricator.rb b/spec/fabricators/follow_request_fabricator.rb
index c00ddf84d..86b82611f 100644
--- a/spec/fabricators/follow_request_fabricator.rb
+++ b/spec/fabricators/follow_request_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:follow_request) do
account
target_account { Fabricate(:account, locked: true) }
diff --git a/spec/fabricators/identity_fabricator.rb b/spec/fabricators/identity_fabricator.rb
index fcfb15518..b83010111 100644
--- a/spec/fabricators/identity_fabricator.rb
+++ b/spec/fabricators/identity_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:identity) do
user nil
provider 'MyString'
diff --git a/spec/fabricators/import_fabricator.rb b/spec/fabricators/import_fabricator.rb
index e2eb1e0df..11602f407 100644
--- a/spec/fabricators/import_fabricator.rb
+++ b/spec/fabricators/import_fabricator.rb
@@ -1,2 +1,4 @@
+# frozen_string_literal: true
+
Fabricator(:import) do
end
diff --git a/spec/fabricators/invite_fabricator.rb b/spec/fabricators/invite_fabricator.rb
index 62b9b3904..4f47d6ce2 100644
--- a/spec/fabricators/invite_fabricator.rb
+++ b/spec/fabricators/invite_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:invite) do
user
expires_at nil
diff --git a/spec/fabricators/ip_block_fabricator.rb b/spec/fabricators/ip_block_fabricator.rb
index 5bd018f9c..a5da3f706 100644
--- a/spec/fabricators/ip_block_fabricator.rb
+++ b/spec/fabricators/ip_block_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:ip_block) do
ip ''
severity ''
diff --git a/spec/fabricators/list_account_fabricator.rb b/spec/fabricators/list_account_fabricator.rb
index 30e4004aa..b0af29e6f 100644
--- a/spec/fabricators/list_account_fabricator.rb
+++ b/spec/fabricators/list_account_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:list_account) do
list nil
account nil
diff --git a/spec/fabricators/list_fabricator.rb b/spec/fabricators/list_fabricator.rb
index 4ad29a386..47af752b8 100644
--- a/spec/fabricators/list_fabricator.rb
+++ b/spec/fabricators/list_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:list) do
account
title 'MyString'
diff --git a/spec/fabricators/login_activity_fabricator.rb b/spec/fabricators/login_activity_fabricator.rb
index 686fd6483..2b30658ff 100644
--- a/spec/fabricators/login_activity_fabricator.rb
+++ b/spec/fabricators/login_activity_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:login_activity) do
user
authentication_method 'password'
diff --git a/spec/fabricators/marker_fabricator.rb b/spec/fabricators/marker_fabricator.rb
index 0c94150e0..561c2553a 100644
--- a/spec/fabricators/marker_fabricator.rb
+++ b/spec/fabricators/marker_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:marker) do
user
timeline 'home'
diff --git a/spec/fabricators/media_attachment_fabricator.rb b/spec/fabricators/media_attachment_fabricator.rb
index 651927c2d..4a081dccb 100644
--- a/spec/fabricators/media_attachment_fabricator.rb
+++ b/spec/fabricators/media_attachment_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:media_attachment) do
account
diff --git a/spec/fabricators/mention_fabricator.rb b/spec/fabricators/mention_fabricator.rb
index cb5fe4299..5a8392827 100644
--- a/spec/fabricators/mention_fabricator.rb
+++ b/spec/fabricators/mention_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:mention) do
account
status
diff --git a/spec/fabricators/mute_fabricator.rb b/spec/fabricators/mute_fabricator.rb
index 30d20e87e..242ae2b08 100644
--- a/spec/fabricators/mute_fabricator.rb
+++ b/spec/fabricators/mute_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:mute) do
account
target_account { Fabricate(:account) }
diff --git a/spec/fabricators/notification_fabricator.rb b/spec/fabricators/notification_fabricator.rb
index 638844e0f..959fda913 100644
--- a/spec/fabricators/notification_fabricator.rb
+++ b/spec/fabricators/notification_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:notification) do
activity fabricator: [:mention, :status, :follow, :follow_request, :favourite].sample
account
diff --git a/spec/fabricators/one_time_key_fabricator.rb b/spec/fabricators/one_time_key_fabricator.rb
index 8794baeb5..e317c28bd 100644
--- a/spec/fabricators/one_time_key_fabricator.rb
+++ b/spec/fabricators/one_time_key_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:one_time_key) do
device
key_id { Faker::Alphanumeric.alphanumeric(number: 10) }
diff --git a/spec/fabricators/poll_fabricator.rb b/spec/fabricators/poll_fabricator.rb
index 746610f7c..19c3b1d16 100644
--- a/spec/fabricators/poll_fabricator.rb
+++ b/spec/fabricators/poll_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:poll) do
account
status
diff --git a/spec/fabricators/poll_vote_fabricator.rb b/spec/fabricators/poll_vote_fabricator.rb
index c06e61f67..9099ae96f 100644
--- a/spec/fabricators/poll_vote_fabricator.rb
+++ b/spec/fabricators/poll_vote_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:poll_vote) do
account
poll
diff --git a/spec/fabricators/preview_card_fabricator.rb b/spec/fabricators/preview_card_fabricator.rb
index 99b5edc43..b8f2c5097 100644
--- a/spec/fabricators/preview_card_fabricator.rb
+++ b/spec/fabricators/preview_card_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:preview_card) do
url { Faker::Internet.url }
title { Faker::Lorem.sentence }
diff --git a/spec/fabricators/relay_fabricator.rb b/spec/fabricators/relay_fabricator.rb
index d6255866c..ad8ba86fc 100644
--- a/spec/fabricators/relay_fabricator.rb
+++ b/spec/fabricators/relay_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:relay) do
inbox_url 'https://example.com/inbox'
state :idle
diff --git a/spec/fabricators/report_fabricator.rb b/spec/fabricators/report_fabricator.rb
index 3011c49c6..7124773ad 100644
--- a/spec/fabricators/report_fabricator.rb
+++ b/spec/fabricators/report_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:report) do
account
target_account { Fabricate(:account) }
diff --git a/spec/fabricators/report_note_fabricator.rb b/spec/fabricators/report_note_fabricator.rb
index 33f384074..f257fe2b7 100644
--- a/spec/fabricators/report_note_fabricator.rb
+++ b/spec/fabricators/report_note_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:report_note) do
report
account { Fabricate(:account) }
diff --git a/spec/fabricators/rule_fabricator.rb b/spec/fabricators/rule_fabricator.rb
index bc29bc48e..a29fd905a 100644
--- a/spec/fabricators/rule_fabricator.rb
+++ b/spec/fabricators/rule_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:rule) do
priority 0
deleted_at nil
diff --git a/spec/fabricators/scheduled_status_fabricator.rb b/spec/fabricators/scheduled_status_fabricator.rb
index 52384d137..e517f258a 100644
--- a/spec/fabricators/scheduled_status_fabricator.rb
+++ b/spec/fabricators/scheduled_status_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:scheduled_status) do
account
scheduled_at { 20.hours.from_now }
diff --git a/spec/fabricators/session_activation_fabricator.rb b/spec/fabricators/session_activation_fabricator.rb
index a7fc3b017..b28d5e41d 100644
--- a/spec/fabricators/session_activation_fabricator.rb
+++ b/spec/fabricators/session_activation_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:session_activation) do
user
session_id 'MyString'
diff --git a/spec/fabricators/site_upload_fabricator.rb b/spec/fabricators/site_upload_fabricator.rb
index 2efc57e28..b6841dea3 100644
--- a/spec/fabricators/site_upload_fabricator.rb
+++ b/spec/fabricators/site_upload_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:site_upload) do
file { File.open(File.join(Rails.root, 'spec', 'fabricators', 'assets', 'utah_teapot.png')) }
end
diff --git a/spec/fabricators/status_edit_fabricator.rb b/spec/fabricators/status_edit_fabricator.rb
index 0e5796b23..33735a459 100644
--- a/spec/fabricators/status_edit_fabricator.rb
+++ b/spec/fabricators/status_edit_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:status_edit) do
status nil
account nil
diff --git a/spec/fabricators/status_fabricator.rb b/spec/fabricators/status_fabricator.rb
index 8a0a8aa55..17ac9ccd8 100644
--- a/spec/fabricators/status_fabricator.rb
+++ b/spec/fabricators/status_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:status) do
account
text 'Lorem ipsum dolor sit amet'
diff --git a/spec/fabricators/status_pin_fabricator.rb b/spec/fabricators/status_pin_fabricator.rb
index f1f1c05f3..9ad0ac9de 100644
--- a/spec/fabricators/status_pin_fabricator.rb
+++ b/spec/fabricators/status_pin_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:status_pin) do
account
status { |attrs| Fabricate(:status, account: attrs[:account], visibility: :public) }
diff --git a/spec/fabricators/status_stat_fabricator.rb b/spec/fabricators/status_stat_fabricator.rb
index feba9fbca..8a358c51a 100644
--- a/spec/fabricators/status_stat_fabricator.rb
+++ b/spec/fabricators/status_stat_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:status_stat) do
status_id nil
replies_count ''
diff --git a/spec/fabricators/system_key_fabricator.rb b/spec/fabricators/system_key_fabricator.rb
index c744bb286..ef6cec9c4 100644
--- a/spec/fabricators/system_key_fabricator.rb
+++ b/spec/fabricators/system_key_fabricator.rb
@@ -1,2 +1,4 @@
+# frozen_string_literal: true
+
Fabricator(:system_key) do
end
diff --git a/spec/fabricators/tag_fabricator.rb b/spec/fabricators/tag_fabricator.rb
index 33d57c928..a7b52e967 100644
--- a/spec/fabricators/tag_fabricator.rb
+++ b/spec/fabricators/tag_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:tag) do
name { sequence(:hashtag) { |i| "#{Faker::Lorem.word}#{i}" } }
end
diff --git a/spec/fabricators/tag_follow_fabricator.rb b/spec/fabricators/tag_follow_fabricator.rb
index a2cccb07a..cbe5b0989 100644
--- a/spec/fabricators/tag_follow_fabricator.rb
+++ b/spec/fabricators/tag_follow_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:tag_follow) do
tag
account
diff --git a/spec/fabricators/unavailable_domain_fabricator.rb b/spec/fabricators/unavailable_domain_fabricator.rb
index f661b87c4..300a9e7a1 100644
--- a/spec/fabricators/unavailable_domain_fabricator.rb
+++ b/spec/fabricators/unavailable_domain_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:unavailable_domain) do
domain { Faker::Internet.domain }
end
diff --git a/spec/fabricators/user_fabricator.rb b/spec/fabricators/user_fabricator.rb
index 93ce07a74..967347319 100644
--- a/spec/fabricators/user_fabricator.rb
+++ b/spec/fabricators/user_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:user) do
account { Fabricate.build(:account, user: nil) }
email { sequence(:email) { |i| "#{i}#{Faker::Internet.email}" } }
diff --git a/spec/fabricators/user_invite_request_fabricator.rb b/spec/fabricators/user_invite_request_fabricator.rb
index 5cc6ae56f..7736263e4 100644
--- a/spec/fabricators/user_invite_request_fabricator.rb
+++ b/spec/fabricators/user_invite_request_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:user_invite_request) do
user
text { Faker::Lorem.sentence }
diff --git a/spec/fabricators/user_role_fabricator.rb b/spec/fabricators/user_role_fabricator.rb
index 592b4edca..d44322760 100644
--- a/spec/fabricators/user_role_fabricator.rb
+++ b/spec/fabricators/user_role_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:user_role) do
name 'MyString'
color ''
diff --git a/spec/fabricators/web_push_subscription_fabricator.rb b/spec/fabricators/web_push_subscription_fabricator.rb
index 97f90675d..baffdbf83 100644
--- a/spec/fabricators/web_push_subscription_fabricator.rb
+++ b/spec/fabricators/web_push_subscription_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:web_push_subscription, from: Web::PushSubscription) do
endpoint Faker::Internet.url
key_p256dh Faker::Internet.password
diff --git a/spec/fabricators/web_setting_fabricator.rb b/spec/fabricators/web_setting_fabricator.rb
index 369b86bc1..7c9f30079 100644
--- a/spec/fabricators/web_setting_fabricator.rb
+++ b/spec/fabricators/web_setting_fabricator.rb
@@ -1,2 +1,4 @@
+# frozen_string_literal: true
+
Fabricator(:web_setting, from: Web::Setting) do
end
diff --git a/spec/fabricators/webauthn_credential_fabricator.rb b/spec/fabricators/webauthn_credential_fabricator.rb
index ba59ce967..b578d55f0 100644
--- a/spec/fabricators/webauthn_credential_fabricator.rb
+++ b/spec/fabricators/webauthn_credential_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:webauthn_credential) do
user_id { Fabricate(:user).id }
external_id { Base64.urlsafe_encode64(SecureRandom.random_bytes(16)) }
diff --git a/spec/fabricators/webhook_fabricator.rb b/spec/fabricators/webhook_fabricator.rb
index fa4f17b55..477e715ef 100644
--- a/spec/fabricators/webhook_fabricator.rb
+++ b/spec/fabricators/webhook_fabricator.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
Fabricator(:webhook) do
url { Faker::Internet.url }
secret { SecureRandom.hex }
diff --git a/spec/helpers/accounts_helper_spec.rb b/spec/helpers/accounts_helper_spec.rb
index 1f412a39f..184b47dec 100644
--- a/spec/helpers/accounts_helper_spec.rb
+++ b/spec/helpers/accounts_helper_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe AccountsHelper, type: :helper do
diff --git a/spec/helpers/admin/filter_helper_spec.rb b/spec/helpers/admin/filter_helper_spec.rb
index 9d4ea2829..bbf90a996 100644
--- a/spec/helpers/admin/filter_helper_spec.rb
+++ b/spec/helpers/admin/filter_helper_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe Admin::FilterHelper do
diff --git a/spec/helpers/application_helper_spec.rb b/spec/helpers/application_helper_spec.rb
index e0f71afd5..2db2ee288 100644
--- a/spec/helpers/application_helper_spec.rb
+++ b/spec/helpers/application_helper_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe ApplicationHelper do
diff --git a/spec/helpers/home_helper_spec.rb b/spec/helpers/home_helper_spec.rb
index a3dc6f836..77db327c2 100644
--- a/spec/helpers/home_helper_spec.rb
+++ b/spec/helpers/home_helper_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe HomeHelper, type: :helper do
diff --git a/spec/helpers/statuses_helper_spec.rb b/spec/helpers/statuses_helper_spec.rb
index cba659bfb..ce2a4680e 100644
--- a/spec/helpers/statuses_helper_spec.rb
+++ b/spec/helpers/statuses_helper_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe StatusesHelper, type: :helper do
diff --git a/spec/lib/activitypub/activity/accept_spec.rb b/spec/lib/activitypub/activity/accept_spec.rb
index 95a5a8747..890a07be5 100644
--- a/spec/lib/activitypub/activity/accept_spec.rb
+++ b/spec/lib/activitypub/activity/accept_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe ActivityPub::Activity::Accept do
diff --git a/spec/lib/activitypub/activity/add_spec.rb b/spec/lib/activitypub/activity/add_spec.rb
index a69c3d2b1..9c45e465e 100644
--- a/spec/lib/activitypub/activity/add_spec.rb
+++ b/spec/lib/activitypub/activity/add_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe ActivityPub::Activity::Add do
diff --git a/spec/lib/activitypub/activity/announce_spec.rb b/spec/lib/activitypub/activity/announce_spec.rb
index b3257e881..394b1d7b9 100644
--- a/spec/lib/activitypub/activity/announce_spec.rb
+++ b/spec/lib/activitypub/activity/announce_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe ActivityPub::Activity::Announce do
diff --git a/spec/lib/activitypub/activity/block_spec.rb b/spec/lib/activitypub/activity/block_spec.rb
index 42bdfdc81..6f6898401 100644
--- a/spec/lib/activitypub/activity/block_spec.rb
+++ b/spec/lib/activitypub/activity/block_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe ActivityPub::Activity::Block do
diff --git a/spec/lib/activitypub/activity/create_spec.rb b/spec/lib/activitypub/activity/create_spec.rb
index fd4983037..933eff225 100644
--- a/spec/lib/activitypub/activity/create_spec.rb
+++ b/spec/lib/activitypub/activity/create_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe ActivityPub::Activity::Create do
diff --git a/spec/lib/activitypub/activity/delete_spec.rb b/spec/lib/activitypub/activity/delete_spec.rb
index 40cd0fce9..3a73b3726 100644
--- a/spec/lib/activitypub/activity/delete_spec.rb
+++ b/spec/lib/activitypub/activity/delete_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe ActivityPub::Activity::Delete do
diff --git a/spec/lib/activitypub/activity/flag_spec.rb b/spec/lib/activitypub/activity/flag_spec.rb
index c2a505356..005e185e6 100644
--- a/spec/lib/activitypub/activity/flag_spec.rb
+++ b/spec/lib/activitypub/activity/flag_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe ActivityPub::Activity::Flag do
diff --git a/spec/lib/activitypub/activity/follow_spec.rb b/spec/lib/activitypub/activity/follow_spec.rb
index fd4ede82b..eb8b17d61 100644
--- a/spec/lib/activitypub/activity/follow_spec.rb
+++ b/spec/lib/activitypub/activity/follow_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe ActivityPub::Activity::Follow do
diff --git a/spec/lib/activitypub/activity/like_spec.rb b/spec/lib/activitypub/activity/like_spec.rb
index b69615a9d..640d61ab3 100644
--- a/spec/lib/activitypub/activity/like_spec.rb
+++ b/spec/lib/activitypub/activity/like_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe ActivityPub::Activity::Like do
diff --git a/spec/lib/activitypub/activity/move_spec.rb b/spec/lib/activitypub/activity/move_spec.rb
index c468fdeff..8bd23aa7b 100644
--- a/spec/lib/activitypub/activity/move_spec.rb
+++ b/spec/lib/activitypub/activity/move_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe ActivityPub::Activity::Move do
diff --git a/spec/lib/activitypub/activity/reject_spec.rb b/spec/lib/activitypub/activity/reject_spec.rb
index 7f04db4e6..5e0f09bfe 100644
--- a/spec/lib/activitypub/activity/reject_spec.rb
+++ b/spec/lib/activitypub/activity/reject_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe ActivityPub::Activity::Reject do
diff --git a/spec/lib/activitypub/activity/remove_spec.rb b/spec/lib/activitypub/activity/remove_spec.rb
index 4209dfde2..fc12aec8c 100644
--- a/spec/lib/activitypub/activity/remove_spec.rb
+++ b/spec/lib/activitypub/activity/remove_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe ActivityPub::Activity::Remove do
diff --git a/spec/lib/activitypub/activity/undo_spec.rb b/spec/lib/activitypub/activity/undo_spec.rb
index 0bd1f17d3..b4cbc7196 100644
--- a/spec/lib/activitypub/activity/undo_spec.rb
+++ b/spec/lib/activitypub/activity/undo_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe ActivityPub::Activity::Undo do
diff --git a/spec/lib/activitypub/activity/update_spec.rb b/spec/lib/activitypub/activity/update_spec.rb
index d2a1edd7a..f77279c02 100644
--- a/spec/lib/activitypub/activity/update_spec.rb
+++ b/spec/lib/activitypub/activity/update_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe ActivityPub::Activity::Update do
diff --git a/spec/lib/activitypub/adapter_spec.rb b/spec/lib/activitypub/adapter_spec.rb
index e4c403abb..b981ea9c6 100644
--- a/spec/lib/activitypub/adapter_spec.rb
+++ b/spec/lib/activitypub/adapter_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe ActivityPub::Adapter do
diff --git a/spec/lib/activitypub/dereferencer_spec.rb b/spec/lib/activitypub/dereferencer_spec.rb
index 800473a7c..11078de86 100644
--- a/spec/lib/activitypub/dereferencer_spec.rb
+++ b/spec/lib/activitypub/dereferencer_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe ActivityPub::Dereferencer do
diff --git a/spec/lib/activitypub/linked_data_signature_spec.rb b/spec/lib/activitypub/linked_data_signature_spec.rb
index ecb1e16db..619d6df12 100644
--- a/spec/lib/activitypub/linked_data_signature_spec.rb
+++ b/spec/lib/activitypub/linked_data_signature_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe ActivityPub::LinkedDataSignature do
diff --git a/spec/lib/activitypub/tag_manager_spec.rb b/spec/lib/activitypub/tag_manager_spec.rb
index 606a1de2e..596e91e95 100644
--- a/spec/lib/activitypub/tag_manager_spec.rb
+++ b/spec/lib/activitypub/tag_manager_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe ActivityPub::TagManager do
diff --git a/spec/lib/emoji_formatter_spec.rb b/spec/lib/emoji_formatter_spec.rb
index c6fe8cf37..b73d5be4b 100644
--- a/spec/lib/emoji_formatter_spec.rb
+++ b/spec/lib/emoji_formatter_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe EmojiFormatter do
diff --git a/spec/lib/entity_cache_spec.rb b/spec/lib/entity_cache_spec.rb
index bd622e626..c750cddf3 100644
--- a/spec/lib/entity_cache_spec.rb
+++ b/spec/lib/entity_cache_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe EntityCache do
diff --git a/spec/lib/feed_manager_spec.rb b/spec/lib/feed_manager_spec.rb
index d54050f8f..418bdf089 100644
--- a/spec/lib/feed_manager_spec.rb
+++ b/spec/lib/feed_manager_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe FeedManager do
diff --git a/spec/lib/html_aware_formatter_spec.rb b/spec/lib/html_aware_formatter_spec.rb
index 3d3149b8f..315035957 100644
--- a/spec/lib/html_aware_formatter_spec.rb
+++ b/spec/lib/html_aware_formatter_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe HtmlAwareFormatter do
diff --git a/spec/lib/link_details_extractor_spec.rb b/spec/lib/link_details_extractor_spec.rb
index fcc265474..a46dd743a 100644
--- a/spec/lib/link_details_extractor_spec.rb
+++ b/spec/lib/link_details_extractor_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe LinkDetailsExtractor do
diff --git a/spec/lib/plain_text_formatter_spec.rb b/spec/lib/plain_text_formatter_spec.rb
index 0e5f39031..4a0519aaf 100644
--- a/spec/lib/plain_text_formatter_spec.rb
+++ b/spec/lib/plain_text_formatter_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe PlainTextFormatter do
diff --git a/spec/lib/suspicious_sign_in_detector_spec.rb b/spec/lib/suspicious_sign_in_detector_spec.rb
index 05aadfd8f..c61b1ef1e 100644
--- a/spec/lib/suspicious_sign_in_detector_spec.rb
+++ b/spec/lib/suspicious_sign_in_detector_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe SuspiciousSignInDetector do
diff --git a/spec/lib/tag_manager_spec.rb b/spec/lib/tag_manager_spec.rb
index d2bb24c0f..8de290541 100644
--- a/spec/lib/tag_manager_spec.rb
+++ b/spec/lib/tag_manager_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe TagManager do
diff --git a/spec/lib/text_formatter_spec.rb b/spec/lib/text_formatter_spec.rb
index 04ae4e02c..3417b450c 100644
--- a/spec/lib/text_formatter_spec.rb
+++ b/spec/lib/text_formatter_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe TextFormatter do
diff --git a/spec/lib/vacuum/access_tokens_vacuum_spec.rb b/spec/lib/vacuum/access_tokens_vacuum_spec.rb
index 0244c3449..6b7234065 100644
--- a/spec/lib/vacuum/access_tokens_vacuum_spec.rb
+++ b/spec/lib/vacuum/access_tokens_vacuum_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Vacuum::AccessTokensVacuum do
diff --git a/spec/lib/vacuum/backups_vacuum_spec.rb b/spec/lib/vacuum/backups_vacuum_spec.rb
index c505a3e1a..867dbe402 100644
--- a/spec/lib/vacuum/backups_vacuum_spec.rb
+++ b/spec/lib/vacuum/backups_vacuum_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Vacuum::BackupsVacuum do
diff --git a/spec/lib/vacuum/feeds_vacuum_spec.rb b/spec/lib/vacuum/feeds_vacuum_spec.rb
index 0aec26740..ede1e3c36 100644
--- a/spec/lib/vacuum/feeds_vacuum_spec.rb
+++ b/spec/lib/vacuum/feeds_vacuum_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Vacuum::FeedsVacuum do
diff --git a/spec/lib/vacuum/media_attachments_vacuum_spec.rb b/spec/lib/vacuum/media_attachments_vacuum_spec.rb
index afcb6f878..3c17ecb00 100644
--- a/spec/lib/vacuum/media_attachments_vacuum_spec.rb
+++ b/spec/lib/vacuum/media_attachments_vacuum_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Vacuum::MediaAttachmentsVacuum do
diff --git a/spec/lib/vacuum/preview_cards_vacuum_spec.rb b/spec/lib/vacuum/preview_cards_vacuum_spec.rb
index 524f4c927..c1b7f7e9c 100644
--- a/spec/lib/vacuum/preview_cards_vacuum_spec.rb
+++ b/spec/lib/vacuum/preview_cards_vacuum_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Vacuum::PreviewCardsVacuum do
diff --git a/spec/lib/vacuum/statuses_vacuum_spec.rb b/spec/lib/vacuum/statuses_vacuum_spec.rb
index 9583376b7..d5c013950 100644
--- a/spec/lib/vacuum/statuses_vacuum_spec.rb
+++ b/spec/lib/vacuum/statuses_vacuum_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Vacuum::StatusesVacuum do
diff --git a/spec/lib/vacuum/system_keys_vacuum_spec.rb b/spec/lib/vacuum/system_keys_vacuum_spec.rb
index 565892f02..84cae3041 100644
--- a/spec/lib/vacuum/system_keys_vacuum_spec.rb
+++ b/spec/lib/vacuum/system_keys_vacuum_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Vacuum::SystemKeysVacuum do
diff --git a/spec/lib/webfinger_resource_spec.rb b/spec/lib/webfinger_resource_spec.rb
index ee007da70..8ec6dd205 100644
--- a/spec/lib/webfinger_resource_spec.rb
+++ b/spec/lib/webfinger_resource_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe WebfingerResource do
diff --git a/spec/mailers/notification_mailer_spec.rb b/spec/mailers/notification_mailer_spec.rb
index 6746871a3..a6db08d85 100644
--- a/spec/mailers/notification_mailer_spec.rb
+++ b/spec/mailers/notification_mailer_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe NotificationMailer, type: :mailer do
diff --git a/spec/mailers/previews/admin_mailer_preview.rb b/spec/mailers/previews/admin_mailer_preview.rb
index 0ec9e9882..9572768cd 100644
--- a/spec/mailers/previews/admin_mailer_preview.rb
+++ b/spec/mailers/previews/admin_mailer_preview.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
# Preview all emails at http://localhost:3000/rails/mailers/admin_mailer
class AdminMailerPreview < ActionMailer::Preview
diff --git a/spec/mailers/previews/notification_mailer_preview.rb b/spec/mailers/previews/notification_mailer_preview.rb
index e31445c36..bc41662a1 100644
--- a/spec/mailers/previews/notification_mailer_preview.rb
+++ b/spec/mailers/previews/notification_mailer_preview.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
# Preview all emails at http://localhost:3000/rails/mailers/notification_mailer
class NotificationMailerPreview < ActionMailer::Preview
diff --git a/spec/mailers/previews/user_mailer_preview.rb b/spec/mailers/previews/user_mailer_preview.rb
index 95712e6cf..098c9cd90 100644
--- a/spec/mailers/previews/user_mailer_preview.rb
+++ b/spec/mailers/previews/user_mailer_preview.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
# Preview all emails at http://localhost:3000/rails/mailers/user_mailer
class UserMailerPreview < ActionMailer::Preview
diff --git a/spec/models/account/field_spec.rb b/spec/models/account/field_spec.rb
index 36e1a8595..6745fbb26 100644
--- a/spec/models/account/field_spec.rb
+++ b/spec/models/account/field_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Account::Field, type: :model do
diff --git a/spec/models/account_alias_spec.rb b/spec/models/account_alias_spec.rb
index c48b804b2..08c3eaff4 100644
--- a/spec/models/account_alias_spec.rb
+++ b/spec/models/account_alias_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe AccountAlias, type: :model do
diff --git a/spec/models/account_conversation_spec.rb b/spec/models/account_conversation_spec.rb
index 70a76281e..c4e8918ad 100644
--- a/spec/models/account_conversation_spec.rb
+++ b/spec/models/account_conversation_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe AccountConversation, type: :model do
diff --git a/spec/models/account_deletion_request_spec.rb b/spec/models/account_deletion_request_spec.rb
index afaecbe22..db332f14c 100644
--- a/spec/models/account_deletion_request_spec.rb
+++ b/spec/models/account_deletion_request_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe AccountDeletionRequest, type: :model do
diff --git a/spec/models/account_domain_block_spec.rb b/spec/models/account_domain_block_spec.rb
index a170abcd2..bc46f44ba 100644
--- a/spec/models/account_domain_block_spec.rb
+++ b/spec/models/account_domain_block_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe AccountDomainBlock, type: :model do
diff --git a/spec/models/account_filter_spec.rb b/spec/models/account_filter_spec.rb
index c2bd8c220..853d20a0c 100644
--- a/spec/models/account_filter_spec.rb
+++ b/spec/models/account_filter_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe AccountFilter do
diff --git a/spec/models/account_migration_spec.rb b/spec/models/account_migration_spec.rb
index 5f66fe8da..a91ba5dc5 100644
--- a/spec/models/account_migration_spec.rb
+++ b/spec/models/account_migration_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe AccountMigration, type: :model do
diff --git a/spec/models/account_moderation_note_spec.rb b/spec/models/account_moderation_note_spec.rb
index 69bd5500a..b7f5701e6 100644
--- a/spec/models/account_moderation_note_spec.rb
+++ b/spec/models/account_moderation_note_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe AccountModerationNote, type: :model do
diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb
index f3ad19877..1e5a80963 100644
--- a/spec/models/account_spec.rb
+++ b/spec/models/account_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Account, type: :model do
diff --git a/spec/models/account_statuses_cleanup_policy_spec.rb b/spec/models/account_statuses_cleanup_policy_spec.rb
index d170050fc..1b7857547 100644
--- a/spec/models/account_statuses_cleanup_policy_spec.rb
+++ b/spec/models/account_statuses_cleanup_policy_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe AccountStatusesCleanupPolicy, type: :model do
diff --git a/spec/models/admin/account_action_spec.rb b/spec/models/admin/account_action_spec.rb
index 7248356e5..9f41b7c8e 100644
--- a/spec/models/admin/account_action_spec.rb
+++ b/spec/models/admin/account_action_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Admin::AccountAction, type: :model do
diff --git a/spec/models/announcement_mute_spec.rb b/spec/models/announcement_mute_spec.rb
index 9d0e4c903..f4a7a5dc9 100644
--- a/spec/models/announcement_mute_spec.rb
+++ b/spec/models/announcement_mute_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe AnnouncementMute, type: :model do
diff --git a/spec/models/announcement_reaction_spec.rb b/spec/models/announcement_reaction_spec.rb
index f6e151584..38095b015 100644
--- a/spec/models/announcement_reaction_spec.rb
+++ b/spec/models/announcement_reaction_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe AnnouncementReaction, type: :model do
diff --git a/spec/models/announcement_spec.rb b/spec/models/announcement_spec.rb
index 7f7b647a9..024fa2888 100644
--- a/spec/models/announcement_spec.rb
+++ b/spec/models/announcement_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Announcement, type: :model do
diff --git a/spec/models/appeal_spec.rb b/spec/models/appeal_spec.rb
index 14062dc4f..6aa013aba 100644
--- a/spec/models/appeal_spec.rb
+++ b/spec/models/appeal_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Appeal, type: :model do
diff --git a/spec/models/backup_spec.rb b/spec/models/backup_spec.rb
index 45230986d..239e7aef7 100644
--- a/spec/models/backup_spec.rb
+++ b/spec/models/backup_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Backup, type: :model do
diff --git a/spec/models/block_spec.rb b/spec/models/block_spec.rb
index 1fd60c29d..64c39fce6 100644
--- a/spec/models/block_spec.rb
+++ b/spec/models/block_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Block, type: :model do
diff --git a/spec/models/canonical_email_block_spec.rb b/spec/models/canonical_email_block_spec.rb
index 8e0050d65..2b3fd6d6a 100644
--- a/spec/models/canonical_email_block_spec.rb
+++ b/spec/models/canonical_email_block_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe CanonicalEmailBlock, type: :model do
diff --git a/spec/models/concerns/account_counters_spec.rb b/spec/models/concerns/account_counters_spec.rb
index 4350496e7..fb02d79f1 100644
--- a/spec/models/concerns/account_counters_spec.rb
+++ b/spec/models/concerns/account_counters_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe AccountCounters do
diff --git a/spec/models/concerns/account_interactions_spec.rb b/spec/models/concerns/account_interactions_spec.rb
index 50ff0b149..7396af6df 100644
--- a/spec/models/concerns/account_interactions_spec.rb
+++ b/spec/models/concerns/account_interactions_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe AccountInteractions do
diff --git a/spec/models/conversation_mute_spec.rb b/spec/models/conversation_mute_spec.rb
index 3fc2915d4..6439b0ecd 100644
--- a/spec/models/conversation_mute_spec.rb
+++ b/spec/models/conversation_mute_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe ConversationMute, type: :model do
diff --git a/spec/models/conversation_spec.rb b/spec/models/conversation_spec.rb
index 8b5e4fdaf..9d58ad0ac 100644
--- a/spec/models/conversation_spec.rb
+++ b/spec/models/conversation_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Conversation, type: :model do
diff --git a/spec/models/custom_emoji_category_spec.rb b/spec/models/custom_emoji_category_spec.rb
index 160033f4d..74881b26c 100644
--- a/spec/models/custom_emoji_category_spec.rb
+++ b/spec/models/custom_emoji_category_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe CustomEmojiCategory, type: :model do
diff --git a/spec/models/custom_emoji_spec.rb b/spec/models/custom_emoji_spec.rb
index f6fcd468b..ef5f39aca 100644
--- a/spec/models/custom_emoji_spec.rb
+++ b/spec/models/custom_emoji_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe CustomEmoji, type: :model do
diff --git a/spec/models/custom_filter_keyword_spec.rb b/spec/models/custom_filter_keyword_spec.rb
index e15b9dad5..bbc4b9c2e 100644
--- a/spec/models/custom_filter_keyword_spec.rb
+++ b/spec/models/custom_filter_keyword_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe CustomFilterKeyword, type: :model do
diff --git a/spec/models/custom_filter_spec.rb b/spec/models/custom_filter_spec.rb
index 3943dd5f1..d2bc090ab 100644
--- a/spec/models/custom_filter_spec.rb
+++ b/spec/models/custom_filter_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe CustomFilter, type: :model do
diff --git a/spec/models/device_spec.rb b/spec/models/device_spec.rb
index 307552e91..cb214b9cb 100644
--- a/spec/models/device_spec.rb
+++ b/spec/models/device_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Device, type: :model do
diff --git a/spec/models/domain_allow_spec.rb b/spec/models/domain_allow_spec.rb
index e65435127..18cf5fe4c 100644
--- a/spec/models/domain_allow_spec.rb
+++ b/spec/models/domain_allow_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe DomainAllow, type: :model do
diff --git a/spec/models/domain_block_spec.rb b/spec/models/domain_block_spec.rb
index d1d57c167..6a5925b89 100644
--- a/spec/models/domain_block_spec.rb
+++ b/spec/models/domain_block_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe DomainBlock, type: :model do
diff --git a/spec/models/email_domain_block_spec.rb b/spec/models/email_domain_block_spec.rb
index e23116888..01a7a0f0e 100644
--- a/spec/models/email_domain_block_spec.rb
+++ b/spec/models/email_domain_block_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe EmailDomainBlock, type: :model do
diff --git a/spec/models/encrypted_message_spec.rb b/spec/models/encrypted_message_spec.rb
index 64f9c6912..bf7a406ff 100644
--- a/spec/models/encrypted_message_spec.rb
+++ b/spec/models/encrypted_message_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe EncryptedMessage, type: :model do
diff --git a/spec/models/export_spec.rb b/spec/models/export_spec.rb
index 5202ae9e1..3fb5fc3a5 100644
--- a/spec/models/export_spec.rb
+++ b/spec/models/export_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe Export do
diff --git a/spec/models/favourite_spec.rb b/spec/models/favourite_spec.rb
index f755590ee..f7e2812a6 100644
--- a/spec/models/favourite_spec.rb
+++ b/spec/models/favourite_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Favourite, type: :model do
diff --git a/spec/models/featured_tag_spec.rb b/spec/models/featured_tag_spec.rb
index 07533e0b9..4bf087c82 100644
--- a/spec/models/featured_tag_spec.rb
+++ b/spec/models/featured_tag_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe FeaturedTag, type: :model do
diff --git a/spec/models/follow_recommendation_suppression_spec.rb b/spec/models/follow_recommendation_suppression_spec.rb
index 39107a2b0..4c1d8281b 100644
--- a/spec/models/follow_recommendation_suppression_spec.rb
+++ b/spec/models/follow_recommendation_suppression_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe FollowRecommendationSuppression, type: :model do
diff --git a/spec/models/follow_request_spec.rb b/spec/models/follow_request_spec.rb
index 901eabc9d..569c160ae 100644
--- a/spec/models/follow_request_spec.rb
+++ b/spec/models/follow_request_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe FollowRequest, type: :model do
diff --git a/spec/models/follow_spec.rb b/spec/models/follow_spec.rb
index e723a1ef2..f49d58532 100644
--- a/spec/models/follow_spec.rb
+++ b/spec/models/follow_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Follow, type: :model do
diff --git a/spec/models/home_feed_spec.rb b/spec/models/home_feed_spec.rb
index 196bef1e4..d7034f3f0 100644
--- a/spec/models/home_feed_spec.rb
+++ b/spec/models/home_feed_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe HomeFeed, type: :model do
diff --git a/spec/models/identity_spec.rb b/spec/models/identity_spec.rb
index 689c9b797..6eab5a2e1 100644
--- a/spec/models/identity_spec.rb
+++ b/spec/models/identity_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Identity, type: :model do
diff --git a/spec/models/import_spec.rb b/spec/models/import_spec.rb
index 4280b3237..81c75a964 100644
--- a/spec/models/import_spec.rb
+++ b/spec/models/import_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Import, type: :model do
diff --git a/spec/models/invite_spec.rb b/spec/models/invite_spec.rb
index b0596c561..dac4b6431 100644
--- a/spec/models/invite_spec.rb
+++ b/spec/models/invite_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Invite, type: :model do
diff --git a/spec/models/ip_block_spec.rb b/spec/models/ip_block_spec.rb
index 6603c6417..4c4028576 100644
--- a/spec/models/ip_block_spec.rb
+++ b/spec/models/ip_block_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe IpBlock, type: :model do
diff --git a/spec/models/list_account_spec.rb b/spec/models/list_account_spec.rb
index a0cf02efe..8312defac 100644
--- a/spec/models/list_account_spec.rb
+++ b/spec/models/list_account_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe ListAccount, type: :model do
diff --git a/spec/models/list_spec.rb b/spec/models/list_spec.rb
index b780bb1de..8167f8a7e 100644
--- a/spec/models/list_spec.rb
+++ b/spec/models/list_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe List, type: :model do
diff --git a/spec/models/login_activity_spec.rb b/spec/models/login_activity_spec.rb
index 12d8c4363..1c3111a20 100644
--- a/spec/models/login_activity_spec.rb
+++ b/spec/models/login_activity_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe LoginActivity, type: :model do
diff --git a/spec/models/marker_spec.rb b/spec/models/marker_spec.rb
index d716aa75c..e8561c4c6 100644
--- a/spec/models/marker_spec.rb
+++ b/spec/models/marker_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Marker, type: :model do
diff --git a/spec/models/media_attachment_spec.rb b/spec/models/media_attachment_spec.rb
index 097c76f31..63edfc152 100644
--- a/spec/models/media_attachment_spec.rb
+++ b/spec/models/media_attachment_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe MediaAttachment, type: :model do
diff --git a/spec/models/mention_spec.rb b/spec/models/mention_spec.rb
index dbcf6a32c..3de2b4a07 100644
--- a/spec/models/mention_spec.rb
+++ b/spec/models/mention_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Mention, type: :model do
diff --git a/spec/models/mute_spec.rb b/spec/models/mute_spec.rb
index 38a87bdf4..48b5a37ab 100644
--- a/spec/models/mute_spec.rb
+++ b/spec/models/mute_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Mute, type: :model do
diff --git a/spec/models/notification_spec.rb b/spec/models/notification_spec.rb
index a8fb77639..64527e3d7 100644
--- a/spec/models/notification_spec.rb
+++ b/spec/models/notification_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Notification, type: :model do
diff --git a/spec/models/one_time_key_spec.rb b/spec/models/one_time_key_spec.rb
index 4b231c600..2a5fe8a9d 100644
--- a/spec/models/one_time_key_spec.rb
+++ b/spec/models/one_time_key_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe OneTimeKey, type: :model do
diff --git a/spec/models/poll_spec.rb b/spec/models/poll_spec.rb
index 666f8ca68..474399bf6 100644
--- a/spec/models/poll_spec.rb
+++ b/spec/models/poll_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Poll, type: :model do
diff --git a/spec/models/preview_card_spec.rb b/spec/models/preview_card_spec.rb
index 45233d1d4..1858644c9 100644
--- a/spec/models/preview_card_spec.rb
+++ b/spec/models/preview_card_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe PreviewCard, type: :model do
diff --git a/spec/models/preview_card_trend_spec.rb b/spec/models/preview_card_trend_spec.rb
index c7ab6ed14..97ad05e75 100644
--- a/spec/models/preview_card_trend_spec.rb
+++ b/spec/models/preview_card_trend_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe PreviewCardTrend, type: :model do
diff --git a/spec/models/public_feed_spec.rb b/spec/models/public_feed_spec.rb
index 59c81dd95..5653aee18 100644
--- a/spec/models/public_feed_spec.rb
+++ b/spec/models/public_feed_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe PublicFeed, type: :model do
diff --git a/spec/models/relay_spec.rb b/spec/models/relay_spec.rb
index 12dc0f20f..86c1762c1 100644
--- a/spec/models/relay_spec.rb
+++ b/spec/models/relay_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Relay, type: :model do
diff --git a/spec/models/report_filter_spec.rb b/spec/models/report_filter_spec.rb
index 099c0731d..8269c4579 100644
--- a/spec/models/report_filter_spec.rb
+++ b/spec/models/report_filter_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe ReportFilter do
diff --git a/spec/models/report_spec.rb b/spec/models/report_spec.rb
index 317851297..d5d40a34f 100644
--- a/spec/models/report_spec.rb
+++ b/spec/models/report_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe Report do
diff --git a/spec/models/rule_spec.rb b/spec/models/rule_spec.rb
index 8666bda71..d5ec13ddf 100644
--- a/spec/models/rule_spec.rb
+++ b/spec/models/rule_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Rule, type: :model do
diff --git a/spec/models/scheduled_status_spec.rb b/spec/models/scheduled_status_spec.rb
index f8c9d8b81..294fa9f36 100644
--- a/spec/models/scheduled_status_spec.rb
+++ b/spec/models/scheduled_status_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe ScheduledStatus, type: :model do
diff --git a/spec/models/status_edit_spec.rb b/spec/models/status_edit_spec.rb
index 2ecafef73..0b9fa7087 100644
--- a/spec/models/status_edit_spec.rb
+++ b/spec/models/status_edit_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe StatusEdit, type: :model do
diff --git a/spec/models/status_pin_spec.rb b/spec/models/status_pin_spec.rb
index c18faca78..c4ebf96da 100644
--- a/spec/models/status_pin_spec.rb
+++ b/spec/models/status_pin_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe StatusPin, type: :model do
diff --git a/spec/models/status_spec.rb b/spec/models/status_spec.rb
index 442f14ddf..1e58c6d0d 100644
--- a/spec/models/status_spec.rb
+++ b/spec/models/status_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Status, type: :model do
diff --git a/spec/models/status_stat_spec.rb b/spec/models/status_stat_spec.rb
index af1a6f288..749ca097d 100644
--- a/spec/models/status_stat_spec.rb
+++ b/spec/models/status_stat_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe StatusStat, type: :model do
diff --git a/spec/models/status_trend_spec.rb b/spec/models/status_trend_spec.rb
index 6b82204a6..9678b838a 100644
--- a/spec/models/status_trend_spec.rb
+++ b/spec/models/status_trend_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe StatusTrend, type: :model do
diff --git a/spec/models/system_key_spec.rb b/spec/models/system_key_spec.rb
index 86f07f964..a4e8b7784 100644
--- a/spec/models/system_key_spec.rb
+++ b/spec/models/system_key_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe SystemKey, type: :model do
diff --git a/spec/models/tag_feed_spec.rb b/spec/models/tag_feed_spec.rb
index 819fe3765..a498bcf46 100644
--- a/spec/models/tag_feed_spec.rb
+++ b/spec/models/tag_feed_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe TagFeed, type: :service do
diff --git a/spec/models/tag_follow_spec.rb b/spec/models/tag_follow_spec.rb
index 50c04d2e4..88409bb28 100644
--- a/spec/models/tag_follow_spec.rb
+++ b/spec/models/tag_follow_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe TagFollow, type: :model do
diff --git a/spec/models/trends/statuses_spec.rb b/spec/models/trends/statuses_spec.rb
index 98a8c7264..29a20a595 100644
--- a/spec/models/trends/statuses_spec.rb
+++ b/spec/models/trends/statuses_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Trends::Statuses do
diff --git a/spec/models/trends/tags_spec.rb b/spec/models/trends/tags_spec.rb
index f48c73503..a9473e15c 100644
--- a/spec/models/trends/tags_spec.rb
+++ b/spec/models/trends/tags_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Trends::Tags do
diff --git a/spec/models/unavailable_domain_spec.rb b/spec/models/unavailable_domain_spec.rb
index 3f2621034..5469ff693 100644
--- a/spec/models/unavailable_domain_spec.rb
+++ b/spec/models/unavailable_domain_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe UnavailableDomain, type: :model do
diff --git a/spec/models/user_invite_request_spec.rb b/spec/models/user_invite_request_spec.rb
index 1be38d8a4..95e128439 100644
--- a/spec/models/user_invite_request_spec.rb
+++ b/spec/models/user_invite_request_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe UserInviteRequest, type: :model do
diff --git a/spec/models/user_role_spec.rb b/spec/models/user_role_spec.rb
index 52a8622f9..97456c106 100644
--- a/spec/models/user_role_spec.rb
+++ b/spec/models/user_role_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe UserRole, type: :model do
diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb
index 9dfd6678a..3e7b59f17 100644
--- a/spec/models/user_spec.rb
+++ b/spec/models/user_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
require 'devise_two_factor/spec_helpers'
diff --git a/spec/models/web/push_subscription_spec.rb b/spec/models/web/push_subscription_spec.rb
index a5c34f4ed..e925e4c4c 100644
--- a/spec/models/web/push_subscription_spec.rb
+++ b/spec/models/web/push_subscription_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Web::PushSubscription, type: :model do
diff --git a/spec/models/web/setting_spec.rb b/spec/models/web/setting_spec.rb
index 6657d4030..b7ff3c868 100644
--- a/spec/models/web/setting_spec.rb
+++ b/spec/models/web/setting_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Web::Setting, type: :model do
diff --git a/spec/models/webauthn_credentials_spec.rb b/spec/models/webauthn_credentials_spec.rb
index e070a6b60..1a2a2f909 100644
--- a/spec/models/webauthn_credentials_spec.rb
+++ b/spec/models/webauthn_credentials_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe WebauthnCredential, type: :model do
diff --git a/spec/models/webhook_spec.rb b/spec/models/webhook_spec.rb
index 60c3d9524..fcf3dd14f 100644
--- a/spec/models/webhook_spec.rb
+++ b/spec/models/webhook_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Webhook, type: :model do
diff --git a/spec/presenters/instance_presenter_spec.rb b/spec/presenters/instance_presenter_spec.rb
index a451b5cba..29170a79a 100644
--- a/spec/presenters/instance_presenter_spec.rb
+++ b/spec/presenters/instance_presenter_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe InstancePresenter do
diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb
index 9a14fc3b1..faae02df0 100644
--- a/spec/rails_helper.rb
+++ b/spec/rails_helper.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
ENV['RAILS_ENV'] ||= 'test'
require File.expand_path('../config/environment', __dir__)
diff --git a/spec/requests/catch_all_route_request_spec.rb b/spec/requests/catch_all_route_request_spec.rb
index dcfc1bf4b..e600bedfe 100644
--- a/spec/requests/catch_all_route_request_spec.rb
+++ b/spec/requests/catch_all_route_request_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe 'The catch all route' do
diff --git a/spec/requests/host_meta_request_spec.rb b/spec/requests/host_meta_request_spec.rb
index 60153ba8c..ec26ecba7 100644
--- a/spec/requests/host_meta_request_spec.rb
+++ b/spec/requests/host_meta_request_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe 'The host_meta route' do
diff --git a/spec/requests/webfinger_request_spec.rb b/spec/requests/webfinger_request_spec.rb
index 209fda72a..68a1478be 100644
--- a/spec/requests/webfinger_request_spec.rb
+++ b/spec/requests/webfinger_request_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe 'The webfinger route' do
diff --git a/spec/routing/accounts_routing_spec.rb b/spec/routing/accounts_routing_spec.rb
index 3f0e9b3e9..8b2c124fd 100644
--- a/spec/routing/accounts_routing_spec.rb
+++ b/spec/routing/accounts_routing_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe 'Routes under accounts/' do
diff --git a/spec/routing/well_known_routes_spec.rb b/spec/routing/well_known_routes_spec.rb
index 747463351..8cf08c13c 100644
--- a/spec/routing/well_known_routes_spec.rb
+++ b/spec/routing/well_known_routes_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe 'Well Known routes' do
diff --git a/spec/services/account_search_service_spec.rb b/spec/services/account_search_service_spec.rb
index 45e19d1ef..bb819bb6c 100644
--- a/spec/services/account_search_service_spec.rb
+++ b/spec/services/account_search_service_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe AccountSearchService, type: :service do
diff --git a/spec/services/account_statuses_cleanup_service_spec.rb b/spec/services/account_statuses_cleanup_service_spec.rb
index a30e14ab6..e83063f73 100644
--- a/spec/services/account_statuses_cleanup_service_spec.rb
+++ b/spec/services/account_statuses_cleanup_service_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe AccountStatusesCleanupService, type: :service do
diff --git a/spec/services/activitypub/fetch_featured_collection_service_spec.rb b/spec/services/activitypub/fetch_featured_collection_service_spec.rb
index d9266ffc2..59d332599 100644
--- a/spec/services/activitypub/fetch_featured_collection_service_spec.rb
+++ b/spec/services/activitypub/fetch_featured_collection_service_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe ActivityPub::FetchFeaturedCollectionService, type: :service do
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 4f828bacc..071e4d92d 100644
--- a/spec/services/activitypub/fetch_featured_tags_collection_service_spec.rb
+++ b/spec/services/activitypub/fetch_featured_tags_collection_service_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe ActivityPub::FetchFeaturedTagsCollectionService, type: :service do
diff --git a/spec/services/activitypub/fetch_remote_account_service_spec.rb b/spec/services/activitypub/fetch_remote_account_service_spec.rb
index ec6f1f41d..868bc2a58 100644
--- a/spec/services/activitypub/fetch_remote_account_service_spec.rb
+++ b/spec/services/activitypub/fetch_remote_account_service_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe ActivityPub::FetchRemoteAccountService, type: :service do
diff --git a/spec/services/activitypub/fetch_remote_actor_service_spec.rb b/spec/services/activitypub/fetch_remote_actor_service_spec.rb
index 20117c66d..a72c6941e 100644
--- a/spec/services/activitypub/fetch_remote_actor_service_spec.rb
+++ b/spec/services/activitypub/fetch_remote_actor_service_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe ActivityPub::FetchRemoteActorService, type: :service do
diff --git a/spec/services/activitypub/fetch_remote_key_service_spec.rb b/spec/services/activitypub/fetch_remote_key_service_spec.rb
index 3186c4270..0ec0c2736 100644
--- a/spec/services/activitypub/fetch_remote_key_service_spec.rb
+++ b/spec/services/activitypub/fetch_remote_key_service_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe ActivityPub::FetchRemoteKeyService, type: :service do
diff --git a/spec/services/activitypub/fetch_remote_status_service_spec.rb b/spec/services/activitypub/fetch_remote_status_service_spec.rb
index 6e47392b3..1c39db21f 100644
--- a/spec/services/activitypub/fetch_remote_status_service_spec.rb
+++ b/spec/services/activitypub/fetch_remote_status_service_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe ActivityPub::FetchRemoteStatusService, type: :service do
diff --git a/spec/services/activitypub/fetch_replies_service_spec.rb b/spec/services/activitypub/fetch_replies_service_spec.rb
index 0231a5e9a..bf8e29676 100644
--- a/spec/services/activitypub/fetch_replies_service_spec.rb
+++ b/spec/services/activitypub/fetch_replies_service_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe ActivityPub::FetchRepliesService, type: :service do
diff --git a/spec/services/activitypub/process_account_service_spec.rb b/spec/services/activitypub/process_account_service_spec.rb
index 78282e453..491b8ed5a 100644
--- a/spec/services/activitypub/process_account_service_spec.rb
+++ b/spec/services/activitypub/process_account_service_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe ActivityPub::ProcessAccountService, type: :service do
diff --git a/spec/services/activitypub/process_collection_service_spec.rb b/spec/services/activitypub/process_collection_service_spec.rb
index c7d0bb92a..1433d0c50 100644
--- a/spec/services/activitypub/process_collection_service_spec.rb
+++ b/spec/services/activitypub/process_collection_service_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe ActivityPub::ProcessCollectionService, type: :service do
diff --git a/spec/services/activitypub/process_status_update_service_spec.rb b/spec/services/activitypub/process_status_update_service_spec.rb
index c8aa56def..e9f23b9cf 100644
--- a/spec/services/activitypub/process_status_update_service_spec.rb
+++ b/spec/services/activitypub/process_status_update_service_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
def poll_option_json(name, votes)
diff --git a/spec/services/activitypub/synchronize_followers_service_spec.rb b/spec/services/activitypub/synchronize_followers_service_spec.rb
index 0e829a302..c9a513e24 100644
--- a/spec/services/activitypub/synchronize_followers_service_spec.rb
+++ b/spec/services/activitypub/synchronize_followers_service_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe ActivityPub::SynchronizeFollowersService, type: :service do
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 9cca82bff..b75f92372 100644
--- a/spec/services/after_block_domain_from_account_service_spec.rb
+++ b/spec/services/after_block_domain_from_account_service_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe AfterBlockDomainFromAccountService, type: :service do
diff --git a/spec/services/after_block_service_spec.rb b/spec/services/after_block_service_spec.rb
index 337766d06..d81bba1d8 100644
--- a/spec/services/after_block_service_spec.rb
+++ b/spec/services/after_block_service_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe AfterBlockService, type: :service do
diff --git a/spec/services/app_sign_up_service_spec.rb b/spec/services/app_sign_up_service_spec.rb
index 10da07dcf..253230496 100644
--- a/spec/services/app_sign_up_service_spec.rb
+++ b/spec/services/app_sign_up_service_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe AppSignUpService, type: :service do
diff --git a/spec/services/authorize_follow_service_spec.rb b/spec/services/authorize_follow_service_spec.rb
index 8f8e44ec7..63d9e2a0f 100644
--- a/spec/services/authorize_follow_service_spec.rb
+++ b/spec/services/authorize_follow_service_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe AuthorizeFollowService, type: :service do
diff --git a/spec/services/batched_remove_status_service_spec.rb b/spec/services/batched_remove_status_service_spec.rb
index 920edeb13..9bedf3744 100644
--- a/spec/services/batched_remove_status_service_spec.rb
+++ b/spec/services/batched_remove_status_service_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe BatchedRemoveStatusService, type: :service do
diff --git a/spec/services/block_domain_service_spec.rb b/spec/services/block_domain_service_spec.rb
index 56b3a5ad1..0ab97b8ce 100644
--- a/spec/services/block_domain_service_spec.rb
+++ b/spec/services/block_domain_service_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe BlockDomainService, type: :service do
diff --git a/spec/services/block_service_spec.rb b/spec/services/block_service_spec.rb
index 049644dbc..75f07f5ad 100644
--- a/spec/services/block_service_spec.rb
+++ b/spec/services/block_service_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe BlockService, type: :service do
diff --git a/spec/services/bootstrap_timeline_service_spec.rb b/spec/services/bootstrap_timeline_service_spec.rb
index 149f6e6df..670ac652f 100644
--- a/spec/services/bootstrap_timeline_service_spec.rb
+++ b/spec/services/bootstrap_timeline_service_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe BootstrapTimelineService, type: :service do
diff --git a/spec/services/clear_domain_media_service_spec.rb b/spec/services/clear_domain_media_service_spec.rb
index 993ba789e..987507579 100644
--- a/spec/services/clear_domain_media_service_spec.rb
+++ b/spec/services/clear_domain_media_service_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe ClearDomainMediaService, type: :service do
diff --git a/spec/services/delete_account_service_spec.rb b/spec/services/delete_account_service_spec.rb
index e5bfdd679..61e5c3c9b 100644
--- a/spec/services/delete_account_service_spec.rb
+++ b/spec/services/delete_account_service_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe DeleteAccountService, type: :service do
diff --git a/spec/services/fan_out_on_write_service_spec.rb b/spec/services/fan_out_on_write_service_spec.rb
index d09750dd2..3b554f9ea 100644
--- a/spec/services/fan_out_on_write_service_spec.rb
+++ b/spec/services/fan_out_on_write_service_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe FanOutOnWriteService, type: :service do
diff --git a/spec/services/favourite_service_spec.rb b/spec/services/favourite_service_spec.rb
index 4f621200a..613ae203e 100644
--- a/spec/services/favourite_service_spec.rb
+++ b/spec/services/favourite_service_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe FavouriteService, type: :service do
diff --git a/spec/services/fetch_link_card_service_spec.rb b/spec/services/fetch_link_card_service_spec.rb
index 458473c39..d79ab7a43 100644
--- a/spec/services/fetch_link_card_service_spec.rb
+++ b/spec/services/fetch_link_card_service_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe FetchLinkCardService, type: :service do
diff --git a/spec/services/fetch_remote_status_service_spec.rb b/spec/services/fetch_remote_status_service_spec.rb
index ace520b8f..694a75dc2 100644
--- a/spec/services/fetch_remote_status_service_spec.rb
+++ b/spec/services/fetch_remote_status_service_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe FetchRemoteStatusService, type: :service do
diff --git a/spec/services/fetch_resource_service_spec.rb b/spec/services/fetch_resource_service_spec.rb
index 226c98d70..da7e42351 100644
--- a/spec/services/fetch_resource_service_spec.rb
+++ b/spec/services/fetch_resource_service_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe FetchResourceService, type: :service do
diff --git a/spec/services/follow_service_spec.rb b/spec/services/follow_service_spec.rb
index f95d59440..67a8b2c54 100644
--- a/spec/services/follow_service_spec.rb
+++ b/spec/services/follow_service_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe FollowService, type: :service do
diff --git a/spec/services/import_service_spec.rb b/spec/services/import_service_spec.rb
index 4a517fb93..f081f2d9d 100644
--- a/spec/services/import_service_spec.rb
+++ b/spec/services/import_service_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe ImportService, type: :service do
diff --git a/spec/services/mute_service_spec.rb b/spec/services/mute_service_spec.rb
index 57d8c41de..50f74ff27 100644
--- a/spec/services/mute_service_spec.rb
+++ b/spec/services/mute_service_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe MuteService, type: :service do
diff --git a/spec/services/notify_service_spec.rb b/spec/services/notify_service_spec.rb
index 294c31b04..c58cebbfb 100644
--- a/spec/services/notify_service_spec.rb
+++ b/spec/services/notify_service_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe NotifyService, type: :service do
diff --git a/spec/services/post_status_service_spec.rb b/spec/services/post_status_service_spec.rb
index c34f2393a..33153c3d0 100644
--- a/spec/services/post_status_service_spec.rb
+++ b/spec/services/post_status_service_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe PostStatusService, type: :service do
diff --git a/spec/services/process_mentions_service_spec.rb b/spec/services/process_mentions_service_spec.rb
index 79ccfa322..adc45c60a 100644
--- a/spec/services/process_mentions_service_spec.rb
+++ b/spec/services/process_mentions_service_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe ProcessMentionsService, type: :service do
diff --git a/spec/services/purge_domain_service_spec.rb b/spec/services/purge_domain_service_spec.rb
index 7d8969ee8..310affa5e 100644
--- a/spec/services/purge_domain_service_spec.rb
+++ b/spec/services/purge_domain_service_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe PurgeDomainService, type: :service do
diff --git a/spec/services/reblog_service_spec.rb b/spec/services/reblog_service_spec.rb
index e2ac0154c..c00472229 100644
--- a/spec/services/reblog_service_spec.rb
+++ b/spec/services/reblog_service_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe ReblogService, type: :service do
diff --git a/spec/services/reject_follow_service_spec.rb b/spec/services/reject_follow_service_spec.rb
index 97b7412b9..be9363d84 100644
--- a/spec/services/reject_follow_service_spec.rb
+++ b/spec/services/reject_follow_service_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe RejectFollowService, type: :service do
diff --git a/spec/services/remove_from_follwers_service_spec.rb b/spec/services/remove_from_follwers_service_spec.rb
index 782f859e2..21cea2e4f 100644
--- a/spec/services/remove_from_follwers_service_spec.rb
+++ b/spec/services/remove_from_follwers_service_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe RemoveFromFollowersService, type: :service do
diff --git a/spec/services/remove_status_service_spec.rb b/spec/services/remove_status_service_spec.rb
index e253052f3..a836109a0 100644
--- a/spec/services/remove_status_service_spec.rb
+++ b/spec/services/remove_status_service_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe RemoveStatusService, type: :service do
diff --git a/spec/services/report_service_spec.rb b/spec/services/report_service_spec.rb
index c3a3fddf8..9d81bd971 100644
--- a/spec/services/report_service_spec.rb
+++ b/spec/services/report_service_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe ReportService, type: :service do
diff --git a/spec/services/resolve_account_service_spec.rb b/spec/services/resolve_account_service_spec.rb
index 02869f8c8..3ce1f7f2b 100644
--- a/spec/services/resolve_account_service_spec.rb
+++ b/spec/services/resolve_account_service_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe ResolveAccountService, type: :service do
diff --git a/spec/services/suspend_account_service_spec.rb b/spec/services/suspend_account_service_spec.rb
index 5701090b3..4489bfed5 100644
--- a/spec/services/suspend_account_service_spec.rb
+++ b/spec/services/suspend_account_service_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe SuspendAccountService, type: :service do
diff --git a/spec/services/unallow_domain_service_spec.rb b/spec/services/unallow_domain_service_spec.rb
index ae7d00c7d..48e310a9d 100644
--- a/spec/services/unallow_domain_service_spec.rb
+++ b/spec/services/unallow_domain_service_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe UnallowDomainService, type: :service do
diff --git a/spec/services/unblock_service_spec.rb b/spec/services/unblock_service_spec.rb
index bd24005f6..8098d7e6d 100644
--- a/spec/services/unblock_service_spec.rb
+++ b/spec/services/unblock_service_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe UnblockService, type: :service do
diff --git a/spec/services/unfollow_service_spec.rb b/spec/services/unfollow_service_spec.rb
index 55969bef9..a12f01fa5 100644
--- a/spec/services/unfollow_service_spec.rb
+++ b/spec/services/unfollow_service_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe UnfollowService, type: :service do
diff --git a/spec/services/unmute_service_spec.rb b/spec/services/unmute_service_spec.rb
index 8463eb283..2edb6cfc2 100644
--- a/spec/services/unmute_service_spec.rb
+++ b/spec/services/unmute_service_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe UnmuteService, type: :service do
diff --git a/spec/services/unsuspend_account_service_spec.rb b/spec/services/unsuspend_account_service_spec.rb
index 667507469..5d7012093 100644
--- a/spec/services/unsuspend_account_service_spec.rb
+++ b/spec/services/unsuspend_account_service_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe UnsuspendAccountService, type: :service do
diff --git a/spec/services/update_account_service_spec.rb b/spec/services/update_account_service_spec.rb
index c2dc791e4..a711a8ae7 100644
--- a/spec/services/update_account_service_spec.rb
+++ b/spec/services/update_account_service_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe UpdateAccountService, type: :service do
diff --git a/spec/services/update_status_service_spec.rb b/spec/services/update_status_service_spec.rb
index a7364ca8b..e52a0e52b 100644
--- a/spec/services/update_status_service_spec.rb
+++ b/spec/services/update_status_service_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe UpdateStatusService, type: :service do
diff --git a/spec/services/verify_link_service_spec.rb b/spec/services/verify_link_service_spec.rb
index 8f65f3a84..ea9ccc3fc 100644
--- a/spec/services/verify_link_service_spec.rb
+++ b/spec/services/verify_link_service_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe VerifyLinkService, type: :service do
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index 97b8d83c5..ddc872fc8 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
GC.disable
if ENV['DISABLE_SIMPLECOV'] != 'true'
diff --git a/spec/support/matchers/json/match_json_schema.rb b/spec/support/matchers/json/match_json_schema.rb
index 5d9c9a618..3a275199e 100644
--- a/spec/support/matchers/json/match_json_schema.rb
+++ b/spec/support/matchers/json/match_json_schema.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
RSpec::Matchers.define :match_json_schema do |schema|
match do |input_json|
schema_path = Rails.root.join('spec', 'support', 'schema', "#{schema}.json").to_s
diff --git a/spec/support/matchers/model/model_have_error_on_field.rb b/spec/support/matchers/model/model_have_error_on_field.rb
index d85db2fca..21632b574 100644
--- a/spec/support/matchers/model/model_have_error_on_field.rb
+++ b/spec/support/matchers/model/model_have_error_on_field.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
RSpec::Matchers.define :model_have_error_on_field do |expected|
match do |record|
record.valid? if record.errors.empty?
diff --git a/spec/workers/activitypub/distribute_poll_update_worker_spec.rb b/spec/workers/activitypub/distribute_poll_update_worker_spec.rb
index d68a695b7..947acab3b 100644
--- a/spec/workers/activitypub/distribute_poll_update_worker_spec.rb
+++ b/spec/workers/activitypub/distribute_poll_update_worker_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe ActivityPub::DistributePollUpdateWorker do
diff --git a/spec/workers/activitypub/distribution_worker_spec.rb b/spec/workers/activitypub/distribution_worker_spec.rb
index 7f63e197b..06d6ac738 100644
--- a/spec/workers/activitypub/distribution_worker_spec.rb
+++ b/spec/workers/activitypub/distribution_worker_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe ActivityPub::DistributionWorker do
diff --git a/spec/workers/activitypub/move_distribution_worker_spec.rb b/spec/workers/activitypub/move_distribution_worker_spec.rb
index 482fa9db4..4df6b2f16 100644
--- a/spec/workers/activitypub/move_distribution_worker_spec.rb
+++ b/spec/workers/activitypub/move_distribution_worker_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe ActivityPub::MoveDistributionWorker do
diff --git a/spec/workers/activitypub/processing_worker_spec.rb b/spec/workers/activitypub/processing_worker_spec.rb
index b42c0bdbc..6b57f16a9 100644
--- a/spec/workers/activitypub/processing_worker_spec.rb
+++ b/spec/workers/activitypub/processing_worker_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe ActivityPub::ProcessingWorker do
diff --git a/spec/workers/activitypub/status_update_distribution_worker_spec.rb b/spec/workers/activitypub/status_update_distribution_worker_spec.rb
index c014c6790..cf55a461d 100644
--- a/spec/workers/activitypub/status_update_distribution_worker_spec.rb
+++ b/spec/workers/activitypub/status_update_distribution_worker_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe ActivityPub::StatusUpdateDistributionWorker do
diff --git a/spec/workers/activitypub/update_distribution_worker_spec.rb b/spec/workers/activitypub/update_distribution_worker_spec.rb
index 0e057fd0b..7b1e6ff54 100644
--- a/spec/workers/activitypub/update_distribution_worker_spec.rb
+++ b/spec/workers/activitypub/update_distribution_worker_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe ActivityPub::UpdateDistributionWorker do
diff --git a/spec/workers/scheduler/accounts_statuses_cleanup_scheduler_spec.rb b/spec/workers/scheduler/accounts_statuses_cleanup_scheduler_spec.rb
index a5dfed369..b977bc1fb 100644
--- a/spec/workers/scheduler/accounts_statuses_cleanup_scheduler_spec.rb
+++ b/spec/workers/scheduler/accounts_statuses_cleanup_scheduler_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe Scheduler::AccountsStatusesCleanupScheduler do
diff --git a/spec/workers/scheduler/user_cleanup_scheduler_spec.rb b/spec/workers/scheduler/user_cleanup_scheduler_spec.rb
index da99f10f9..990979500 100644
--- a/spec/workers/scheduler/user_cleanup_scheduler_spec.rb
+++ b/spec/workers/scheduler/user_cleanup_scheduler_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'rails_helper'
describe Scheduler::UserCleanupScheduler do
--
cgit
From 3a6451c867595fd58998ee1706589b15a69d993b Mon Sep 17 00:00:00 2001
From: Claire
Date: Fri, 3 Mar 2023 20:19:29 +0100
Subject: Add support for incoming rich text (#23913)
---
app/javascript/styles/application.scss | 1 +
app/javascript/styles/mastodon/rich_text.scss | 64 +++++++++++++++++++++++++++
lib/sanitize_ext/sanitize_config.rb | 19 +++-----
spec/lib/sanitize_config_spec.rb | 28 ++++++------
4 files changed, 85 insertions(+), 27 deletions(-)
create mode 100644 app/javascript/styles/mastodon/rich_text.scss
(limited to 'spec/lib')
diff --git a/app/javascript/styles/application.scss b/app/javascript/styles/application.scss
index 81a040108..1b2969c23 100644
--- a/app/javascript/styles/application.scss
+++ b/app/javascript/styles/application.scss
@@ -23,3 +23,4 @@
@import 'mastodon/dashboard';
@import 'mastodon/rtl';
@import 'mastodon/accessibility';
+@import 'mastodon/rich_text';
diff --git a/app/javascript/styles/mastodon/rich_text.scss b/app/javascript/styles/mastodon/rich_text.scss
new file mode 100644
index 000000000..35901984b
--- /dev/null
+++ b/app/javascript/styles/mastodon/rich_text.scss
@@ -0,0 +1,64 @@
+.status__content__text,
+.e-content,
+.reply-indicator__content {
+ pre,
+ blockquote {
+ margin-bottom: 20px;
+ white-space: pre-wrap;
+ unicode-bidi: plaintext;
+
+ &:last-child {
+ margin-bottom: 0;
+ }
+ }
+
+ blockquote {
+ padding-left: 10px;
+ border-left: 3px solid $darker-text-color;
+ color: $darker-text-color;
+ white-space: normal;
+
+ p:last-child {
+ margin-bottom: 0;
+ }
+ }
+
+ & > ul,
+ & > ol {
+ margin-bottom: 20px;
+ }
+
+ b,
+ strong {
+ font-weight: 700;
+ }
+
+ em,
+ i {
+ font-style: italic;
+ }
+
+ ul,
+ ol {
+ margin-left: 2em;
+
+ p {
+ margin: 0;
+ }
+ }
+
+ ul {
+ list-style-type: disc;
+ }
+
+ ol {
+ list-style-type: decimal;
+ }
+}
+
+.reply-indicator__content {
+ blockquote {
+ border-left-color: $inverted-text-color;
+ color: $inverted-text-color;
+ }
+}
diff --git a/lib/sanitize_ext/sanitize_config.rb b/lib/sanitize_ext/sanitize_config.rb
index dc39e9c90..9cc500c36 100644
--- a/lib/sanitize_ext/sanitize_config.rb
+++ b/lib/sanitize_ext/sanitize_config.rb
@@ -51,29 +51,22 @@ class Sanitize
end
UNSUPPORTED_ELEMENTS_TRANSFORMER = lambda do |env|
- return unless %w(h1 h2 h3 h4 h5 h6 blockquote pre ul ol li).include?(env[:node_name])
+ return unless %w(h1 h2 h3 h4 h5 h6).include?(env[:node_name])
current_node = env[:node]
- case env[:node_name]
- when 'li'
- current_node.traverse do |node|
- next unless %w(p ul ol li).include?(node.name)
-
- node.add_next_sibling(' ') if node.next_sibling
- node.replace(node.children) unless node.text?
- end
- else
- current_node.name = 'p'
- end
+ current_node.name = 'strong'
+ current_node.wrap('')
end
MASTODON_STRICT ||= freeze_config(
- elements: %w(p br span a),
+ elements: %w(p br span a del pre blockquote code b strong u i em ul ol li),
attributes: {
'a' => %w(href rel class),
'span' => %w(class),
+ 'ol' => %w(start reversed),
+ 'li' => %w(value),
},
add_attributes: {
diff --git a/spec/lib/sanitize_config_spec.rb b/spec/lib/sanitize_config_spec.rb
index c9543ceb0..a01122bed 100644
--- a/spec/lib/sanitize_config_spec.rb
+++ b/spec/lib/sanitize_config_spec.rb
@@ -6,24 +6,16 @@ describe Sanitize::Config do
describe '::MASTODON_STRICT' do
subject { Sanitize::Config::MASTODON_STRICT }
- it 'converts h1 to p' do
- expect(Sanitize.fragment('
Foo
', subject)).to eq '
Foo
'
+ it 'converts h1 to p strong' do
+ expect(Sanitize.fragment('
Foo
', subject)).to eq '
Foo
'
end
- it 'converts ul to p' do
- expect(Sanitize.fragment('
Check out:
Foo
Bar
', subject)).to eq '
Check out:
Foo Bar
'
+ it 'keeps ul' do
+ expect(Sanitize.fragment('
Check out:
Foo
Bar
', subject)).to eq '
Check out:
Foo
Bar
'
end
- it 'converts p inside ul' do
- expect(Sanitize.fragment('
Foo
Bar
Baz
', subject)).to eq '
Foo Bar Baz
'
- end
-
- it 'converts ul inside ul' do
- expect(Sanitize.fragment('
Foo
Bar
Baz
', subject)).to eq '
Foo Bar Baz
'
- end
-
- it 'keep links in lists' do
- expect(Sanitize.fragment('
'
+ it 'keeps start and reversed attributes of ol' do
+ expect(Sanitize.fragment('
Check out:
Foo
Bar
', subject)).to eq '
Check out:
Foo
Bar
'
end
it 'removes a without href' do
@@ -45,5 +37,13 @@ describe Sanitize::Config do
it 'keeps a with href' do
expect(Sanitize.fragment('Test', subject)).to eq 'Test'
end
+
+ it 'removes a with unparsable href' do
+ expect(Sanitize.fragment('Test', subject)).to eq 'Test'
+ end
+
+ it 'keeps a with supported scheme and no host' do
+ expect(Sanitize.fragment('Test', subject)).to eq 'Test'
+ end
end
end
--
cgit
From 5a8c651e8f0252c7135042e79396f782361302d9 Mon Sep 17 00:00:00 2001
From: Christian Schmidt
Date: Fri, 3 Mar 2023 21:06:31 +0100
Subject: Only offer translation for supported languages (#23879)
---
.rubocop.yml | 4 +
.../mastodon/components/status_content.jsx | 4 +-
app/javascript/mastodon/initial_state.js | 2 -
app/lib/translation_service.rb | 4 +
app/lib/translation_service/deepl.rb | 46 +++++++---
app/lib/translation_service/libre_translate.rb | 38 +++++---
app/models/status.rb | 10 +++
app/serializers/initial_state_serializer.rb | 1 -
app/serializers/rest/status_serializer.rb | 6 +-
app/services/translate_status_service.rb | 2 +-
spec/lib/translation_service/deepl_spec.rb | 100 +++++++++++++++++++++
.../translation_service/libre_translate_spec.rb | 71 +++++++++++++++
spec/models/status_spec.rb | 79 ++++++++++++++++
13 files changed, 336 insertions(+), 31 deletions(-)
create mode 100644 spec/lib/translation_service/deepl_spec.rb
create mode 100644 spec/lib/translation_service/libre_translate_spec.rb
(limited to 'spec/lib')
diff --git a/.rubocop.yml b/.rubocop.yml
index 27d778edf..0a41c54b9 100644
--- a/.rubocop.yml
+++ b/.rubocop.yml
@@ -97,6 +97,10 @@ Rails/Exit:
- 'lib/mastodon/cli_helper.rb'
- 'lib/cli.rb'
+RSpec/FilePath:
+ CustomTransform:
+ DeepL: deepl
+
RSpec/NotToNot:
EnforcedStyle: to_not
diff --git a/app/javascript/mastodon/components/status_content.jsx b/app/javascript/mastodon/components/status_content.jsx
index a1c38171f..f9c9fe079 100644
--- a/app/javascript/mastodon/components/status_content.jsx
+++ b/app/javascript/mastodon/components/status_content.jsx
@@ -6,7 +6,7 @@ import { Link } from 'react-router-dom';
import classnames from 'classnames';
import PollContainer from 'mastodon/containers/poll_container';
import Icon from 'mastodon/components/icon';
-import { autoPlayGif, languages as preloadedLanguages, translationEnabled } from 'mastodon/initial_state';
+import { autoPlayGif, languages as preloadedLanguages } from 'mastodon/initial_state';
const MAX_HEIGHT = 706; // 22px * 32 (+ 2px padding at the top)
@@ -220,7 +220,7 @@ class StatusContent extends React.PureComponent {
const hidden = this.props.onExpandedToggle ? !this.props.expanded : this.state.hidden;
const renderReadMore = this.props.onClick && status.get('collapsed');
- const renderTranslate = translationEnabled && this.context.identity.signedIn && this.props.onTranslate && ['public', 'unlisted'].includes(status.get('visibility')) && status.get('contentHtml').length > 0 && status.get('language') !== null && intl.locale !== status.get('language');
+ const renderTranslate = this.props.onTranslate && status.get('translatable');
const content = { __html: status.get('translation') ? status.getIn(['translation', 'content']) : status.get('contentHtml') };
const spoilerContent = { __html: status.get('spoilerHtml') };
diff --git a/app/javascript/mastodon/initial_state.js b/app/javascript/mastodon/initial_state.js
index d04c4a42d..919e0fc28 100644
--- a/app/javascript/mastodon/initial_state.js
+++ b/app/javascript/mastodon/initial_state.js
@@ -80,7 +80,6 @@
* @property {boolean} use_blurhash
* @property {boolean=} use_pending_items
* @property {string} version
- * @property {boolean} translation_enabled
*/
/**
@@ -132,7 +131,6 @@ export const unfollowModal = getMeta('unfollow_modal');
export const useBlurhash = getMeta('use_blurhash');
export const usePendingItems = getMeta('use_pending_items');
export const version = getMeta('version');
-export const translationEnabled = getMeta('translation_enabled');
export const languages = initialState?.languages;
export const statusPageUrl = getMeta('status_page_url');
diff --git a/app/lib/translation_service.rb b/app/lib/translation_service.rb
index 285f30939..5ff93674a 100644
--- a/app/lib/translation_service.rb
+++ b/app/lib/translation_service.rb
@@ -21,6 +21,10 @@ class TranslationService
ENV['DEEPL_API_KEY'].present? || ENV['LIBRE_TRANSLATE_ENDPOINT'].present?
end
+ def supported?(_source_language, _target_language)
+ false
+ end
+
def translate(_text, _source_language, _target_language)
raise NotImplementedError
end
diff --git a/app/lib/translation_service/deepl.rb b/app/lib/translation_service/deepl.rb
index 151d33d90..deff95a1d 100644
--- a/app/lib/translation_service/deepl.rb
+++ b/app/lib/translation_service/deepl.rb
@@ -11,33 +11,53 @@ class TranslationService::DeepL < TranslationService
end
def translate(text, source_language, target_language)
- request(text, source_language, target_language).perform do |res|
+ form = { text: text, source_lang: source_language&.upcase, target_lang: target_language, tag_handling: 'html' }
+ request(:post, '/v2/translate', form: form) do |res|
+ transform_response(res.body_with_limit)
+ end
+ end
+
+ def supported?(source_language, target_language)
+ source_language.in?(languages('source')) && target_language.in?(languages('target'))
+ end
+
+ private
+
+ def languages(type)
+ Rails.cache.fetch("translation_service/deepl/languages/#{type}", expires_in: 7.days, race_condition_ttl: 1.minute) do
+ request(:get, "/v2/languages?type=#{type}") do |res|
+ # In DeepL, EN and PT are deprecated in favor of EN-GB/EN-US and PT-BR/PT-PT, so
+ # they are supported but not returned by the API.
+ extra = type == 'source' ? [nil] : %w(en pt)
+ languages = Oj.load(res.body_with_limit).map { |language| language['language'].downcase }
+
+ languages + extra
+ end
+ end
+ end
+
+ def request(verb, path, **options)
+ req = Request.new(verb, "#{base_url}#{path}", **options)
+ req.add_headers(Authorization: "DeepL-Auth-Key #{@api_key}")
+ req.perform do |res|
case res.code
when 429
raise TooManyRequestsError
when 456
raise QuotaExceededError
when 200...300
- transform_response(res.body_with_limit)
+ yield res
else
raise UnexpectedResponseError
end
end
end
- private
-
- def request(text, source_language, target_language)
- req = Request.new(:post, endpoint_url, form: { text: text, source_lang: source_language&.upcase, target_lang: target_language, tag_handling: 'html' })
- req.add_headers(Authorization: "DeepL-Auth-Key #{@api_key}")
- req
- end
-
- def endpoint_url
+ def base_url
if @plan == 'free'
- 'https://api-free.deepl.com/v2/translate'
+ 'https://api-free.deepl.com'
else
- 'https://api.deepl.com/v2/translate'
+ 'https://api.deepl.com'
end
end
diff --git a/app/lib/translation_service/libre_translate.rb b/app/lib/translation_service/libre_translate.rb
index 4ebe21e45..743e4d77f 100644
--- a/app/lib/translation_service/libre_translate.rb
+++ b/app/lib/translation_service/libre_translate.rb
@@ -9,29 +9,45 @@ class TranslationService::LibreTranslate < TranslationService
end
def translate(text, source_language, target_language)
- request(text, source_language, target_language).perform do |res|
+ body = Oj.dump(q: text, source: source_language.presence || 'auto', target: target_language, format: 'html', api_key: @api_key)
+ request(:post, '/translate', body: body) do |res|
+ transform_response(res.body_with_limit, source_language)
+ end
+ end
+
+ def supported?(source_language, target_language)
+ languages.key?(source_language) && languages[source_language].include?(target_language)
+ end
+
+ private
+
+ def languages
+ Rails.cache.fetch('translation_service/libre_translate/languages', expires_in: 7.days, race_condition_ttl: 1.minute) do
+ request(:get, '/languages') do |res|
+ languages = Oj.load(res.body_with_limit).to_h { |language| [language['code'], language['targets']] }
+ languages[nil] = languages.values.flatten.uniq
+ languages
+ end
+ end
+ end
+
+ def request(verb, path, **options)
+ req = Request.new(verb, "#{@base_url}#{path}", allow_local: true, **options)
+ req.add_headers('Content-Type': 'application/json')
+ req.perform do |res|
case res.code
when 429
raise TooManyRequestsError
when 403
raise QuotaExceededError
when 200...300
- transform_response(res.body_with_limit, source_language)
+ yield res
else
raise UnexpectedResponseError
end
end
end
- private
-
- def request(text, source_language, target_language)
- body = Oj.dump(q: text, source: source_language.presence || 'auto', target: target_language, format: 'html', api_key: @api_key)
- req = Request.new(:post, "#{@base_url}/translate", body: body, allow_local: true)
- req.add_headers('Content-Type': 'application/json')
- req
- end
-
def transform_response(str, source_language)
json = Oj.load(str, mode: :strict)
diff --git a/app/models/status.rb b/app/models/status.rb
index e7ea191a8..dd7ac2edb 100644
--- a/app/models/status.rb
+++ b/app/models/status.rb
@@ -232,6 +232,16 @@ class Status < ApplicationRecord
public_visibility? || unlisted_visibility?
end
+ def translatable?
+ translate_target_locale = I18n.locale.to_s.split(/[_-]/).first
+
+ distributable? &&
+ content.present? &&
+ language != translate_target_locale &&
+ TranslationService.configured? &&
+ TranslationService.configured.supported?(language, translate_target_locale)
+ end
+
alias sign? distributable?
def with_media?
diff --git a/app/serializers/initial_state_serializer.rb b/app/serializers/initial_state_serializer.rb
index 7905444e9..769ba653e 100644
--- a/app/serializers/initial_state_serializer.rb
+++ b/app/serializers/initial_state_serializer.rb
@@ -30,7 +30,6 @@ class InitialStateSerializer < ActiveModel::Serializer
timeline_preview: Setting.timeline_preview,
activity_api_enabled: Setting.activity_api_enabled,
single_user_mode: Rails.configuration.x.single_user_mode,
- translation_enabled: TranslationService.configured?,
trends_as_landing_page: Setting.trends_as_landing_page,
status_page_url: Setting.status_page_url,
}
diff --git a/app/serializers/rest/status_serializer.rb b/app/serializers/rest/status_serializer.rb
index e0b8f32a6..a422f5b25 100644
--- a/app/serializers/rest/status_serializer.rb
+++ b/app/serializers/rest/status_serializer.rb
@@ -4,7 +4,7 @@ class REST::StatusSerializer < ActiveModel::Serializer
include FormattingHelper
attributes :id, :created_at, :in_reply_to_id, :in_reply_to_account_id,
- :sensitive, :spoiler_text, :visibility, :language,
+ :sensitive, :spoiler_text, :visibility, :language, :translatable,
:uri, :url, :replies_count, :reblogs_count,
:favourites_count, :edited_at
@@ -50,6 +50,10 @@ class REST::StatusSerializer < ActiveModel::Serializer
object.account.user_shows_application? || (current_user? && current_user.account_id == object.account_id)
end
+ def translatable
+ current_user? && object.translatable?
+ end
+
def visibility
# This visibility is masked behind "private"
# to avoid API changes because there are no
diff --git a/app/services/translate_status_service.rb b/app/services/translate_status_service.rb
index 539a0d9db..92d8b62a0 100644
--- a/app/services/translate_status_service.rb
+++ b/app/services/translate_status_service.rb
@@ -6,7 +6,7 @@ class TranslateStatusService < BaseService
include FormattingHelper
def call(status, target_language)
- raise Mastodon::NotPermittedError unless status.public_visibility? || status.unlisted_visibility?
+ raise Mastodon::NotPermittedError unless status.translatable?
@status = status
@content = status_content_format(@status)
diff --git a/spec/lib/translation_service/deepl_spec.rb b/spec/lib/translation_service/deepl_spec.rb
new file mode 100644
index 000000000..aa2473186
--- /dev/null
+++ b/spec/lib/translation_service/deepl_spec.rb
@@ -0,0 +1,100 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe TranslationService::DeepL do
+ subject(:service) { described_class.new(plan, 'my-api-key') }
+
+ let(:plan) { 'advanced' }
+
+ before do
+ stub_request(:get, 'https://api.deepl.com/v2/languages?type=source').to_return(
+ body: '[{"language":"EN","name":"English"},{"language":"UK","name":"Ukrainian"}]'
+ )
+ stub_request(:get, 'https://api.deepl.com/v2/languages?type=target').to_return(
+ body: '[{"language":"EN-GB","name":"English (British)"},{"language":"ZH","name":"Chinese"}]'
+ )
+ end
+
+ describe '#supported?' do
+ it 'supports included languages as source and target languages' do
+ expect(service.supported?('uk', 'en')).to be true
+ end
+
+ it 'supports auto-detecting source language' do
+ expect(service.supported?(nil, 'en')).to be true
+ end
+
+ it 'supports "en" and "pt" as target languages though not included in language list' do
+ expect(service.supported?('uk', 'en')).to be true
+ expect(service.supported?('uk', 'pt')).to be true
+ end
+
+ it 'does not support non-included language as target language' do
+ expect(service.supported?('uk', 'nl')).to be false
+ end
+
+ it 'does not support non-included language as source language' do
+ expect(service.supported?('da', 'en')).to be false
+ end
+ end
+
+ describe '#translate' do
+ it 'returns translation with specified source language' do
+ stub_request(:post, 'https://api.deepl.com/v2/translate')
+ .with(body: 'text=Hasta+la+vista&source_lang=ES&target_lang=en&tag_handling=html')
+ .to_return(body: '{"translations":[{"detected_source_language":"ES","text":"See you soon"}]}')
+
+ translation = service.translate('Hasta la vista', 'es', 'en')
+ expect(translation.detected_source_language).to eq 'es'
+ expect(translation.provider).to eq 'DeepL.com'
+ expect(translation.text).to eq 'See you soon'
+ end
+
+ it 'returns translation with auto-detected source language' do
+ stub_request(:post, 'https://api.deepl.com/v2/translate')
+ .with(body: 'text=Guten+Tag&source_lang&target_lang=en&tag_handling=html')
+ .to_return(body: '{"translations":[{"detected_source_language":"DE","text":"Good Morning"}]}')
+
+ translation = service.translate('Guten Tag', nil, 'en')
+ expect(translation.detected_source_language).to eq 'de'
+ expect(translation.provider).to eq 'DeepL.com'
+ expect(translation.text).to eq 'Good Morning'
+ end
+ end
+
+ describe '#languages?' do
+ it 'returns source languages' do
+ expect(service.send(:languages, 'source')).to eq ['en', 'uk', nil]
+ end
+
+ it 'returns target languages' do
+ expect(service.send(:languages, 'target')).to eq %w(en-gb zh en pt)
+ end
+ end
+
+ describe '#request' do
+ before do
+ stub_request(:any, //)
+ # rubocop:disable Lint/EmptyBlock
+ service.send(:request, :get, '/v2/languages') { |res| }
+ # rubocop:enable Lint/EmptyBlock
+ end
+
+ it 'uses paid plan base URL' do
+ expect(a_request(:get, 'https://api.deepl.com/v2/languages')).to have_been_made.once
+ end
+
+ context 'with free plan' do
+ let(:plan) { 'free' }
+
+ it 'uses free plan base URL' do
+ expect(a_request(:get, 'https://api-free.deepl.com/v2/languages')).to have_been_made.once
+ end
+ end
+
+ it 'sends API key' do
+ expect(a_request(:get, 'https://api.deepl.com/v2/languages').with(headers: { Authorization: 'DeepL-Auth-Key my-api-key' })).to have_been_made.once
+ end
+ end
+end
diff --git a/spec/lib/translation_service/libre_translate_spec.rb b/spec/lib/translation_service/libre_translate_spec.rb
new file mode 100644
index 000000000..a6cb01884
--- /dev/null
+++ b/spec/lib/translation_service/libre_translate_spec.rb
@@ -0,0 +1,71 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe TranslationService::LibreTranslate do
+ subject(:service) { described_class.new('https://libretranslate.example.com', 'my-api-key') }
+
+ before do
+ stub_request(:get, 'https://libretranslate.example.com/languages').to_return(
+ body: '[{"code": "en","name": "English","targets": ["de","es"]},{"code": "da","name": "Danish","targets": ["en","de"]}]'
+ )
+ end
+
+ describe '#supported?' do
+ it 'supports included language pair' do
+ expect(service.supported?('en', 'de')).to be true
+ end
+
+ it 'does not support reversed language pair' do
+ expect(service.supported?('de', 'en')).to be false
+ end
+
+ it 'supports auto-detecting source language' do
+ expect(service.supported?(nil, 'de')).to be true
+ end
+
+ it 'does not support auto-detecting for unsupported target language' do
+ expect(service.supported?(nil, 'pt')).to be false
+ end
+ end
+
+ describe '#languages' do
+ subject(:languages) { service.send(:languages) }
+
+ it 'includes supported source languages' do
+ expect(languages.keys).to eq ['en', 'da', nil]
+ end
+
+ it 'includes supported target languages for source language' do
+ expect(languages['en']).to eq %w(de es)
+ end
+
+ it 'includes supported target languages for auto-detected language' do
+ expect(languages[nil]).to eq %w(de es en)
+ end
+ end
+
+ describe '#translate' do
+ it 'returns translation with specified source language' do
+ stub_request(:post, 'https://libretranslate.example.com/translate')
+ .with(body: '{"q":"Hasta la vista","source":"es","target":"en","format":"html","api_key":"my-api-key"}')
+ .to_return(body: '{"translatedText": "See you"}')
+
+ translation = service.translate('Hasta la vista', 'es', 'en')
+ expect(translation.detected_source_language).to eq 'es'
+ expect(translation.provider).to eq 'LibreTranslate'
+ expect(translation.text).to eq 'See you'
+ end
+
+ it 'returns translation with auto-detected source language' do
+ stub_request(:post, 'https://libretranslate.example.com/translate')
+ .with(body: '{"q":"Guten Morgen","source":"auto","target":"en","format":"html","api_key":"my-api-key"}')
+ .to_return(body: '{"detectedLanguage":{"confidence":92,"language":"de"},"translatedText":"Good morning"}')
+
+ translation = service.translate('Guten Morgen', nil, 'en')
+ expect(translation.detected_source_language).to be_nil
+ expect(translation.provider).to eq 'LibreTranslate'
+ expect(translation.text).to eq 'Good morning'
+ end
+ end
+end
diff --git a/spec/models/status_spec.rb b/spec/models/status_spec.rb
index 1e58c6d0d..1f6cfc796 100644
--- a/spec/models/status_spec.rb
+++ b/spec/models/status_spec.rb
@@ -114,6 +114,85 @@ RSpec.describe Status, type: :model do
end
end
+ describe '#translatable?' do
+ before do
+ allow(TranslationService).to receive(:configured?).and_return(true)
+ allow(TranslationService).to receive(:configured).and_return(TranslationService.new)
+ allow(TranslationService.configured).to receive(:supported?).with('es', 'en').and_return(true)
+
+ subject.language = 'es'
+ subject.visibility = :public
+ end
+
+ context 'all conditions are satisfied' do
+ it 'returns true' do
+ expect(subject.translatable?).to be true
+ end
+ end
+
+ context 'translation service is not configured' do
+ it 'returns false' do
+ allow(TranslationService).to receive(:configured?).and_return(false)
+ allow(TranslationService).to receive(:configured).and_raise(TranslationService::NotConfiguredError)
+ expect(subject.translatable?).to be false
+ end
+ end
+
+ context 'status language is nil' do
+ it 'returns true' do
+ subject.language = nil
+ allow(TranslationService.configured).to receive(:supported?).with(nil, 'en').and_return(true)
+ expect(subject.translatable?).to be true
+ end
+ end
+
+ context 'status language is same as default locale' do
+ it 'returns false' do
+ subject.language = I18n.locale
+ expect(subject.translatable?).to be false
+ end
+ end
+
+ context 'status language is unsupported' do
+ it 'returns false' do
+ subject.language = 'af'
+ allow(TranslationService.configured).to receive(:supported?).with('af', 'en').and_return(false)
+ expect(subject.translatable?).to be false
+ end
+ end
+
+ context 'default locale is unsupported' do
+ it 'returns false' do
+ allow(TranslationService.configured).to receive(:supported?).with('es', 'af').and_return(false)
+ I18n.with_locale('af') do
+ expect(subject.translatable?).to be false
+ end
+ end
+ end
+
+ context 'default locale has region' do
+ it 'returns true' do
+ I18n.with_locale('en-GB') do
+ expect(subject.translatable?).to be true
+ end
+ end
+ end
+
+ context 'status text is blank' do
+ it 'returns false' do
+ subject.text = ' '
+ expect(subject.translatable?).to be false
+ end
+ end
+
+ context 'status visiblity is hidden' do
+ it 'returns false' do
+ subject.visibility = 'limited'
+ expect(subject.translatable?).to be false
+ end
+ end
+ end
+
describe '#content' do
it 'returns the text of the status if it is not a reblog' do
expect(subject.content).to eql subject.text
--
cgit
From 684a970b3c7ce19ec419c4db52b67a3b0903f493 Mon Sep 17 00:00:00 2001
From: Christian Schmidt
Date: Wed, 8 Mar 2023 19:56:41 +0100
Subject: Unescape HTML entities (#24019)
---
app/lib/plain_text_formatter.rb | 6 +++-
spec/lib/plain_text_formatter_spec.rb | 61 ++++++++++++++++++++++++++++++++---
2 files changed, 61 insertions(+), 6 deletions(-)
(limited to 'spec/lib')
diff --git a/app/lib/plain_text_formatter.rb b/app/lib/plain_text_formatter.rb
index 08aa29696..6fa2bc5d2 100644
--- a/app/lib/plain_text_formatter.rb
+++ b/app/lib/plain_text_formatter.rb
@@ -18,7 +18,7 @@ class PlainTextFormatter
if local?
text
else
- strip_tags(insert_newlines).chomp
+ html_entities.decode(strip_tags(insert_newlines)).chomp
end
end
@@ -27,4 +27,8 @@ class PlainTextFormatter
def insert_newlines
text.gsub(NEWLINE_TAGS_RE) { |match| "#{match}\n" }
end
+
+ def html_entities
+ HTMLEntities.new
+ end
end
diff --git a/spec/lib/plain_text_formatter_spec.rb b/spec/lib/plain_text_formatter_spec.rb
index 4a0519aaf..80b3c331a 100644
--- a/spec/lib/plain_text_formatter_spec.rb
+++ b/spec/lib/plain_text_formatter_spec.rb
@@ -6,7 +6,7 @@ RSpec.describe PlainTextFormatter do
describe '#to_s' do
subject { described_class.new(status.text, status.local?).to_s }
- context 'given a post with local status' do
+ context 'when status is local' do
let(:status) { Fabricate(:status, text: '
a text by a nerd who uses an HTML tag in text
', uri: nil) }
it 'returns the raw text' do
@@ -14,12 +14,63 @@ RSpec.describe PlainTextFormatter do
end
end
- context 'given a post with remote status' do
+ context 'when status is remote' do
let(:remote_account) { Fabricate(:account, domain: 'remote.test', username: 'bob', url: 'https://remote.test/') }
- let(:status) { Fabricate(:status, account: remote_account, text: '
Hello
') }
- it 'returns tag-stripped text' do
- expect(subject).to eq 'Hello'
+ context 'when text contains inline HTML tags' do
+ let(:status) { Fabricate(:status, account: remote_account, text: 'Loremipsum') }
+
+ it 'strips the tags' do
+ expect(subject).to eq 'Lorem ipsum'
+ end
+ end
+
+ context 'when text contains
tags' do
+ let(:status) { Fabricate(:status, account: remote_account, text: '
Lorem
ipsum
') }
+
+ it 'inserts a newline' do
+ expect(subject).to eq "Lorem\nipsum"
+ end
+ end
+
+ context 'when text contains a single tag' do
+ let(:status) { Fabricate(:status, account: remote_account, text: 'Lorem ipsum') }
+
+ it 'inserts a newline' do
+ expect(subject).to eq "Lorem\nipsum"
+ end
+ end
+
+ context 'when text contains consecutive tag' do
+ let(:status) { Fabricate(:status, account: remote_account, text: 'Lorem
ipsum') }
+
+ it 'inserts a single newline' do
+ expect(subject).to eq "Lorem\nipsum"
+ end
+ end
+
+ context 'when text contains HTML entity' do
+ let(:status) { Fabricate(:status, account: remote_account, text: 'Lorem & ipsum ❤') }
+
+ it 'unescapes the entity' do
+ expect(subject).to eq 'Lorem & ipsum ❤'
+ end
+ end
+
+ context 'when text contains ipsum') }
+
+ it 'strips the tag and its contents' do
+ expect(subject).to eq 'Lorem ipsum'
+ end
+ end
+
+ context 'when text contains an HTML comment tags' do
+ let(:status) { Fabricate(:status, account: remote_account, text: 'Lorem ipsum') }
+
+ it 'strips the comment' do
+ expect(subject).to eq 'Lorem ipsum'
+ end
end
end
end
--
cgit
From 688287c59d526ef76089322a368789f5846c6ac3 Mon Sep 17 00:00:00 2001
From: Matt Jankowski
Date: Fri, 10 Mar 2023 07:33:30 -0500
Subject: Coverage improvement round-out following up previous work (#23987)
---
.rubocop_todo.yml | 1 +
.../activitypub/claims_controller_spec.rb | 19 ++++++++++
.../api/v2/instances_controller_spec.rb | 22 ++++++++++++
.../api/v2/suggestions_controller_spec.rb | 22 ++++++++++++
spec/controllers/auth/setup_controller_spec.rb | 25 +++++++++++++
spec/controllers/custom_css_controller_spec.rb | 14 ++++++++
.../filters/statuses_controller_spec.rb | 41 ++++++++++++++++++++++
spec/controllers/filters_controller_spec.rb | 27 ++++++++++++++
spec/controllers/health_controller_spec.rb | 14 ++++++++
spec/controllers/privacy_controller_spec.rb | 14 ++++++++
spec/helpers/statuses_helper_spec.rb | 28 ++++++++++++++-
spec/lib/importer/base_importer_spec.rb | 14 ++++++++
spec/lib/search_query_transformer_spec.rb | 18 ++++++++++
spec/models/admin/appeal_filter_spec.rb | 16 +++++++++
spec/models/form/admin_settings_spec.rb | 36 +++++++++++++++++++
.../models/form/status_filter_batch_action_spec.rb | 13 +++++++
spec/workers/verify_account_links_worker_spec.rb | 13 +++++++
17 files changed, 336 insertions(+), 1 deletion(-)
create mode 100644 spec/controllers/activitypub/claims_controller_spec.rb
create mode 100644 spec/controllers/api/v2/instances_controller_spec.rb
create mode 100644 spec/controllers/api/v2/suggestions_controller_spec.rb
create mode 100644 spec/controllers/auth/setup_controller_spec.rb
create mode 100644 spec/controllers/custom_css_controller_spec.rb
create mode 100644 spec/controllers/filters/statuses_controller_spec.rb
create mode 100644 spec/controllers/filters_controller_spec.rb
create mode 100644 spec/controllers/health_controller_spec.rb
create mode 100644 spec/controllers/privacy_controller_spec.rb
create mode 100644 spec/lib/importer/base_importer_spec.rb
create mode 100644 spec/lib/search_query_transformer_spec.rb
create mode 100644 spec/models/admin/appeal_filter_spec.rb
create mode 100644 spec/models/form/admin_settings_spec.rb
create mode 100644 spec/models/form/status_filter_batch_action_spec.rb
create mode 100644 spec/workers/verify_account_links_worker_spec.rb
(limited to 'spec/lib')
diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml
index 90e644856..0035478c4 100644
--- a/.rubocop_todo.yml
+++ b/.rubocop_todo.yml
@@ -661,6 +661,7 @@ RSpec/ExpectInHook:
RSpec/FilePath:
Exclude:
- 'spec/config/initializers/rack_attack_spec.rb'
+ - 'spec/controllers/activitypub/claims_controller_spec.rb'
- 'spec/controllers/activitypub/collections_controller_spec.rb'
- 'spec/controllers/activitypub/followers_synchronizations_controller_spec.rb'
- 'spec/controllers/activitypub/inboxes_controller_spec.rb'
diff --git a/spec/controllers/activitypub/claims_controller_spec.rb b/spec/controllers/activitypub/claims_controller_spec.rb
new file mode 100644
index 000000000..f00eeb732
--- /dev/null
+++ b/spec/controllers/activitypub/claims_controller_spec.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+describe ActivityPub::ClaimsController do
+ let(:account) { Fabricate(:account) }
+
+ describe 'POST #create' do
+ context 'without signature' do
+ before do
+ post :create, params: { account_username: account.username }, body: '{}'
+ end
+
+ it 'returns http not authorized' do
+ expect(response).to have_http_status(401)
+ end
+ end
+ end
+end
diff --git a/spec/controllers/api/v2/instances_controller_spec.rb b/spec/controllers/api/v2/instances_controller_spec.rb
new file mode 100644
index 000000000..b7206da0a
--- /dev/null
+++ b/spec/controllers/api/v2/instances_controller_spec.rb
@@ -0,0 +1,22 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+describe Api::V2::InstancesController do
+ render_views
+
+ let(:user) { Fabricate(:user) }
+ let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id) }
+
+ before do
+ allow(controller).to receive(:doorkeeper_token) { token }
+ end
+
+ describe 'GET #show' do
+ it 'returns http success' do
+ get :show
+
+ expect(response).to have_http_status(200)
+ end
+ end
+end
diff --git a/spec/controllers/api/v2/suggestions_controller_spec.rb b/spec/controllers/api/v2/suggestions_controller_spec.rb
new file mode 100644
index 000000000..5e6508bfd
--- /dev/null
+++ b/spec/controllers/api/v2/suggestions_controller_spec.rb
@@ -0,0 +1,22 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+describe Api::V2::SuggestionsController do
+ render_views
+
+ let(:user) { Fabricate(:user) }
+ let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'read') }
+
+ before do
+ allow(controller).to receive(:doorkeeper_token) { token }
+ end
+
+ describe 'GET #index' do
+ it 'returns http success' do
+ get :index
+
+ expect(response).to have_http_status(200)
+ end
+ end
+end
diff --git a/spec/controllers/auth/setup_controller_spec.rb b/spec/controllers/auth/setup_controller_spec.rb
new file mode 100644
index 000000000..75e42aaf9
--- /dev/null
+++ b/spec/controllers/auth/setup_controller_spec.rb
@@ -0,0 +1,25 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+describe Auth::SetupController do
+ render_views
+
+ describe 'GET #show' do
+ context 'with a signed out request' do
+ it 'returns http redirect' do
+ get :show
+ expect(response).to be_redirect
+ end
+ end
+
+ context 'with an unconfirmed signed in user' do
+ before { sign_in Fabricate(:user, confirmed_at: nil) }
+
+ it 'returns http success' do
+ get :show
+ expect(response).to have_http_status(200)
+ end
+ end
+ end
+end
diff --git a/spec/controllers/custom_css_controller_spec.rb b/spec/controllers/custom_css_controller_spec.rb
new file mode 100644
index 000000000..47fe6031f
--- /dev/null
+++ b/spec/controllers/custom_css_controller_spec.rb
@@ -0,0 +1,14 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+describe CustomCssController do
+ render_views
+
+ describe 'GET #show' do
+ it 'returns http success' do
+ get :show
+ expect(response).to have_http_status(200)
+ end
+ end
+end
diff --git a/spec/controllers/filters/statuses_controller_spec.rb b/spec/controllers/filters/statuses_controller_spec.rb
new file mode 100644
index 000000000..492361188
--- /dev/null
+++ b/spec/controllers/filters/statuses_controller_spec.rb
@@ -0,0 +1,41 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+describe Filters::StatusesController do
+ render_views
+
+ describe 'GET #index' do
+ let(:filter) { Fabricate(:custom_filter) }
+
+ context 'with signed out user' do
+ it 'redirects' do
+ get :index, params: { filter_id: filter }
+
+ expect(response).to be_redirect
+ end
+ end
+
+ context 'with a signed in user' do
+ context 'with the filter user signed in' do
+ before { sign_in(filter.account.user) }
+
+ it 'returns http success' do
+ get :index, params: { filter_id: filter }
+
+ expect(response).to have_http_status(200)
+ end
+ end
+
+ context 'with another user signed in' do
+ before { sign_in(Fabricate(:user)) }
+
+ it 'returns http not found' do
+ get :index, params: { filter_id: filter }
+
+ expect(response).to have_http_status(404)
+ end
+ end
+ end
+ end
+end
diff --git a/spec/controllers/filters_controller_spec.rb b/spec/controllers/filters_controller_spec.rb
new file mode 100644
index 000000000..f68f87ba7
--- /dev/null
+++ b/spec/controllers/filters_controller_spec.rb
@@ -0,0 +1,27 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+describe FiltersController do
+ render_views
+
+ describe 'GET #index' do
+ context 'with signed out user' do
+ it 'redirects' do
+ get :index
+
+ expect(response).to be_redirect
+ end
+ end
+
+ context 'with a signed in user' do
+ before { sign_in(Fabricate(:user)) }
+
+ it 'returns http success' do
+ get :index
+
+ expect(response).to have_http_status(200)
+ end
+ end
+ end
+end
diff --git a/spec/controllers/health_controller_spec.rb b/spec/controllers/health_controller_spec.rb
new file mode 100644
index 000000000..282b66419
--- /dev/null
+++ b/spec/controllers/health_controller_spec.rb
@@ -0,0 +1,14 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+describe HealthController do
+ render_views
+
+ describe 'GET #show' do
+ it 'returns http success' do
+ get :show
+ expect(response).to have_http_status(200)
+ end
+ end
+end
diff --git a/spec/controllers/privacy_controller_spec.rb b/spec/controllers/privacy_controller_spec.rb
new file mode 100644
index 000000000..c92c71ea6
--- /dev/null
+++ b/spec/controllers/privacy_controller_spec.rb
@@ -0,0 +1,14 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+describe PrivacyController do
+ render_views
+
+ describe 'GET #show' do
+ it 'returns http success' do
+ get :show
+ expect(response).to have_http_status(200)
+ end
+ end
+end
diff --git a/spec/helpers/statuses_helper_spec.rb b/spec/helpers/statuses_helper_spec.rb
index c8ca2ed32..105da7e1b 100644
--- a/spec/helpers/statuses_helper_spec.rb
+++ b/spec/helpers/statuses_helper_spec.rb
@@ -2,7 +2,33 @@
require 'rails_helper'
-RSpec.describe StatusesHelper, type: :helper do
+describe StatusesHelper do
+ describe 'status_text_summary' do
+ context 'with blank text' do
+ let(:status) { Status.new(spoiler_text: '') }
+
+ it 'returns immediately with nil' do
+ result = helper.status_text_summary(status)
+ expect(result).to be_nil
+ end
+ end
+
+ context 'with present text' do
+ let(:status) { Status.new(spoiler_text: 'SPOILERS!!!') }
+
+ it 'returns the content warning' do
+ result = helper.status_text_summary(status)
+ expect(result).to eq(I18n.t('statuses.content_warning', warning: 'SPOILERS!!!'))
+ end
+ end
+ end
+
+ def status_text_summary(status)
+ return if status.spoiler_text.blank?
+
+ I18n.t('statuses.content_warning', warning: status.spoiler_text)
+ end
+
describe 'link_to_newer' do
it 'returns a link to newer content' do
url = 'https://example.com'
diff --git a/spec/lib/importer/base_importer_spec.rb b/spec/lib/importer/base_importer_spec.rb
new file mode 100644
index 000000000..78e9a869b
--- /dev/null
+++ b/spec/lib/importer/base_importer_spec.rb
@@ -0,0 +1,14 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+describe Importer::BaseImporter do
+ describe 'import!' do
+ let(:pool) { Concurrent::FixedThreadPool.new(5) }
+ let(:importer) { described_class.new(batch_size: 123, executor: pool) }
+
+ it 'raises an error' do
+ expect { importer.import! }.to raise_error(NotImplementedError)
+ end
+ end
+end
diff --git a/spec/lib/search_query_transformer_spec.rb b/spec/lib/search_query_transformer_spec.rb
new file mode 100644
index 000000000..109533469
--- /dev/null
+++ b/spec/lib/search_query_transformer_spec.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+describe SearchQueryTransformer do
+ describe 'initialization' do
+ let(:parser) { SearchQueryParser.new.parse('query') }
+
+ it 'sets attributes' do
+ transformer = described_class.new.apply(parser)
+
+ expect(transformer.should_clauses.first).to be_a(SearchQueryTransformer::TermClause)
+ expect(transformer.must_clauses.first).to be_nil
+ expect(transformer.must_not_clauses.first).to be_nil
+ expect(transformer.filter_clauses.first).to be_nil
+ end
+ end
+end
diff --git a/spec/models/admin/appeal_filter_spec.rb b/spec/models/admin/appeal_filter_spec.rb
new file mode 100644
index 000000000..e840bc3bc
--- /dev/null
+++ b/spec/models/admin/appeal_filter_spec.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+describe Admin::AppealFilter do
+ describe '#results' do
+ let(:approved_appeal) { Fabricate(:appeal, approved_at: 10.days.ago) }
+ let(:not_approved_appeal) { Fabricate(:appeal, approved_at: nil) }
+
+ it 'returns filtered appeals' do
+ filter = described_class.new(status: 'approved')
+
+ expect(filter.results).to eq([approved_appeal])
+ end
+ end
+end
diff --git a/spec/models/form/admin_settings_spec.rb b/spec/models/form/admin_settings_spec.rb
new file mode 100644
index 000000000..0dc2d881a
--- /dev/null
+++ b/spec/models/form/admin_settings_spec.rb
@@ -0,0 +1,36 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+describe Form::AdminSettings do
+ describe 'validations' do
+ describe 'site_contact_username' do
+ context 'with no accounts' do
+ it 'is not valid' do
+ setting = described_class.new(site_contact_username: 'Test')
+ setting.valid?
+
+ expect(setting).to model_have_error_on_field(:site_contact_username)
+ end
+ end
+
+ context 'with an account' do
+ before { Fabricate(:account, username: 'Glorp') }
+
+ it 'is not valid when account doesnt match' do
+ setting = described_class.new(site_contact_username: 'Test')
+ setting.valid?
+
+ expect(setting).to model_have_error_on_field(:site_contact_username)
+ end
+
+ it 'is valid when account matches' do
+ setting = described_class.new(site_contact_username: 'Glorp')
+ setting.valid?
+
+ expect(setting).to_not model_have_error_on_field(:site_contact_username)
+ end
+ end
+ end
+ end
+end
diff --git a/spec/models/form/status_filter_batch_action_spec.rb b/spec/models/form/status_filter_batch_action_spec.rb
new file mode 100644
index 000000000..f06a11cc8
--- /dev/null
+++ b/spec/models/form/status_filter_batch_action_spec.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+describe Form::StatusFilterBatchAction do
+ describe '#save!' do
+ it 'does nothing if status_filter_ids is empty' do
+ batch_action = described_class.new(status_filter_ids: [])
+
+ expect(batch_action.save!).to be_nil
+ end
+ end
+end
diff --git a/spec/workers/verify_account_links_worker_spec.rb b/spec/workers/verify_account_links_worker_spec.rb
new file mode 100644
index 000000000..227591392
--- /dev/null
+++ b/spec/workers/verify_account_links_worker_spec.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+describe VerifyAccountLinksWorker do
+ let(:worker) { described_class.new }
+
+ describe 'perform' do
+ it 'runs without error for missing record' do
+ expect { worker.perform(nil) }.to_not raise_error
+ end
+ end
+end
--
cgit
From a471e1c48f4c9ec9e96832f51783b11407b67161 Mon Sep 17 00:00:00 2001
From: Matt Jankowski
Date: Tue, 14 Mar 2023 22:56:09 -0400
Subject: Add spec for the CLI `version` task (#23978)
---
spec/lib/mastodon/cli_spec.rb | 14 ++++++++++++++
1 file changed, 14 insertions(+)
create mode 100644 spec/lib/mastodon/cli_spec.rb
(limited to 'spec/lib')
diff --git a/spec/lib/mastodon/cli_spec.rb b/spec/lib/mastodon/cli_spec.rb
new file mode 100644
index 000000000..419f8b864
--- /dev/null
+++ b/spec/lib/mastodon/cli_spec.rb
@@ -0,0 +1,14 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+require 'cli'
+
+describe Mastodon::CLI do
+ describe 'version' do
+ it 'returns the Mastodon version' do
+ expect { described_class.new.invoke(:version) }.to output(
+ a_string_including(Mastodon::Version.to_s)
+ ).to_stdout
+ end
+ end
+end
--
cgit
From bd047acc356671727c112336bb237f979bba517d Mon Sep 17 00:00:00 2001
From: Christian Schmidt
Date: Thu, 16 Mar 2023 11:07:24 +0100
Subject: Replace `Status#translatable?` with language matrix in separate
endpoint (#24037)
---
.rubocop_todo.yml | 1 -
.../instances/translation_languages_controller.rb | 23 +++++++
app/javascript/mastodon/actions/server.js | 27 ++++++++
.../mastodon/components/status_content.jsx | 13 +++-
app/javascript/mastodon/features/ui/index.jsx | 3 +-
app/javascript/mastodon/reducers/server.js | 9 +++
app/lib/translation_service.rb | 4 +-
app/lib/translation_service/deepl.rb | 30 ++++----
app/lib/translation_service/libre_translate.rb | 18 ++---
app/models/status.rb | 10 ---
app/serializers/rest/status_serializer.rb | 6 +-
app/services/translate_status_service.rb | 16 ++++-
config/routes.rb | 1 +
.../translation_languages_controller_spec.rb | 31 +++++++++
.../v1/statuses/translations_controller_spec.rb | 3 +-
spec/lib/translation_service/deepl_spec.rb | 36 +++-------
.../translation_service/libre_translate_spec.rb | 31 ++-------
spec/models/status_spec.rb | 79 ----------------------
spec/presenters/instance_presenter_spec.rb | 2 +-
19 files changed, 164 insertions(+), 179 deletions(-)
create mode 100644 app/controllers/api/v1/instances/translation_languages_controller.rb
create mode 100644 spec/controllers/api/v1/instances/translation_languages_controller_spec.rb
(limited to 'spec/lib')
diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml
index e79f4f8e9..85f078dcf 100644
--- a/.rubocop_todo.yml
+++ b/.rubocop_todo.yml
@@ -484,7 +484,6 @@ RSpec/DescribedClass:
- 'spec/models/user_spec.rb'
- 'spec/policies/account_moderation_note_policy_spec.rb'
- 'spec/presenters/account_relationships_presenter_spec.rb'
- - 'spec/presenters/instance_presenter_spec.rb'
- 'spec/presenters/status_relationships_presenter_spec.rb'
- 'spec/serializers/activitypub/note_serializer_spec.rb'
- 'spec/serializers/activitypub/update_poll_serializer_spec.rb'
diff --git a/app/controllers/api/v1/instances/translation_languages_controller.rb b/app/controllers/api/v1/instances/translation_languages_controller.rb
new file mode 100644
index 000000000..3910a499e
--- /dev/null
+++ b/app/controllers/api/v1/instances/translation_languages_controller.rb
@@ -0,0 +1,23 @@
+# frozen_string_literal: true
+
+class Api::V1::Instances::TranslationLanguagesController < Api::BaseController
+ skip_before_action :require_authenticated_user!, unless: :whitelist_mode?
+
+ before_action :set_languages
+
+ def show
+ expires_in 1.day, public: true
+ render json: @languages
+ end
+
+ private
+
+ def set_languages
+ if TranslationService.configured?
+ @languages = Rails.cache.fetch('translation_service/languages', expires_in: 7.days, race_condition_ttl: 1.hour) { TranslationService.configured.languages }
+ @languages['und'] = @languages.delete(nil) if @languages.key?(nil)
+ else
+ @languages = {}
+ end
+ end
+end
diff --git a/app/javascript/mastodon/actions/server.js b/app/javascript/mastodon/actions/server.js
index 31d4aea10..091af0f0f 100644
--- a/app/javascript/mastodon/actions/server.js
+++ b/app/javascript/mastodon/actions/server.js
@@ -5,6 +5,10 @@ export const SERVER_FETCH_REQUEST = 'Server_FETCH_REQUEST';
export const SERVER_FETCH_SUCCESS = 'Server_FETCH_SUCCESS';
export const SERVER_FETCH_FAIL = 'Server_FETCH_FAIL';
+export const SERVER_TRANSLATION_LANGUAGES_FETCH_REQUEST = 'SERVER_TRANSLATION_LANGUAGES_FETCH_REQUEST';
+export const SERVER_TRANSLATION_LANGUAGES_FETCH_SUCCESS = 'SERVER_TRANSLATION_LANGUAGES_FETCH_SUCCESS';
+export const SERVER_TRANSLATION_LANGUAGES_FETCH_FAIL = 'SERVER_TRANSLATION_LANGUAGES_FETCH_FAIL';
+
export const EXTENDED_DESCRIPTION_REQUEST = 'EXTENDED_DESCRIPTION_REQUEST';
export const EXTENDED_DESCRIPTION_SUCCESS = 'EXTENDED_DESCRIPTION_SUCCESS';
export const EXTENDED_DESCRIPTION_FAIL = 'EXTENDED_DESCRIPTION_FAIL';
@@ -37,6 +41,29 @@ const fetchServerFail = error => ({
error,
});
+export const fetchServerTranslationLanguages = () => (dispatch, getState) => {
+ dispatch(fetchServerTranslationLanguagesRequest());
+
+ api(getState)
+ .get('/api/v1/instance/translation_languages').then(({ data }) => {
+ dispatch(fetchServerTranslationLanguagesSuccess(data));
+ }).catch(err => dispatch(fetchServerTranslationLanguagesFail(err)));
+};
+
+const fetchServerTranslationLanguagesRequest = () => ({
+ type: SERVER_TRANSLATION_LANGUAGES_FETCH_REQUEST,
+});
+
+const fetchServerTranslationLanguagesSuccess = translationLanguages => ({
+ type: SERVER_TRANSLATION_LANGUAGES_FETCH_SUCCESS,
+ translationLanguages,
+});
+
+const fetchServerTranslationLanguagesFail = error => ({
+ type: SERVER_TRANSLATION_LANGUAGES_FETCH_FAIL,
+ error,
+});
+
export const fetchExtendedDescription = () => (dispatch, getState) => {
dispatch(fetchExtendedDescriptionRequest());
diff --git a/app/javascript/mastodon/components/status_content.jsx b/app/javascript/mastodon/components/status_content.jsx
index f9c9fe079..67a487b00 100644
--- a/app/javascript/mastodon/components/status_content.jsx
+++ b/app/javascript/mastodon/components/status_content.jsx
@@ -3,6 +3,7 @@ import ImmutablePropTypes from 'react-immutable-proptypes';
import PropTypes from 'prop-types';
import { FormattedMessage, injectIntl } from 'react-intl';
import { Link } from 'react-router-dom';
+import { connect } from 'react-redux';
import classnames from 'classnames';
import PollContainer from 'mastodon/containers/poll_container';
import Icon from 'mastodon/components/icon';
@@ -47,7 +48,12 @@ class TranslateButton extends React.PureComponent {
}
-export default @injectIntl
+const mapStateToProps = state => ({
+ languages: state.getIn(['server', 'translationLanguages', 'items']),
+});
+
+export default @connect(mapStateToProps)
+@injectIntl
class StatusContent extends React.PureComponent {
static contextTypes = {
@@ -63,6 +69,7 @@ class StatusContent extends React.PureComponent {
onClick: PropTypes.func,
collapsable: PropTypes.bool,
onCollapsedToggle: PropTypes.func,
+ languages: ImmutablePropTypes.map,
intl: PropTypes.object,
};
@@ -220,7 +227,9 @@ class StatusContent extends React.PureComponent {
const hidden = this.props.onExpandedToggle ? !this.props.expanded : this.state.hidden;
const renderReadMore = this.props.onClick && status.get('collapsed');
- const renderTranslate = this.props.onTranslate && status.get('translatable');
+ const contentLocale = intl.locale.replace(/[_-].*/, '');
+ const targetLanguages = this.props.languages?.get(status.get('language') || 'und');
+ const renderTranslate = this.props.onTranslate && this.context.identity.signedIn && ['public', 'unlisted'].includes(status.get('visibility')) && status.get('contentHtml').length > 0 && targetLanguages?.includes(contentLocale);
const content = { __html: status.get('translation') ? status.getIn(['translation', 'content']) : status.get('contentHtml') };
const spoilerContent = { __html: status.get('spoilerHtml') };
diff --git a/app/javascript/mastodon/features/ui/index.jsx b/app/javascript/mastodon/features/ui/index.jsx
index 2dd59f95d..083707220 100644
--- a/app/javascript/mastodon/features/ui/index.jsx
+++ b/app/javascript/mastodon/features/ui/index.jsx
@@ -13,7 +13,7 @@ import { debounce } from 'lodash';
import { uploadCompose, resetCompose, changeComposeSpoilerness } from '../../actions/compose';
import { expandHomeTimeline } from '../../actions/timelines';
import { expandNotifications } from '../../actions/notifications';
-import { fetchServer } from '../../actions/server';
+import { fetchServer, fetchServerTranslationLanguages } from '../../actions/server';
import { clearHeight } from '../../actions/height_cache';
import { focusApp, unfocusApp, changeLayout } from 'mastodon/actions/app';
import { synchronouslySubmitMarkers, submitMarkers, fetchMarkers } from 'mastodon/actions/markers';
@@ -399,6 +399,7 @@ class UI extends React.PureComponent {
this.props.dispatch(fetchMarkers());
this.props.dispatch(expandHomeTimeline());
this.props.dispatch(expandNotifications());
+ this.props.dispatch(fetchServerTranslationLanguages());
setTimeout(() => this.props.dispatch(fetchServer()), 3000);
}
diff --git a/app/javascript/mastodon/reducers/server.js b/app/javascript/mastodon/reducers/server.js
index db9f2b5e6..909ab2a66 100644
--- a/app/javascript/mastodon/reducers/server.js
+++ b/app/javascript/mastodon/reducers/server.js
@@ -2,6 +2,9 @@ import {
SERVER_FETCH_REQUEST,
SERVER_FETCH_SUCCESS,
SERVER_FETCH_FAIL,
+ SERVER_TRANSLATION_LANGUAGES_FETCH_REQUEST,
+ SERVER_TRANSLATION_LANGUAGES_FETCH_SUCCESS,
+ SERVER_TRANSLATION_LANGUAGES_FETCH_FAIL,
EXTENDED_DESCRIPTION_REQUEST,
EXTENDED_DESCRIPTION_SUCCESS,
EXTENDED_DESCRIPTION_FAIL,
@@ -35,6 +38,12 @@ export default function server(state = initialState, action) {
return state.set('server', fromJS(action.server)).setIn(['server', 'isLoading'], false);
case SERVER_FETCH_FAIL:
return state.setIn(['server', 'isLoading'], false);
+ case SERVER_TRANSLATION_LANGUAGES_FETCH_REQUEST:
+ return state.setIn(['translationLanguages', 'isLoading'], true);
+ case SERVER_TRANSLATION_LANGUAGES_FETCH_SUCCESS:
+ return state.setIn(['translationLanguages', 'items'], fromJS(action.translationLanguages)).setIn(['translationLanguages', 'isLoading'], false);
+ case SERVER_TRANSLATION_LANGUAGES_FETCH_FAIL:
+ return state.setIn(['translationLanguages', 'isLoading'], false);
case EXTENDED_DESCRIPTION_REQUEST:
return state.setIn(['extendedDescription', 'isLoading'], true);
case EXTENDED_DESCRIPTION_SUCCESS:
diff --git a/app/lib/translation_service.rb b/app/lib/translation_service.rb
index 5ff93674a..bfe5de44f 100644
--- a/app/lib/translation_service.rb
+++ b/app/lib/translation_service.rb
@@ -21,8 +21,8 @@ class TranslationService
ENV['DEEPL_API_KEY'].present? || ENV['LIBRE_TRANSLATE_ENDPOINT'].present?
end
- def supported?(_source_language, _target_language)
- false
+ def languages
+ {}
end
def translate(_text, _source_language, _target_language)
diff --git a/app/lib/translation_service/deepl.rb b/app/lib/translation_service/deepl.rb
index deff95a1d..afcb7ecb2 100644
--- a/app/lib/translation_service/deepl.rb
+++ b/app/lib/translation_service/deepl.rb
@@ -17,25 +17,31 @@ class TranslationService::DeepL < TranslationService
end
end
- def supported?(source_language, target_language)
- source_language.in?(languages('source')) && target_language.in?(languages('target'))
+ def languages
+ source_languages = [nil] + fetch_languages('source')
+
+ # In DeepL, EN and PT are deprecated in favor of EN-GB/EN-US and PT-BR/PT-PT, so
+ # they are supported but not returned by the API.
+ target_languages = %w(en pt) + fetch_languages('target')
+
+ source_languages.index_with { |language| target_languages.without(nil, language) }
end
private
- def languages(type)
- Rails.cache.fetch("translation_service/deepl/languages/#{type}", expires_in: 7.days, race_condition_ttl: 1.minute) do
- request(:get, "/v2/languages?type=#{type}") do |res|
- # In DeepL, EN and PT are deprecated in favor of EN-GB/EN-US and PT-BR/PT-PT, so
- # they are supported but not returned by the API.
- extra = type == 'source' ? [nil] : %w(en pt)
- languages = Oj.load(res.body_with_limit).map { |language| language['language'].downcase }
-
- languages + extra
- end
+ def fetch_languages(type)
+ request(:get, "/v2/languages?type=#{type}") do |res|
+ Oj.load(res.body_with_limit).map { |language| normalize_language(language['language']) }
end
end
+ def normalize_language(language)
+ subtags = language.split(/[_-]/)
+ subtags[0].downcase!
+ subtags[1]&.upcase!
+ subtags.join('-')
+ end
+
def request(verb, path, **options)
req = Request.new(verb, "#{base_url}#{path}", **options)
req.add_headers(Authorization: "DeepL-Auth-Key #{@api_key}")
diff --git a/app/lib/translation_service/libre_translate.rb b/app/lib/translation_service/libre_translate.rb
index 743e4d77f..8bb194a9c 100644
--- a/app/lib/translation_service/libre_translate.rb
+++ b/app/lib/translation_service/libre_translate.rb
@@ -15,22 +15,18 @@ class TranslationService::LibreTranslate < TranslationService
end
end
- def supported?(source_language, target_language)
- languages.key?(source_language) && languages[source_language].include?(target_language)
- end
-
- private
-
def languages
- Rails.cache.fetch('translation_service/libre_translate/languages', expires_in: 7.days, race_condition_ttl: 1.minute) do
- request(:get, '/languages') do |res|
- languages = Oj.load(res.body_with_limit).to_h { |language| [language['code'], language['targets']] }
- languages[nil] = languages.values.flatten.uniq
- languages
+ request(:get, '/languages') do |res|
+ languages = Oj.load(res.body_with_limit).to_h do |language|
+ [language['code'], language['targets'].without(language['code'])]
end
+ languages[nil] = languages.values.flatten.uniq.sort
+ languages
end
end
+ private
+
def request(verb, path, **options)
req = Request.new(verb, "#{@base_url}#{path}", allow_local: true, **options)
req.add_headers('Content-Type': 'application/json')
diff --git a/app/models/status.rb b/app/models/status.rb
index dd7ac2edb..e7ea191a8 100644
--- a/app/models/status.rb
+++ b/app/models/status.rb
@@ -232,16 +232,6 @@ class Status < ApplicationRecord
public_visibility? || unlisted_visibility?
end
- def translatable?
- translate_target_locale = I18n.locale.to_s.split(/[_-]/).first
-
- distributable? &&
- content.present? &&
- language != translate_target_locale &&
- TranslationService.configured? &&
- TranslationService.configured.supported?(language, translate_target_locale)
- end
-
alias sign? distributable?
def with_media?
diff --git a/app/serializers/rest/status_serializer.rb b/app/serializers/rest/status_serializer.rb
index a422f5b25..e0b8f32a6 100644
--- a/app/serializers/rest/status_serializer.rb
+++ b/app/serializers/rest/status_serializer.rb
@@ -4,7 +4,7 @@ class REST::StatusSerializer < ActiveModel::Serializer
include FormattingHelper
attributes :id, :created_at, :in_reply_to_id, :in_reply_to_account_id,
- :sensitive, :spoiler_text, :visibility, :language, :translatable,
+ :sensitive, :spoiler_text, :visibility, :language,
:uri, :url, :replies_count, :reblogs_count,
:favourites_count, :edited_at
@@ -50,10 +50,6 @@ class REST::StatusSerializer < ActiveModel::Serializer
object.account.user_shows_application? || (current_user? && current_user.account_id == object.account_id)
end
- def translatable
- current_user? && object.translatable?
- end
-
def visibility
# This visibility is masked behind "private"
# to avoid API changes because there are no
diff --git a/app/services/translate_status_service.rb b/app/services/translate_status_service.rb
index 92d8b62a0..796f13a0d 100644
--- a/app/services/translate_status_service.rb
+++ b/app/services/translate_status_service.rb
@@ -6,19 +6,29 @@ class TranslateStatusService < BaseService
include FormattingHelper
def call(status, target_language)
- raise Mastodon::NotPermittedError unless status.translatable?
-
@status = status
@content = status_content_format(@status)
@target_language = target_language
+ raise Mastodon::NotPermittedError unless permitted?
+
Rails.cache.fetch("translations/#{@status.language}/#{@target_language}/#{content_hash}", expires_in: CACHE_TTL) { translation_backend.translate(@content, @status.language, @target_language) }
end
private
def translation_backend
- TranslationService.configured
+ @translation_backend ||= TranslationService.configured
+ end
+
+ def permitted?
+ return false unless @status.distributable? && @status.content.present? && TranslationService.configured?
+
+ languages[@status.language]&.include?(@target_language)
+ end
+
+ def languages
+ Rails.cache.fetch('translation_service/languages', expires_in: 7.days, race_condition_ttl: 1.hour) { TranslationService.configured.languages }
end
def content_hash
diff --git a/config/routes.rb b/config/routes.rb
index 530b46a5a..ea595e1e1 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -546,6 +546,7 @@ Rails.application.routes.draw do
resources :domain_blocks, only: [:index], controller: 'instances/domain_blocks'
resource :privacy_policy, only: [:show], controller: 'instances/privacy_policies'
resource :extended_description, only: [:show], controller: 'instances/extended_descriptions'
+ resource :translation_languages, only: [:show], controller: 'instances/translation_languages'
resource :activity, only: [:show], controller: 'instances/activity'
end
diff --git a/spec/controllers/api/v1/instances/translation_languages_controller_spec.rb b/spec/controllers/api/v1/instances/translation_languages_controller_spec.rb
new file mode 100644
index 000000000..5b7e4abb6
--- /dev/null
+++ b/spec/controllers/api/v1/instances/translation_languages_controller_spec.rb
@@ -0,0 +1,31 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+describe Api::V1::Instances::TranslationLanguagesController do
+ describe 'GET #show' do
+ context 'when no translation service is configured' do
+ it 'returns empty language matrix' do
+ get :show
+
+ expect(response).to have_http_status(200)
+ expect(body_as_json).to eq({})
+ end
+ end
+
+ context 'when a translation service is configured' do
+ before do
+ service = instance_double(TranslationService::DeepL, languages: { nil => %w(en de), 'en' => ['de'] })
+ allow(TranslationService).to receive(:configured?).and_return(true)
+ allow(TranslationService).to receive(:configured).and_return(service)
+ end
+
+ it 'returns language matrix' do
+ get :show
+
+ expect(response).to have_http_status(200)
+ expect(body_as_json).to eq({ und: %w(en de), en: ['de'] })
+ end
+ end
+ end
+end
diff --git a/spec/controllers/api/v1/statuses/translations_controller_spec.rb b/spec/controllers/api/v1/statuses/translations_controller_spec.rb
index 2deea9fc0..8495779bf 100644
--- a/spec/controllers/api/v1/statuses/translations_controller_spec.rb
+++ b/spec/controllers/api/v1/statuses/translations_controller_spec.rb
@@ -19,9 +19,10 @@ describe Api::V1::Statuses::TranslationsController do
before do
translation = TranslationService::Translation.new(text: 'Hello')
- service = instance_double(TranslationService::DeepL, translate: translation, supported?: true)
+ service = instance_double(TranslationService::DeepL, translate: translation)
allow(TranslationService).to receive(:configured?).and_return(true)
allow(TranslationService).to receive(:configured).and_return(service)
+ Rails.cache.write('translation_service/languages', { 'es' => ['en'] })
post :create, params: { status_id: status.id }
end
diff --git a/spec/lib/translation_service/deepl_spec.rb b/spec/lib/translation_service/deepl_spec.rb
index aa2473186..2363f8f13 100644
--- a/spec/lib/translation_service/deepl_spec.rb
+++ b/spec/lib/translation_service/deepl_spec.rb
@@ -16,29 +16,6 @@ RSpec.describe TranslationService::DeepL do
)
end
- describe '#supported?' do
- it 'supports included languages as source and target languages' do
- expect(service.supported?('uk', 'en')).to be true
- end
-
- it 'supports auto-detecting source language' do
- expect(service.supported?(nil, 'en')).to be true
- end
-
- it 'supports "en" and "pt" as target languages though not included in language list' do
- expect(service.supported?('uk', 'en')).to be true
- expect(service.supported?('uk', 'pt')).to be true
- end
-
- it 'does not support non-included language as target language' do
- expect(service.supported?('uk', 'nl')).to be false
- end
-
- it 'does not support non-included language as source language' do
- expect(service.supported?('da', 'en')).to be false
- end
- end
-
describe '#translate' do
it 'returns translation with specified source language' do
stub_request(:post, 'https://api.deepl.com/v2/translate')
@@ -63,13 +40,18 @@ RSpec.describe TranslationService::DeepL do
end
end
- describe '#languages?' do
+ describe '#languages' do
it 'returns source languages' do
- expect(service.send(:languages, 'source')).to eq ['en', 'uk', nil]
+ expect(service.languages.keys).to eq [nil, 'en', 'uk']
+ end
+
+ it 'returns target languages for each source language' do
+ expect(service.languages['en']).to eq %w(pt en-GB zh)
+ expect(service.languages['uk']).to eq %w(en pt en-GB zh)
end
- it 'returns target languages' do
- expect(service.send(:languages, 'target')).to eq %w(en-gb zh en pt)
+ it 'returns target languages for auto-detection' do
+ expect(service.languages[nil]).to eq %w(en pt en-GB zh)
end
end
diff --git a/spec/lib/translation_service/libre_translate_spec.rb b/spec/lib/translation_service/libre_translate_spec.rb
index a6cb01884..fbd726a7e 100644
--- a/spec/lib/translation_service/libre_translate_spec.rb
+++ b/spec/lib/translation_service/libre_translate_spec.rb
@@ -7,41 +7,24 @@ RSpec.describe TranslationService::LibreTranslate do
before do
stub_request(:get, 'https://libretranslate.example.com/languages').to_return(
- body: '[{"code": "en","name": "English","targets": ["de","es"]},{"code": "da","name": "Danish","targets": ["en","de"]}]'
+ body: '[{"code": "en","name": "English","targets": ["de","en","es"]},{"code": "da","name": "Danish","targets": ["en","pt"]}]'
)
end
- describe '#supported?' do
- it 'supports included language pair' do
- expect(service.supported?('en', 'de')).to be true
- end
-
- it 'does not support reversed language pair' do
- expect(service.supported?('de', 'en')).to be false
- end
-
- it 'supports auto-detecting source language' do
- expect(service.supported?(nil, 'de')).to be true
- end
-
- it 'does not support auto-detecting for unsupported target language' do
- expect(service.supported?(nil, 'pt')).to be false
- end
- end
-
describe '#languages' do
- subject(:languages) { service.send(:languages) }
+ subject(:languages) { service.languages }
- it 'includes supported source languages' do
+ it 'returns source languages' do
expect(languages.keys).to eq ['en', 'da', nil]
end
- it 'includes supported target languages for source language' do
+ it 'returns target languages for each source language' do
expect(languages['en']).to eq %w(de es)
+ expect(languages['da']).to eq %w(en pt)
end
- it 'includes supported target languages for auto-detected language' do
- expect(languages[nil]).to eq %w(de es en)
+ it 'returns target languages for auto-detected language' do
+ expect(languages[nil]).to eq %w(de en es pt)
end
end
diff --git a/spec/models/status_spec.rb b/spec/models/status_spec.rb
index 1f6cfc796..1e58c6d0d 100644
--- a/spec/models/status_spec.rb
+++ b/spec/models/status_spec.rb
@@ -114,85 +114,6 @@ RSpec.describe Status, type: :model do
end
end
- describe '#translatable?' do
- before do
- allow(TranslationService).to receive(:configured?).and_return(true)
- allow(TranslationService).to receive(:configured).and_return(TranslationService.new)
- allow(TranslationService.configured).to receive(:supported?).with('es', 'en').and_return(true)
-
- subject.language = 'es'
- subject.visibility = :public
- end
-
- context 'all conditions are satisfied' do
- it 'returns true' do
- expect(subject.translatable?).to be true
- end
- end
-
- context 'translation service is not configured' do
- it 'returns false' do
- allow(TranslationService).to receive(:configured?).and_return(false)
- allow(TranslationService).to receive(:configured).and_raise(TranslationService::NotConfiguredError)
- expect(subject.translatable?).to be false
- end
- end
-
- context 'status language is nil' do
- it 'returns true' do
- subject.language = nil
- allow(TranslationService.configured).to receive(:supported?).with(nil, 'en').and_return(true)
- expect(subject.translatable?).to be true
- end
- end
-
- context 'status language is same as default locale' do
- it 'returns false' do
- subject.language = I18n.locale
- expect(subject.translatable?).to be false
- end
- end
-
- context 'status language is unsupported' do
- it 'returns false' do
- subject.language = 'af'
- allow(TranslationService.configured).to receive(:supported?).with('af', 'en').and_return(false)
- expect(subject.translatable?).to be false
- end
- end
-
- context 'default locale is unsupported' do
- it 'returns false' do
- allow(TranslationService.configured).to receive(:supported?).with('es', 'af').and_return(false)
- I18n.with_locale('af') do
- expect(subject.translatable?).to be false
- end
- end
- end
-
- context 'default locale has region' do
- it 'returns true' do
- I18n.with_locale('en-GB') do
- expect(subject.translatable?).to be true
- end
- end
- end
-
- context 'status text is blank' do
- it 'returns false' do
- subject.text = ' '
- expect(subject.translatable?).to be false
- end
- end
-
- context 'status visiblity is hidden' do
- it 'returns false' do
- subject.visibility = 'limited'
- expect(subject.translatable?).to be false
- end
- end
- end
-
describe '#content' do
it 'returns the text of the status if it is not a reblog' do
expect(subject.content).to eql subject.text
diff --git a/spec/presenters/instance_presenter_spec.rb b/spec/presenters/instance_presenter_spec.rb
index 795abd8b4..2a1d668ce 100644
--- a/spec/presenters/instance_presenter_spec.rb
+++ b/spec/presenters/instance_presenter_spec.rb
@@ -3,7 +3,7 @@
require 'rails_helper'
describe InstancePresenter do
- let(:instance_presenter) { InstancePresenter.new }
+ let(:instance_presenter) { described_class.new }
describe '#description' do
around do |example|
--
cgit
From b179ff84c76b79f91793fdb23e5e9c84ad46707a Mon Sep 17 00:00:00 2001
From: Matt Jankowski
Date: Wed, 22 Mar 2023 09:06:26 -0400
Subject: Add specs for Chewy importers (#24204)
---
spec/lib/importer/accounts_index_importer_spec.rb | 16 ++++++++++++++++
spec/lib/importer/statuses_index_importer_spec.rb | 16 ++++++++++++++++
spec/lib/importer/tags_index_importer_spec.rb | 16 ++++++++++++++++
3 files changed, 48 insertions(+)
create mode 100644 spec/lib/importer/accounts_index_importer_spec.rb
create mode 100644 spec/lib/importer/statuses_index_importer_spec.rb
create mode 100644 spec/lib/importer/tags_index_importer_spec.rb
(limited to 'spec/lib')
diff --git a/spec/lib/importer/accounts_index_importer_spec.rb b/spec/lib/importer/accounts_index_importer_spec.rb
new file mode 100644
index 000000000..73f9bce39
--- /dev/null
+++ b/spec/lib/importer/accounts_index_importer_spec.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+describe Importer::AccountsIndexImporter do
+ describe 'import!' do
+ let(:pool) { Concurrent::FixedThreadPool.new(5) }
+ let(:importer) { described_class.new(batch_size: 123, executor: pool) }
+
+ before { Fabricate(:account) }
+
+ it 'indexes relevant accounts' do
+ expect { importer.import! }.to update_index(AccountsIndex)
+ end
+ end
+end
diff --git a/spec/lib/importer/statuses_index_importer_spec.rb b/spec/lib/importer/statuses_index_importer_spec.rb
new file mode 100644
index 000000000..d5e1c9f2c
--- /dev/null
+++ b/spec/lib/importer/statuses_index_importer_spec.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+describe Importer::StatusesIndexImporter do
+ describe 'import!' do
+ let(:pool) { Concurrent::FixedThreadPool.new(5) }
+ let(:importer) { described_class.new(batch_size: 123, executor: pool) }
+
+ before { Fabricate(:status) }
+
+ it 'indexes relevant statuses' do
+ expect { importer.import! }.to update_index(StatusesIndex)
+ end
+ end
+end
diff --git a/spec/lib/importer/tags_index_importer_spec.rb b/spec/lib/importer/tags_index_importer_spec.rb
new file mode 100644
index 000000000..348990c01
--- /dev/null
+++ b/spec/lib/importer/tags_index_importer_spec.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+describe Importer::TagsIndexImporter do
+ describe 'import!' do
+ let(:pool) { Concurrent::FixedThreadPool.new(5) }
+ let(:importer) { described_class.new(batch_size: 123, executor: pool) }
+
+ before { Fabricate(:tag) }
+
+ it 'indexes relevant tags' do
+ expect { importer.import! }.to update_index(TagsIndex)
+ end
+ end
+end
--
cgit
From a9b5598c97fc4d3302b61b260097ef41c2ebe377 Mon Sep 17 00:00:00 2001
From: Eugen Rochko
Date: Thu, 30 Mar 2023 14:44:00 +0200
Subject: Change user settings to be stored in a more optimal way (#23630)
Co-authored-by: Claire
---
.rubocop.yml | 8 ++
.rubocop_todo.yml | 1 +
.../api/v1/accounts/credentials_controller.rb | 12 +-
app/controllers/settings/preferences_controller.rb | 40 +-----
app/lib/user_settings_decorator.rb | 155 ---------------------
app/lib/user_settings_serializer.rb | 19 +++
app/models/concerns/has_user_settings.rb | 141 +++++++++++++++++++
app/models/user.rb | 59 +-------
app/models/user_settings.rb | 99 +++++++++++++
app/models/user_settings/dsl.rb | 37 +++++
app/models/user_settings/glue.rb | 23 +++
app/models/user_settings/namespace.rb | 21 +++
app/models/user_settings/setting.rb | 48 +++++++
app/services/notify_service.rb | 13 +-
.../settings/preferences/appearance/show.html.haml | 65 ++++-----
.../preferences/notifications/show.html.haml | 36 ++---
.../settings/preferences/other/show.html.haml | 29 ++--
config/initializers/inflections.rb | 1 +
config/settings.yml | 34 -----
db/migrate/20230215074327_add_settings_to_users.rb | 7 +
db/migrate/20230215074423_move_user_settings.rb | 84 +++++++++++
db/schema.rb | 3 +-
lib/tasks/tests.rake | 2 +-
.../api/v1/accounts/credentials_controller_spec.rb | 1 +
spec/controllers/application_controller_spec.rb | 10 +-
.../preferences/notifications_controller_spec.rb | 14 +-
.../settings/preferences/other_controller_spec.rb | 14 +-
spec/lib/settings/extend_spec.rb | 16 ---
spec/lib/settings/scoped_settings_spec.rb | 35 -----
spec/lib/user_settings_decorator_spec.rb | 84 -----------
spec/models/user_settings/namespace_spec.rb | 25 ++++
spec/models/user_settings/setting_spec.rb | 74 ++++++++++
spec/models/user_settings_spec.rb | 110 +++++++++++++++
spec/models/user_spec.rb | 14 +-
spec/services/notify_service_spec.rb | 7 +-
spec/services/report_service_spec.rb | 3 +-
36 files changed, 818 insertions(+), 526 deletions(-)
delete mode 100644 app/lib/user_settings_decorator.rb
create mode 100644 app/lib/user_settings_serializer.rb
create mode 100644 app/models/concerns/has_user_settings.rb
create mode 100644 app/models/user_settings.rb
create mode 100644 app/models/user_settings/dsl.rb
create mode 100644 app/models/user_settings/glue.rb
create mode 100644 app/models/user_settings/namespace.rb
create mode 100644 app/models/user_settings/setting.rb
create mode 100644 db/migrate/20230215074327_add_settings_to_users.rb
create mode 100644 db/migrate/20230215074423_move_user_settings.rb
delete mode 100644 spec/lib/settings/extend_spec.rb
delete mode 100644 spec/lib/settings/scoped_settings_spec.rb
delete mode 100644 spec/lib/user_settings_decorator_spec.rb
create mode 100644 spec/models/user_settings/namespace_spec.rb
create mode 100644 spec/models/user_settings/setting_spec.rb
create mode 100644 spec/models/user_settings_spec.rb
(limited to 'spec/lib')
diff --git a/.rubocop.yml b/.rubocop.yml
index 1033db92d..b5598b65a 100644
--- a/.rubocop.yml
+++ b/.rubocop.yml
@@ -185,3 +185,11 @@ Style/TrailingCommaInHashLiteral:
Style/SymbolArray:
Enabled: false
+
+# Reason: Prefer less intendation in conditional assignments
+# https://docs.rubocop.org/rubocop/cops_style.html#styleredundantbegin
+Style/RedundantBegin:
+ Enabled: false
+
+RSpec/NamedSubject:
+ EnforcedStyle: named_only
diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml
index 64a6b6b33..4ad266c8c 100644
--- a/.rubocop_todo.yml
+++ b/.rubocop_todo.yml
@@ -259,6 +259,7 @@ Metrics/ModuleLength:
- 'app/helpers/jsonld_helper.rb'
- 'app/helpers/statuses_helper.rb'
- 'app/models/concerns/account_interactions.rb'
+ - 'app/models/concerns/has_user_settings.rb'
# Configuration parameters: Max, CountKeywordArgs, MaxOptionalParameters.
Metrics/ParameterLists:
diff --git a/app/controllers/api/v1/accounts/credentials_controller.rb b/app/controllers/api/v1/accounts/credentials_controller.rb
index 94b707771..7c7d70fd3 100644
--- a/app/controllers/api/v1/accounts/credentials_controller.rb
+++ b/app/controllers/api/v1/accounts/credentials_controller.rb
@@ -13,7 +13,7 @@ class Api::V1::Accounts::CredentialsController < Api::BaseController
def update
@account = current_account
UpdateAccountService.new.call(@account, account_params, raise_error: true)
- UserSettingsDecorator.new(current_user).update(user_settings_params) if user_settings_params
+ current_user.update(user_params) if user_params
ActivityPub::UpdateDistributionWorker.perform_async(@account.id)
render json: @account, serializer: REST::CredentialAccountSerializer
end
@@ -34,15 +34,17 @@ class Api::V1::Accounts::CredentialsController < Api::BaseController
)
end
- def user_settings_params
+ def user_params
return nil if params[:source].blank?
source_params = params.require(:source)
{
- 'setting_default_privacy' => source_params.fetch(:privacy, @account.user.setting_default_privacy),
- 'setting_default_sensitive' => source_params.fetch(:sensitive, @account.user.setting_default_sensitive),
- 'setting_default_language' => source_params.fetch(:language, @account.user.setting_default_language),
+ settings_attributes: {
+ default_privacy: source_params.fetch(:privacy, @account.user.setting_default_privacy),
+ default_sensitive: source_params.fetch(:sensitive, @account.user.setting_default_sensitive),
+ default_language: source_params.fetch(:language, @account.user.setting_default_language),
+ },
}
end
end
diff --git a/app/controllers/settings/preferences_controller.rb b/app/controllers/settings/preferences_controller.rb
index f5d5c1244..281deb64d 100644
--- a/app/controllers/settings/preferences_controller.rb
+++ b/app/controllers/settings/preferences_controller.rb
@@ -4,8 +4,6 @@ class Settings::PreferencesController < Settings::BaseController
def show; end
def update
- user_settings.update(user_settings_params.to_h)
-
if current_user.update(user_params)
I18n.locale = current_user.locale
redirect_to after_update_redirect_path, notice: I18n.t('generic.changes_saved_msg')
@@ -20,43 +18,7 @@ class Settings::PreferencesController < Settings::BaseController
settings_preferences_path
end
- def user_settings
- UserSettingsDecorator.new(current_user)
- end
-
def user_params
- params.require(:user).permit(
- :locale,
- chosen_languages: []
- )
- end
-
- def user_settings_params
- params.require(:user).permit(
- :setting_default_privacy,
- :setting_default_sensitive,
- :setting_default_language,
- :setting_unfollow_modal,
- :setting_boost_modal,
- :setting_delete_modal,
- :setting_auto_play_gif,
- :setting_display_media,
- :setting_expand_spoilers,
- :setting_reduce_motion,
- :setting_disable_swiping,
- :setting_system_font_ui,
- :setting_noindex,
- :setting_theme,
- :setting_aggregate_reblogs,
- :setting_show_application,
- :setting_advanced_layout,
- :setting_use_blurhash,
- :setting_use_pending_items,
- :setting_trends,
- :setting_crop_images,
- :setting_always_send_emails,
- notification_emails: %i(follow follow_request reblog favourite mention report pending_account trending_tag appeal),
- interactions: %i(must_be_follower must_be_following must_be_following_dm)
- )
+ params.require(:user).permit(:locale, chosen_languages: [], settings_attributes: UserSettings.keys)
end
end
diff --git a/app/lib/user_settings_decorator.rb b/app/lib/user_settings_decorator.rb
deleted file mode 100644
index 5fb7655a9..000000000
--- a/app/lib/user_settings_decorator.rb
+++ /dev/null
@@ -1,155 +0,0 @@
-# frozen_string_literal: true
-
-class UserSettingsDecorator
- attr_reader :user, :settings
-
- def initialize(user)
- @user = user
- end
-
- def update(settings)
- @settings = settings
- process_update
- end
-
- private
-
- def process_update
- user.settings['notification_emails'] = merged_notification_emails if change?('notification_emails')
- user.settings['interactions'] = merged_interactions if change?('interactions')
- user.settings['default_privacy'] = default_privacy_preference if change?('setting_default_privacy')
- user.settings['default_sensitive'] = default_sensitive_preference if change?('setting_default_sensitive')
- user.settings['default_language'] = default_language_preference if change?('setting_default_language')
- user.settings['unfollow_modal'] = unfollow_modal_preference if change?('setting_unfollow_modal')
- user.settings['boost_modal'] = boost_modal_preference if change?('setting_boost_modal')
- user.settings['delete_modal'] = delete_modal_preference if change?('setting_delete_modal')
- user.settings['auto_play_gif'] = auto_play_gif_preference if change?('setting_auto_play_gif')
- user.settings['display_media'] = display_media_preference if change?('setting_display_media')
- user.settings['expand_spoilers'] = expand_spoilers_preference if change?('setting_expand_spoilers')
- user.settings['reduce_motion'] = reduce_motion_preference if change?('setting_reduce_motion')
- user.settings['disable_swiping'] = disable_swiping_preference if change?('setting_disable_swiping')
- user.settings['system_font_ui'] = system_font_ui_preference if change?('setting_system_font_ui')
- user.settings['noindex'] = noindex_preference if change?('setting_noindex')
- user.settings['theme'] = theme_preference if change?('setting_theme')
- user.settings['aggregate_reblogs'] = aggregate_reblogs_preference if change?('setting_aggregate_reblogs')
- user.settings['show_application'] = show_application_preference if change?('setting_show_application')
- user.settings['advanced_layout'] = advanced_layout_preference if change?('setting_advanced_layout')
- user.settings['use_blurhash'] = use_blurhash_preference if change?('setting_use_blurhash')
- user.settings['use_pending_items'] = use_pending_items_preference if change?('setting_use_pending_items')
- user.settings['trends'] = trends_preference if change?('setting_trends')
- user.settings['crop_images'] = crop_images_preference if change?('setting_crop_images')
- user.settings['always_send_emails'] = always_send_emails_preference if change?('setting_always_send_emails')
- end
-
- def merged_notification_emails
- user.settings['notification_emails'].merge coerced_settings('notification_emails').to_h
- end
-
- def merged_interactions
- user.settings['interactions'].merge coerced_settings('interactions').to_h
- end
-
- def default_privacy_preference
- settings['setting_default_privacy']
- end
-
- def default_sensitive_preference
- boolean_cast_setting 'setting_default_sensitive'
- end
-
- def unfollow_modal_preference
- boolean_cast_setting 'setting_unfollow_modal'
- end
-
- def boost_modal_preference
- boolean_cast_setting 'setting_boost_modal'
- end
-
- def delete_modal_preference
- boolean_cast_setting 'setting_delete_modal'
- end
-
- def system_font_ui_preference
- boolean_cast_setting 'setting_system_font_ui'
- end
-
- def auto_play_gif_preference
- boolean_cast_setting 'setting_auto_play_gif'
- end
-
- def display_media_preference
- settings['setting_display_media']
- end
-
- def expand_spoilers_preference
- boolean_cast_setting 'setting_expand_spoilers'
- end
-
- def reduce_motion_preference
- boolean_cast_setting 'setting_reduce_motion'
- end
-
- def disable_swiping_preference
- boolean_cast_setting 'setting_disable_swiping'
- end
-
- def noindex_preference
- boolean_cast_setting 'setting_noindex'
- end
-
- def show_application_preference
- boolean_cast_setting 'setting_show_application'
- end
-
- def theme_preference
- settings['setting_theme']
- end
-
- def default_language_preference
- settings['setting_default_language']
- end
-
- def aggregate_reblogs_preference
- boolean_cast_setting 'setting_aggregate_reblogs'
- end
-
- def advanced_layout_preference
- boolean_cast_setting 'setting_advanced_layout'
- end
-
- def use_blurhash_preference
- boolean_cast_setting 'setting_use_blurhash'
- end
-
- def use_pending_items_preference
- boolean_cast_setting 'setting_use_pending_items'
- end
-
- def trends_preference
- boolean_cast_setting 'setting_trends'
- end
-
- def crop_images_preference
- boolean_cast_setting 'setting_crop_images'
- end
-
- def always_send_emails_preference
- boolean_cast_setting 'setting_always_send_emails'
- end
-
- def boolean_cast_setting(key)
- ActiveModel::Type::Boolean.new.cast(settings[key])
- end
-
- def coerced_settings(key)
- coerce_values settings.fetch(key, {})
- end
-
- def coerce_values(params_hash)
- params_hash.transform_values { |x| ActiveModel::Type::Boolean.new.cast(x) }
- end
-
- def change?(key)
- !settings[key].nil?
- end
-end
diff --git a/app/lib/user_settings_serializer.rb b/app/lib/user_settings_serializer.rb
new file mode 100644
index 000000000..10d1be04d
--- /dev/null
+++ b/app/lib/user_settings_serializer.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+class UserSettingsSerializer
+ def self.load(value)
+ json = begin
+ if value.blank?
+ {}
+ else
+ Oj.load(value, symbol_keys: true)
+ end
+ end
+
+ UserSettings.new(json)
+ end
+
+ def self.dump(value)
+ Oj.dump(value.as_json)
+ end
+end
diff --git a/app/models/concerns/has_user_settings.rb b/app/models/concerns/has_user_settings.rb
new file mode 100644
index 000000000..b3fa1f683
--- /dev/null
+++ b/app/models/concerns/has_user_settings.rb
@@ -0,0 +1,141 @@
+# frozen_string_literal: true
+
+module HasUserSettings
+ extend ActiveSupport::Concern
+
+ included do
+ serialize :settings, UserSettingsSerializer
+ end
+
+ def settings_attributes=(attributes)
+ settings.update(attributes)
+ end
+
+ def prefers_noindex?
+ settings['noindex']
+ end
+
+ def preferred_posting_language
+ valid_locale_cascade(settings['default_language'], locale, I18n.locale)
+ end
+
+ def setting_auto_play_gif
+ settings['web.auto_play']
+ end
+
+ def setting_default_sensitive
+ settings['default_sensitive']
+ end
+
+ def setting_unfollow_modal
+ settings['web.unfollow_modal']
+ end
+
+ def setting_boost_modal
+ settings['web.reblog_modal']
+ end
+
+ def setting_delete_modal
+ settings['web.delete_modal']
+ end
+
+ def setting_reduce_motion
+ settings['web.reduce_motion']
+ end
+
+ def setting_system_font_ui
+ settings['web.use_system_font']
+ end
+
+ def setting_noindex
+ settings['noindex']
+ end
+
+ def setting_theme
+ settings['theme']
+ end
+
+ def setting_display_media
+ settings['web.display_media']
+ end
+
+ def setting_expand_spoilers
+ settings['web.expand_content_warnings']
+ end
+
+ def setting_default_language
+ settings['default_language']
+ end
+
+ def setting_aggregate_reblogs
+ settings['aggregate_reblogs']
+ end
+
+ def setting_show_application
+ settings['show_application']
+ end
+
+ def setting_advanced_layout
+ settings['web.advanced_layout']
+ end
+
+ def setting_use_blurhash
+ settings['web.use_blurhash']
+ end
+
+ def setting_use_pending_items
+ settings['web.use_pending_items']
+ end
+
+ def setting_trends
+ settings['web.trends']
+ end
+
+ def setting_crop_images
+ settings['web.crop_images']
+ end
+
+ def setting_disable_swiping
+ settings['web.disable_swiping']
+ end
+
+ def setting_always_send_emails
+ settings['always_send_emails']
+ end
+
+ def setting_default_privacy
+ settings['default_privacy'] || (account.locked? ? 'private' : 'public')
+ end
+
+ def allows_report_emails?
+ settings['notification_emails.report']
+ end
+
+ def allows_pending_account_emails?
+ settings['notification_emails.pending_account']
+ end
+
+ def allows_appeal_emails?
+ settings['notification_emails.appeal']
+ end
+
+ def allows_trends_review_emails?
+ settings['notification_emails.trends']
+ end
+
+ def aggregates_reblogs?
+ settings['aggregate_reblogs']
+ end
+
+ def shows_application?
+ settings['show_application']
+ end
+
+ def show_all_media?
+ settings['web.display_media'] == 'show_all'
+ end
+
+ def hide_all_media?
+ settings['web.display_media'] == 'hide_all'
+ end
+end
diff --git a/app/models/user.rb b/app/models/user.rb
index d56a9b9ca..9b225d75f 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -39,10 +39,11 @@
# webauthn_id :string
# sign_up_ip :inet
# role_id :bigint(8)
+# settings :text
#
class User < ApplicationRecord
- self.ignored_columns = %w(
+ self.ignored_columns += %w(
remember_created_at
remember_token
current_sign_in_ip
@@ -51,9 +52,9 @@ class User < ApplicationRecord
filtered_languages
)
- include Settings::Extend
include Redisable
include LanguagesHelper
+ include HasUserSettings
# The home and list feeds will be stored in Redis for this amount
# of time, and status fan-out to followers will include only people
@@ -132,13 +133,6 @@ class User < ApplicationRecord
has_many :session_activations, dependent: :destroy
- delegate :auto_play_gif, :default_sensitive, :unfollow_modal, :boost_modal, :delete_modal,
- :reduce_motion, :system_font_ui, :noindex, :theme, :display_media,
- :expand_spoilers, :default_language, :aggregate_reblogs, :show_application,
- :advanced_layout, :use_blurhash, :use_pending_items, :trends, :crop_images,
- :disable_swiping, :always_send_emails,
- to: :settings, prefix: :setting, allow_nil: false
-
delegate :can?, to: :role
attr_reader :invite_code
@@ -302,42 +296,6 @@ class User < ApplicationRecord
save!
end
- def prefers_noindex?
- setting_noindex
- end
-
- def preferred_posting_language
- valid_locale_cascade(settings.default_language, locale, I18n.locale)
- end
-
- def setting_default_privacy
- settings.default_privacy || (account.locked? ? 'private' : 'public')
- end
-
- def allows_report_emails?
- settings.notification_emails['report']
- end
-
- def allows_pending_account_emails?
- settings.notification_emails['pending_account']
- end
-
- def allows_appeal_emails?
- settings.notification_emails['appeal']
- end
-
- def allows_trends_review_emails?
- settings.notification_emails['trending_tag']
- end
-
- def aggregates_reblogs?
- @aggregates_reblogs ||= settings.aggregate_reblogs
- end
-
- def shows_application?
- @shows_application ||= settings.show_application
- end
-
def token_for_app(app)
return nil if app.nil? || app.owner != self
@@ -417,14 +375,6 @@ class User < ApplicationRecord
send_reset_password_instructions
end
- def show_all_media?
- setting_display_media == 'show_all'
- end
-
- def hide_all_media?
- setting_display_media == 'hide_all'
- end
-
protected
def send_devise_notification(notification, *args, **kwargs)
@@ -494,7 +444,8 @@ class User < ApplicationRecord
def sanitize_languages
return if chosen_languages.nil?
- chosen_languages.reject!(&:blank?)
+ chosen_languages.compact_blank!
+
self.chosen_languages = nil if chosen_languages.empty?
end
diff --git a/app/models/user_settings.rb b/app/models/user_settings.rb
new file mode 100644
index 000000000..2c025d6c5
--- /dev/null
+++ b/app/models/user_settings.rb
@@ -0,0 +1,99 @@
+# frozen_string_literal: true
+
+class UserSettings
+ class Error < StandardError; end
+ class KeyError < Error; end
+
+ include UserSettings::DSL
+ include UserSettings::Glue
+
+ setting :always_send_emails, default: false
+ setting :aggregate_reblogs, default: true
+ setting :theme, default: -> { ::Setting.theme }
+ setting :noindex, default: -> { ::Setting.noindex }
+ setting :show_application, default: true
+ setting :default_language, default: nil
+ setting :default_sensitive, default: false
+ setting :default_privacy, default: nil
+
+ namespace :web do
+ setting :crop_images, default: true
+ setting :advanced_layout, default: false
+ setting :trends, default: true
+ setting :use_blurhash, default: true
+ setting :use_pending_items, default: false
+ setting :use_system_font, default: false
+ setting :disable_swiping, default: false
+ setting :delete_modal, default: true
+ setting :reblog_modal, default: false
+ setting :unfollow_modal, default: true
+ setting :reduce_motion, default: false
+ setting :expand_content_warnings, default: false
+ setting :display_media, default: 'default', in: %w(default show_all hide_all)
+ setting :auto_play, default: false
+ end
+
+ namespace :notification_emails do
+ setting :follow, default: true
+ setting :reblog, default: false
+ setting :favourite, default: false
+ setting :mention, default: true
+ setting :follow_request, default: true
+ setting :report, default: true
+ setting :pending_account, default: true
+ setting :trends, default: true
+ setting :appeal, default: true
+ end
+
+ namespace :interactions do
+ setting :must_be_follower, default: false
+ setting :must_be_following, default: false
+ setting :must_be_following_dm, default: false
+ end
+
+ def initialize(original_hash)
+ @original_hash = original_hash || {}
+ end
+
+ def [](key)
+ key = key.to_sym
+
+ raise KeyError, "Undefined setting: #{key}" unless self.class.definition_for?(key)
+
+ if @original_hash.key?(key)
+ @original_hash[key]
+ else
+ self.class.definition_for(key).default_value
+ end
+ end
+
+ def []=(key, value)
+ key = key.to_sym
+
+ raise KeyError, "Undefined setting: #{key}" unless self.class.definition_for?(key)
+
+ typecast_value = self.class.definition_for(key).type_cast(value)
+
+ if typecast_value.nil?
+ @original_hash.delete(key)
+ else
+ @original_hash[key] = typecast_value
+ end
+ end
+
+ def update(params)
+ params.each do |k, v|
+ self[k] = v unless v.nil?
+ end
+ end
+
+ keys.each do |key|
+ define_method(key) do
+ self[key]
+ end
+ end
+
+ def as_json
+ @original_hash
+ end
+end
diff --git a/app/models/user_settings/dsl.rb b/app/models/user_settings/dsl.rb
new file mode 100644
index 000000000..26238bbbe
--- /dev/null
+++ b/app/models/user_settings/dsl.rb
@@ -0,0 +1,37 @@
+# frozen_string_literal: true
+
+module UserSettings::DSL
+ module ClassMethods
+ def setting(key, options = {})
+ @definitions ||= {}
+
+ UserSettings::Setting.new(key, options).tap do |s|
+ @definitions[s.key] = s
+ end
+ end
+
+ def namespace(key, &block)
+ @definitions ||= {}
+
+ UserSettings::Namespace.new(key).configure(&block).tap do |n|
+ @definitions.merge!(n.definitions)
+ end
+ end
+
+ def keys
+ @definitions.keys
+ end
+
+ def definition_for(key)
+ @definitions[key.to_sym]
+ end
+
+ def definition_for?(key)
+ @definitions.key?(key.to_sym)
+ end
+ end
+
+ def self.included(base)
+ base.extend ClassMethods
+ end
+end
diff --git a/app/models/user_settings/glue.rb b/app/models/user_settings/glue.rb
new file mode 100644
index 000000000..02066a411
--- /dev/null
+++ b/app/models/user_settings/glue.rb
@@ -0,0 +1,23 @@
+# frozen_string_literal: true
+
+module UserSettings::Glue
+ def to_model
+ self
+ end
+
+ def to_key
+ ''
+ end
+
+ def persisted?
+ false
+ end
+
+ def type_for_attribute(key)
+ self.class.definition_for(key)&.type
+ end
+
+ def has_attribute?(key) # rubocop:disable Naming/PredicateName
+ self.class.definition_for?(key)
+ end
+end
diff --git a/app/models/user_settings/namespace.rb b/app/models/user_settings/namespace.rb
new file mode 100644
index 000000000..b8f7e092e
--- /dev/null
+++ b/app/models/user_settings/namespace.rb
@@ -0,0 +1,21 @@
+# frozen_string_literal: true
+
+class UserSettings::Namespace
+ attr_reader :name, :definitions
+
+ def initialize(name)
+ @name = name.to_sym
+ @definitions = {}
+ end
+
+ def configure(&block)
+ instance_eval(&block)
+ self
+ end
+
+ def setting(key, options = {})
+ UserSettings::Setting.new(key, options.merge(namespace: name)).tap do |s|
+ @definitions[s.key] = s
+ end
+ end
+end
diff --git a/app/models/user_settings/setting.rb b/app/models/user_settings/setting.rb
new file mode 100644
index 000000000..c359c593b
--- /dev/null
+++ b/app/models/user_settings/setting.rb
@@ -0,0 +1,48 @@
+# frozen_string_literal: true
+
+class UserSettings::Setting
+ attr_reader :name, :namespace, :in
+
+ def initialize(name, options = {})
+ @name = name.to_sym
+ @default_value = options[:default]
+ @namespace = options[:namespace]
+ @in = options[:in]
+ end
+
+ def default_value
+ if @default_value.respond_to?(:call)
+ @default_value.call
+ else
+ @default_value
+ end
+ end
+
+ def type
+ if @default_value.is_a?(TrueClass) || @default_value.is_a?(FalseClass)
+ ActiveModel::Type::Boolean.new
+ else
+ ActiveModel::Type::String.new
+ end
+ end
+
+ def type_cast(value)
+ if type.respond_to?(:cast)
+ type.cast(value)
+ else
+ value
+ end
+ end
+
+ def to_a
+ [key, default_value]
+ end
+
+ def key
+ if namespace
+ "#{namespace}.#{name}".to_sym
+ else
+ name
+ end
+ end
+end
diff --git a/app/services/notify_service.rb b/app/services/notify_service.rb
index 4c7acbcac..994ca588a 100644
--- a/app/services/notify_service.rb
+++ b/app/services/notify_service.rb
@@ -3,6 +3,11 @@
class NotifyService < BaseService
include Redisable
+ NON_EMAIL_TYPES = %i(
+ admin.report
+ admin.sign_up
+ ).freeze
+
def call(recipient, type, activity)
@recipient = recipient
@activity = activity
@@ -36,11 +41,11 @@ class NotifyService < BaseService
end
def optional_non_follower?
- @recipient.user.settings.interactions['must_be_follower'] && !@notification.from_account.following?(@recipient)
+ @recipient.user.settings['interactions.must_be_follower'] && !@notification.from_account.following?(@recipient)
end
def optional_non_following?
- @recipient.user.settings.interactions['must_be_following'] && !following_sender?
+ @recipient.user.settings['interactions.must_be_following'] && !following_sender?
end
def message?
@@ -82,7 +87,7 @@ class NotifyService < BaseService
def optional_non_following_and_direct?
direct_message? &&
- @recipient.user.settings.interactions['must_be_following_dm'] &&
+ @recipient.user.settings['interactions.must_be_following_dm'] &&
!following_sender? &&
!response_to_recipient?
end
@@ -171,6 +176,6 @@ class NotifyService < BaseService
end
def send_email_for_notification_type?
- @recipient.user.settings.notification_emails[@notification.type.to_s]
+ NON_EMAIL_TYPES.exclude?(@notification.type) && @recipient.user.settings["notification_emails.#{@notification.type}"]
end
end
diff --git a/app/views/settings/preferences/appearance/show.html.haml b/app/views/settings/preferences/appearance/show.html.haml
index bc23df647..5358310e5 100644
--- a/app/views/settings/preferences/appearance/show.html.haml
+++ b/app/views/settings/preferences/appearance/show.html.haml
@@ -9,57 +9,58 @@
.fields-group.fields-row__column.fields-row__column-6
= f.input :locale, collection: I18n.available_locales, wrapper: :with_label, include_blank: false, label_method: lambda { |locale| native_locale_name(locale) }, selected: I18n.locale, hint: false
.fields-group.fields-row__column.fields-row__column-6
- = f.input :setting_theme, collection: Themes.instance.names, label_method: lambda { |theme| I18n.t("themes.#{theme}", default: theme) }, wrapper: :with_label, include_blank: false, hint: false
+ = f.simple_fields_for :settings, current_user.settings do |ff|
+ = ff.input :theme, collection: Themes.instance.names, label_method: lambda { |theme| I18n.t("themes.#{theme}", default: theme) }, wrapper: :with_label, include_blank: false, hint: false
- unless I18n.locale == :en
.flash-message.translation-prompt
#{t 'appearance.localization.body'} #{content_tag(:a, t('appearance.localization.guide_link_text'), href: t('appearance.localization.guide_link'), target: '_blank', rel: 'noopener')}
- %h4= t 'appearance.advanced_web_interface'
+ = f.simple_fields_for :settings, current_user.settings do |ff|
+ %h4= t 'appearance.advanced_web_interface'
- %p.hint= t 'appearance.advanced_web_interface_hint'
+ %p.hint= t 'appearance.advanced_web_interface_hint'
- .fields-group
- = f.input :setting_advanced_layout, as: :boolean, wrapper: :with_label, hint: false
+ .fields-group
+ = ff.input :'web.advanced_layout', wrapper: :with_label, hint: false, label: I18n.t('simple_form.labels.defaults.setting_advanced_layout')
+ %h4= t 'appearance.animations_and_accessibility'
- %h4= t 'appearance.animations_and_accessibility'
+ .fields-group
+ = ff.input :'web.use_pending_items', wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_use_pending_items'), hint: I18n.t('simple_form.hints.defaults.setting_use_pending_items')
- .fields-group
- = f.input :setting_use_pending_items, as: :boolean, wrapper: :with_label
+ .fields-group
+ = ff.input :'web.auto_play', wrapper: :with_label, recommended: true, label: I18n.t('simple_form.labels.defaults.setting_auto_play_gif')
+ = ff.input :'web.reduce_motion', wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_reduce_motion')
+ = ff.input :'web.disable_swiping', wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_disable_swiping')
+ = ff.input :'web.use_system_font', wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_system_font_ui')
- .fields-group
- = f.input :setting_auto_play_gif, as: :boolean, wrapper: :with_label, recommended: true
- = f.input :setting_reduce_motion, as: :boolean, wrapper: :with_label
- = f.input :setting_disable_swiping, as: :boolean, wrapper: :with_label
- = f.input :setting_system_font_ui, as: :boolean, wrapper: :with_label
+ %h4= t 'appearance.toot_layout'
- %h4= t 'appearance.toot_layout'
+ .fields-group
+ = ff.input :'web.crop_images', wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_crop_images')
- .fields-group
- = f.input :setting_crop_images, as: :boolean, wrapper: :with_label
+ %h4= t 'appearance.discovery'
- %h4= t 'appearance.discovery'
+ .fields-group
+ = ff.input :'web.trends', wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_trends')
- .fields-group
- = f.input :setting_trends, as: :boolean, wrapper: :with_label
+ %h4= t 'appearance.confirmation_dialogs'
- %h4= t 'appearance.confirmation_dialogs'
+ .fields-group
+ = ff.input :'web.unfollow_modal', wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_unfollow_modal')
+ = ff.input :'web.reblog_modal', wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_boost_modal')
+ = ff.input :'web.delete_modal', wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_delete_modal')
- .fields-group
- = f.input :setting_unfollow_modal, as: :boolean, wrapper: :with_label
- = f.input :setting_boost_modal, as: :boolean, wrapper: :with_label
- = f.input :setting_delete_modal, as: :boolean, wrapper: :with_label
+ %h4= t 'appearance.sensitive_content'
- %h4= t 'appearance.sensitive_content'
+ .fields-group
+ = ff.input :'web.display_media', collection: ['default', 'show_all', 'hide_all'],label_method: lambda { |item| t("simple_form.hints.defaults.setting_display_media_#{item}") }, hint: false, as: :radio_buttons, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li', wrapper: :with_floating_label, label: I18n.t('simple_form.labels.defaults.setting_display_media')
- .fields-group
- = f.input :setting_display_media, collection: ['default', 'show_all', 'hide_all'], label_method: lambda { |item| t("simple_form.hints.defaults.setting_display_media_#{item}") }, hint: false, as: :radio_buttons, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li', wrapper: :with_floating_label
+ .fields-group
+ = ff.input :'web.use_blurhash', wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_use_blurhash'), hint: I18n.t('simple_form.hints.defaults.setting_use_blurhash')
- .fields-group
- = f.input :setting_use_blurhash, as: :boolean, wrapper: :with_label
-
- .fields-group
- = f.input :setting_expand_spoilers, as: :boolean, wrapper: :with_label
+ .fields-group
+ = ff.input :'web.expand_content_warnings', wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_expand_spoilers')
.actions
= f.button :button, t('generic.save_changes'), type: :submit
diff --git a/app/views/settings/preferences/notifications/show.html.haml b/app/views/settings/preferences/notifications/show.html.haml
index f00dbadd4..cb1ad0886 100644
--- a/app/views/settings/preferences/notifications/show.html.haml
+++ b/app/views/settings/preferences/notifications/show.html.haml
@@ -11,25 +11,25 @@
%p.hint= t 'notifications.email_events_hint'
- .fields-group
- = f.simple_fields_for :notification_emails, hash_to_object(current_user.settings.notification_emails) do |ff|
- = ff.input :follow, as: :boolean, wrapper: :with_label
- = ff.input :follow_request, as: :boolean, wrapper: :with_label
- = ff.input :reblog, as: :boolean, wrapper: :with_label
- = ff.input :favourite, as: :boolean, wrapper: :with_label
- = ff.input :mention, as: :boolean, wrapper: :with_label
- = ff.input :report, as: :boolean, wrapper: :with_label if current_user.can?(:manage_reports)
- = ff.input :appeal, as: :boolean, wrapper: :with_label if current_user.can?(:manage_appeals)
- = ff.input :pending_account, as: :boolean, wrapper: :with_label if current_user.can?(:manage_users)
- = ff.input :trending_tag, as: :boolean, wrapper: :with_label if current_user.can?(:manage_taxonomies)
-
- .fields-group
- = f.input :setting_always_send_emails, as: :boolean, wrapper: :with_label
+ = f.simple_fields_for :settings, current_user.settings do |ff|
+ .fields-group
+ = ff.input :'notification_emails.follow', wrapper: :with_label, label: I18n.t('simple_form.labels.notification_emails.follow')
+ = ff.input :'notification_emails.follow_request', wrapper: :with_label, label: I18n.t('simple_form.labels.notification_emails.follow_request')
+ = ff.input :'notification_emails.reblog', wrapper: :with_label, label: I18n.t('simple_form.labels.notification_emails.reblog')
+ = ff.input :'notification_emails.favourite', wrapper: :with_label, label: I18n.t('simple_form.labels.notification_emails.favourite')
+ = ff.input :'notification_emails.mention', wrapper: :with_label, label: I18n.t('simple_form.labels.notification_emails.mention')
+ = ff.input :'notification_emails.report', wrapper: :with_label, label: I18n.t('simple_form.labels.notification_emails.report') if current_user.can?(:manage_reports)
+ = ff.input :'notification_emails.appeal', as: :boolean, wrapper: :with_label, label: I18n.t('simple_form.labels.notification_emails.appeal') if current_user.can?(:manage_appeals)
+ = ff.input :'notification_emails.pending_account', wrapper: :with_label, label: I18n.t('simple_form.labels.notification_emails.pending_account') if current_user.can?(:manage_users)
+ = ff.input :'notification_emails.trends', wrapper: :with_label, label: I18n.t('simple_form.labels.notification_emails.trending_tag') if current_user.can?(:manage_taxonomies)
+
+ .fields-group
+ = ff.input :always_send_emails, wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_always_send_emails'), hint: I18n.t('simple_form.hints.defaults.setting_always_send_emails')
%h4= t 'notifications.other_settings'
.fields-group
- = f.simple_fields_for :interactions, hash_to_object(current_user.settings.interactions) do |ff|
- = ff.input :must_be_follower, as: :boolean, wrapper: :with_label
- = ff.input :must_be_following, as: :boolean, wrapper: :with_label
- = ff.input :must_be_following_dm, as: :boolean, wrapper: :with_label
+ = f.simple_fields_for :settings, current_user.settings do |ff|
+ = ff.input :'interactions.must_be_follower', wrapper: :with_label, label: I18n.t('simple_form.labels.interactions.must_be_follower')
+ = ff.input :'interactions.must_be_following', wrapper: :with_label, label: I18n.t('simple_form.labels.interactions.must_be_following')
+ = ff.input :'interactions.must_be_following_dm', wrapper: :with_label, label: I18n.t('simple_form.labels.interactions.must_be_following_dm')
diff --git a/app/views/settings/preferences/other/show.html.haml b/app/views/settings/preferences/other/show.html.haml
index 44f4af2eb..6590ec7c2 100644
--- a/app/views/settings/preferences/other/show.html.haml
+++ b/app/views/settings/preferences/other/show.html.haml
@@ -7,26 +7,27 @@
= simple_form_for current_user, url: settings_preferences_other_path, html: { method: :put, id: 'edit_preferences' } do |f|
= render 'shared/error_messages', object: current_user
- .fields-group
- = f.input :setting_noindex, as: :boolean, wrapper: :with_label
+ = f.simple_fields_for :settings, current_user.settings do |ff|
+ .fields-group
+ = ff.input :noindex, wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_noindex'), hint: I18n.t('simple_form.hints.defaults.setting_noindex')
- .fields-group
- = f.input :setting_aggregate_reblogs, as: :boolean, wrapper: :with_label, recommended: true
+ .fields-group
+ = ff.input :aggregate_reblogs, wrapper: :with_label, recommended: true, label: I18n.t('simple_form.labels.defaults.setting_aggregate_reblogs'), hint: I18n.t('simple_form.hints.defaults.setting_aggregate_reblogs')
- %h4= t 'preferences.posting_defaults'
+ %h4= t 'preferences.posting_defaults'
- .fields-row
- .fields-group.fields-row__column.fields-row__column-6
- = f.input :setting_default_privacy, collection: Status.selectable_visibilities, wrapper: :with_label, include_blank: false, label_method: lambda { |visibility| safe_join([I18n.t("statuses.visibilities.#{visibility}"), I18n.t("statuses.visibilities.#{visibility}_long")], ' - ') }, required: false, hint: false
+ .fields-row
+ .fields-group.fields-row__column.fields-row__column-6
+ = ff.input :default_privacy, collection: Status.selectable_visibilities, wrapper: :with_label, include_blank: false, label_method: lambda { |visibility| safe_join([I18n.t("statuses.visibilities.#{visibility}"), I18n.t("statuses.visibilities.#{visibility}_long")], ' - ') }, required: false, hint: false, label: I18n.t('simple_form.labels.defaults.setting_default_privacy')
- .fields-group.fields-row__column.fields-row__column-6
- = f.input :setting_default_language, collection: [nil] + filterable_languages, wrapper: :with_label, label_method: lambda { |locale| locale.nil? ? I18n.t('statuses.default_language') : native_locale_name(locale) }, required: false, include_blank: false, hint: false
+ .fields-group.fields-row__column.fields-row__column-6
+ = ff.input :default_language, collection: [nil] + filterable_languages, wrapper: :with_label, label_method: lambda { |locale| locale.nil? ? I18n.t('statuses.default_language') : native_locale_name(locale) }, required: false, include_blank: false, hint: false, label: I18n.t('simple_form.labels.defaults.setting_default_language')
- .fields-group
- = f.input :setting_default_sensitive, as: :boolean, wrapper: :with_label
+ .fields-group
+ = ff.input :default_sensitive, wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_default_sensitive'), hint: I18n.t('simple_form.hints.defaults.setting_default_sensitive')
- .fields-group
- = f.input :setting_show_application, as: :boolean, wrapper: :with_label, recommended: true
+ .fields-group
+ = ff.input :show_application, wrapper: :with_label, recommended: true, label: I18n.t('simple_form.labels.defaults.setting_show_application'), hint: I18n.t('simple_form.hints.defaults.setting_show_application')
%h4= t 'preferences.public_timelines'
diff --git a/config/initializers/inflections.rb b/config/initializers/inflections.rb
index a361cb0ec..95f0b5788 100644
--- a/config/initializers/inflections.rb
+++ b/config/initializers/inflections.rb
@@ -26,6 +26,7 @@ ActiveSupport::Inflector.inflections(:en) do |inflect|
inflect.acronym 'URL'
inflect.acronym 'ASCII'
inflect.acronym 'DeepL'
+ inflect.acronym 'DSL'
inflect.singular 'data', 'data'
end
diff --git a/config/settings.yml b/config/settings.yml
index f0b09dd5c..4ac521a4b 100644
--- a/config/settings.yml
+++ b/config/settings.yml
@@ -12,48 +12,14 @@ defaults: &defaults
registrations_mode: 'open'
profile_directory: true
closed_registrations_message: ''
- open_deletion: true
- min_invite_role: 'admin'
timeline_preview: true
show_staff_badge: true
- default_sensitive: false
- unfollow_modal: false
- boost_modal: false
- delete_modal: true
- auto_play_gif: false
- display_media: 'default'
- expand_spoilers: false
preview_sensitive_media: false
- reduce_motion: false
- disable_swiping: false
- show_application: true
- system_font_ui: false
noindex: false
theme: 'default'
- aggregate_reblogs: true
- advanced_layout: false
- use_blurhash: true
- use_pending_items: false
trends: true
trends_as_landing_page: true
trendable_by_default: false
- crop_images: true
- notification_emails:
- follow: true
- reblog: false
- favourite: false
- mention: true
- follow_request: true
- digest: true
- report: true
- pending_account: true
- trending_tag: true
- appeal: true
- always_send_emails: false
- interactions:
- must_be_follower: false
- must_be_following: false
- must_be_following_dm: false
reserved_usernames:
- admin
- support
diff --git a/db/migrate/20230215074327_add_settings_to_users.rb b/db/migrate/20230215074327_add_settings_to_users.rb
new file mode 100644
index 000000000..ff5308f42
--- /dev/null
+++ b/db/migrate/20230215074327_add_settings_to_users.rb
@@ -0,0 +1,7 @@
+# frozen_string_literal: true
+
+class AddSettingsToUsers < ActiveRecord::Migration[6.1]
+ def change
+ add_column :users, :settings, :text
+ end
+end
diff --git a/db/migrate/20230215074423_move_user_settings.rb b/db/migrate/20230215074423_move_user_settings.rb
new file mode 100644
index 000000000..351a8b61d
--- /dev/null
+++ b/db/migrate/20230215074423_move_user_settings.rb
@@ -0,0 +1,84 @@
+# frozen_string_literal: true
+
+class MoveUserSettings < ActiveRecord::Migration[6.1]
+ class User < ApplicationRecord; end
+
+ MAPPING = {
+ default_privacy: 'default_privacy',
+ default_sensitive: 'web.default_sensitive',
+ default_language: 'default_language',
+ noindex: 'noindex',
+ theme: 'theme',
+ trends: 'web.trends',
+ unfollow_modal: 'web.unfollow_modal',
+ boost_modal: 'web.reblog_modal',
+ delete_modal: 'web.delete_modal',
+ auto_play_gif: 'web.auto_play',
+ display_media: 'web.display_media',
+ expand_spoilers: 'web.expand_content_warnings',
+ reduce_motion: 'web.reduce_motion',
+ disable_swiping: 'web.disable_swiping',
+ show_application: 'show_application',
+ system_font_ui: 'web.use_system_font',
+ aggregate_reblogs: 'aggregate_reblogs',
+ advanced_layout: 'web.advanced_layout',
+ use_blurhash: 'web.use_blurhash',
+ use_pending_items: 'web.use_pending_items',
+ crop_images: 'web.crop_images',
+ notification_emails: {
+ follow: 'notification_emails.follow',
+ reblog: 'notification_emails.reblog',
+ favourite: 'notification_emails.favourite',
+ mention: 'notification_emails.mention',
+ follow_request: 'notification_emails.follow_request',
+ report: 'notification_emails.report',
+ pending_account: 'notification_emails.pending_account',
+ trending_tag: 'notification_emails.trends',
+ appeal: 'notification_emails.appeal',
+ }.freeze,
+ always_send_emails: 'always_send_emails',
+ interactions: {
+ must_be_follower: 'interactions.must_be_follower',
+ must_be_following: 'interactions.must_be_following',
+ must_be_following_dm: 'interactions.must_be_following_dm',
+ }.freeze,
+ }.freeze
+
+ class LegacySetting < ApplicationRecord
+ self.table_name = 'settings'
+
+ def var
+ self[:var]&.to_sym
+ end
+
+ def value
+ YAML.safe_load(self[:value], permitted_classes: [ActiveSupport::HashWithIndifferentAccess]) if self[:value].present?
+ end
+ end
+
+ def up
+ User.find_each do |user|
+ previous_settings = LegacySetting.where(thing_type: 'User', thing_id: user.id).index_by(&:var)
+
+ user_settings = {}
+
+ MAPPING.each do |legacy_key, new_key|
+ value = previous_settings[legacy_key]&.value
+
+ next if value.blank?
+
+ if value.is_a?(Hash)
+ value.each do |nested_key, nested_value|
+ user_settings[MAPPING[legacy_key][nested_key.to_sym]] = nested_value
+ end
+ else
+ user_settings[new_key] = value
+ end
+ end
+
+ user.update_column('settings', Oj.dump(user_settings)) # rubocop:disable Rails/SkipsModelValidations
+ end
+ end
+
+ def down; end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 704cef122..620bed2bc 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema.define(version: 2022_12_06_114142) do
+ActiveRecord::Schema.define(version: 2023_02_15_074423) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@@ -1060,6 +1060,7 @@ ActiveRecord::Schema.define(version: 2022_12_06_114142) do
t.inet "sign_up_ip"
t.boolean "skip_sign_in_token"
t.bigint "role_id"
+ t.text "settings"
t.index ["account_id"], name: "index_users_on_account_id"
t.index ["confirmation_token"], name: "index_users_on_confirmation_token", unique: true
t.index ["created_by_application_id"], name: "index_users_on_created_by_application_id", where: "(created_by_application_id IS NOT NULL)"
diff --git a/lib/tasks/tests.rake b/lib/tasks/tests.rake
index 51a6ee0d7..35073b78b 100644
--- a/lib/tasks/tests.rake
+++ b/lib/tasks/tests.rake
@@ -54,7 +54,7 @@ namespace :tests do
exit(1)
end
- unless User.find(1).settings.notification_emails['favourite'] == true && User.find(1).settings.notification_emails['mention'] == false
+ unless User.find(1).settings['notification_emails.favourite'] == true && User.find(1).settings['notification_emails.mention'] == false
puts 'User settings not kept as expected'
exit(1)
end
diff --git a/spec/controllers/api/v1/accounts/credentials_controller_spec.rb b/spec/controllers/api/v1/accounts/credentials_controller_spec.rb
index 57fe0aee6..b5d5c37a9 100644
--- a/spec/controllers/api/v1/accounts/credentials_controller_spec.rb
+++ b/spec/controllers/api/v1/accounts/credentials_controller_spec.rb
@@ -46,6 +46,7 @@ describe Api::V1::Accounts::CredentialsController do
end
it 'updates account info' do
+ user.reload
user.account.reload
expect(user.account.display_name).to eq("Alice Isn't Dead")
diff --git a/spec/controllers/application_controller_spec.rb b/spec/controllers/application_controller_spec.rb
index 35c7326cb..bc6c6c0c5 100644
--- a/spec/controllers/application_controller_spec.rb
+++ b/spec/controllers/application_controller_spec.rb
@@ -88,21 +88,19 @@ describe ApplicationController, type: :controller do
it 'returns instances\'s default theme when user didn\'t set theme' do
current_user = Fabricate(:user)
+ current_user.settings.update(theme: 'contrast', noindex: false)
+ current_user.save
sign_in current_user
- allow(Setting).to receive(:[]).with('theme').and_return 'contrast'
- allow(Setting).to receive(:[]).with('noindex').and_return false
-
expect(controller.view_context.current_theme).to eq 'contrast'
end
it 'returns user\'s theme when it is set' do
current_user = Fabricate(:user)
- current_user.settings['theme'] = 'mastodon-light'
+ current_user.settings.update(theme: 'mastodon-light')
+ current_user.save
sign_in current_user
- allow(Setting).to receive(:[]).with('theme').and_return 'contrast'
-
expect(controller.view_context.current_theme).to eq 'mastodon-light'
end
end
diff --git a/spec/controllers/settings/preferences/notifications_controller_spec.rb b/spec/controllers/settings/preferences/notifications_controller_spec.rb
index 66fb8c5eb..29b7b6aec 100644
--- a/spec/controllers/settings/preferences/notifications_controller_spec.rb
+++ b/spec/controllers/settings/preferences/notifications_controller_spec.rb
@@ -20,20 +20,22 @@ describe Settings::Preferences::NotificationsController do
describe 'PUT #update' do
it 'updates notifications settings' do
- user.settings['notification_emails'] = user.settings['notification_emails'].merge('follow' => false)
- user.settings['interactions'] = user.settings['interactions'].merge('must_be_follower' => true)
+ user.settings.update('notification_emails.follow': false, 'interactions.must_be_follower': true)
+ user.save
put :update, params: {
user: {
- notification_emails: { follow: '1' },
- interactions: { must_be_follower: '0' },
+ settings_attributes: {
+ 'notification_emails.follow': '1',
+ 'interactions.must_be_follower': '0',
+ },
},
}
expect(response).to redirect_to(settings_preferences_notifications_path)
user.reload
- expect(user.settings['notification_emails']['follow']).to be true
- expect(user.settings['interactions']['must_be_follower']).to be false
+ expect(user.settings['notification_emails.follow']).to be true
+ expect(user.settings['interactions.must_be_follower']).to be false
end
end
end
diff --git a/spec/controllers/settings/preferences/other_controller_spec.rb b/spec/controllers/settings/preferences/other_controller_spec.rb
index 63eeefaf0..249d1b5b5 100644
--- a/spec/controllers/settings/preferences/other_controller_spec.rb
+++ b/spec/controllers/settings/preferences/other_controller_spec.rb
@@ -29,20 +29,22 @@ describe Settings::Preferences::OtherController do
end
it 'updates user settings' do
- user.settings['boost_modal'] = false
- user.settings['delete_modal'] = true
+ user.settings.update('web.reblog_modal': false, 'web.delete_modal': true)
+ user.save
put :update, params: {
user: {
- setting_boost_modal: '1',
- setting_delete_modal: '0',
+ settings_attributes: {
+ 'web.reblog_modal': '1',
+ 'web.delete_modal': '0',
+ },
},
}
expect(response).to redirect_to(settings_preferences_other_path)
user.reload
- expect(user.settings['boost_modal']).to be true
- expect(user.settings['delete_modal']).to be false
+ expect(user.settings['web.reblog_modal']).to be true
+ expect(user.settings['web.delete_modal']).to be false
end
end
end
diff --git a/spec/lib/settings/extend_spec.rb b/spec/lib/settings/extend_spec.rb
deleted file mode 100644
index ea623137b..000000000
--- a/spec/lib/settings/extend_spec.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-# frozen_string_literal: true
-
-require 'rails_helper'
-
-RSpec.describe Settings::Extend do
- class User
- include Settings::Extend
- end
-
- describe '#settings' do
- it 'sets @settings as an instance of Settings::ScopedSettings' do
- user = Fabricate(:user)
- expect(user.settings).to be_a Settings::ScopedSettings
- end
- end
-end
diff --git a/spec/lib/settings/scoped_settings_spec.rb b/spec/lib/settings/scoped_settings_spec.rb
deleted file mode 100644
index 7566685b4..000000000
--- a/spec/lib/settings/scoped_settings_spec.rb
+++ /dev/null
@@ -1,35 +0,0 @@
-# frozen_string_literal: true
-
-require 'rails_helper'
-
-RSpec.describe Settings::ScopedSettings do
- let(:object) { Fabricate(:user) }
- let(:scoped_setting) { described_class.new(object) }
- let(:val) { 'whatever' }
- let(:methods) { %i(auto_play_gif default_sensitive unfollow_modal boost_modal delete_modal reduce_motion system_font_ui noindex theme) }
-
- describe '.initialize' do
- it 'sets @object' do
- scoped_setting = described_class.new(object)
- expect(scoped_setting.instance_variable_get(:@object)).to be object
- end
- end
-
- describe '#method_missing' do
- it 'sets scoped_setting.method_name = val' do
- methods.each do |key|
- scoped_setting.send("#{key}=", val)
- expect(scoped_setting.send(key)).to eq val
- end
- end
- end
-
- describe '#[]= and #[]' do
- it 'sets [key] = val' do
- methods.each do |key|
- scoped_setting[key] = val
- expect(scoped_setting[key]).to eq val
- end
- end
- end
-end
diff --git a/spec/lib/user_settings_decorator_spec.rb b/spec/lib/user_settings_decorator_spec.rb
deleted file mode 100644
index 3b9b7ee2b..000000000
--- a/spec/lib/user_settings_decorator_spec.rb
+++ /dev/null
@@ -1,84 +0,0 @@
-# frozen_string_literal: true
-
-require 'rails_helper'
-
-describe UserSettingsDecorator do
- describe 'update' do
- let(:user) { Fabricate(:user) }
- let(:settings) { described_class.new(user) }
-
- it 'updates the user settings value for email notifications' do
- values = { 'notification_emails' => { 'follow' => '1' } }
-
- settings.update(values)
- expect(user.settings['notification_emails']['follow']).to be true
- end
-
- it 'updates the user settings value for interactions' do
- values = { 'interactions' => { 'must_be_follower' => '0' } }
-
- settings.update(values)
- expect(user.settings['interactions']['must_be_follower']).to be false
- end
-
- it 'updates the user settings value for privacy' do
- values = { 'setting_default_privacy' => 'public' }
-
- settings.update(values)
- expect(user.settings['default_privacy']).to eq 'public'
- end
-
- it 'updates the user settings value for sensitive' do
- values = { 'setting_default_sensitive' => '1' }
-
- settings.update(values)
- expect(user.settings['default_sensitive']).to be true
- end
-
- it 'updates the user settings value for unfollow modal' do
- values = { 'setting_unfollow_modal' => '0' }
-
- settings.update(values)
- expect(user.settings['unfollow_modal']).to be false
- end
-
- it 'updates the user settings value for boost modal' do
- values = { 'setting_boost_modal' => '1' }
-
- settings.update(values)
- expect(user.settings['boost_modal']).to be true
- end
-
- it 'updates the user settings value for delete toot modal' do
- values = { 'setting_delete_modal' => '0' }
-
- settings.update(values)
- expect(user.settings['delete_modal']).to be false
- end
-
- it 'updates the user settings value for gif auto play' do
- values = { 'setting_auto_play_gif' => '0' }
-
- settings.update(values)
- expect(user.settings['auto_play_gif']).to be false
- end
-
- it 'updates the user settings value for system font in UI' do
- values = { 'setting_system_font_ui' => '0' }
-
- settings.update(values)
- expect(user.settings['system_font_ui']).to be false
- end
-
- it 'decoerces setting values before applying' do
- values = {
- 'setting_delete_modal' => 'false',
- 'setting_boost_modal' => 'true',
- }
-
- settings.update(values)
- expect(user.settings['delete_modal']).to be false
- expect(user.settings['boost_modal']).to be true
- end
- end
-end
diff --git a/spec/models/user_settings/namespace_spec.rb b/spec/models/user_settings/namespace_spec.rb
new file mode 100644
index 000000000..ae2fa7b48
--- /dev/null
+++ b/spec/models/user_settings/namespace_spec.rb
@@ -0,0 +1,25 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe UserSettings::Namespace do
+ subject { described_class.new(name) }
+
+ let(:name) { :foo }
+
+ describe '#setting' do
+ before do
+ subject.setting :bar, default: 'baz'
+ end
+
+ it 'adds setting to definitions' do
+ expect(subject.definitions[:'foo.bar']).to have_attributes(name: :bar, namespace: :foo, default_value: 'baz')
+ end
+ end
+
+ describe '#definitions' do
+ it 'returns a hash' do
+ expect(subject.definitions).to be_a Hash
+ end
+ end
+end
diff --git a/spec/models/user_settings/setting_spec.rb b/spec/models/user_settings/setting_spec.rb
new file mode 100644
index 000000000..6e4ec6789
--- /dev/null
+++ b/spec/models/user_settings/setting_spec.rb
@@ -0,0 +1,74 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe UserSettings::Setting do
+ subject { described_class.new(name, options) }
+
+ let(:name) { :foo }
+ let(:options) { { default: default, namespace: namespace } }
+ let(:default) { false }
+ let(:namespace) { nil }
+
+ describe '#default_value' do
+ context 'when default value is a primitive value' do
+ it 'returns default value' do
+ expect(subject.default_value).to eq default
+ end
+ end
+
+ context 'when default value is a proc' do
+ let(:default) { -> { 'bar' } }
+
+ it 'returns value from proc' do
+ expect(subject.default_value).to eq 'bar'
+ end
+ end
+ end
+
+ describe '#type' do
+ it 'returns a type' do
+ expect(subject.type).to be_a ActiveModel::Type::Value
+ end
+ end
+
+ describe '#type_cast' do
+ context 'when default value is a boolean' do
+ let(:default) { false }
+
+ it 'returns boolean' do
+ expect(subject.type_cast('1')).to be true
+ end
+ end
+
+ context 'when default value is a string' do
+ let(:default) { '' }
+
+ it 'returns string' do
+ expect(subject.type_cast(1)).to eq '1'
+ end
+ end
+ end
+
+ describe '#to_a' do
+ it 'returns an array' do
+ expect(subject.to_a).to eq [name, default]
+ end
+ end
+
+ describe '#key' do
+ context 'when there is no namespace' do
+ it 'returnsn a symbol' do
+ expect(subject.key).to eq :foo
+ end
+ end
+
+ context 'when there is a namespace' do
+ let(:namespace) { :bar }
+
+ it 'returns a symbol' do
+ expect(subject.key).to eq :'bar.foo'
+ end
+ end
+ end
+end
diff --git a/spec/models/user_settings_spec.rb b/spec/models/user_settings_spec.rb
new file mode 100644
index 000000000..f0e4272fd
--- /dev/null
+++ b/spec/models/user_settings_spec.rb
@@ -0,0 +1,110 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe UserSettings do
+ subject { described_class.new(json) }
+
+ let(:json) { {} }
+
+ describe '#[]' do
+ context 'when setting is not set' do
+ it 'returns default value' do
+ expect(subject[:always_send_emails]).to be false
+ end
+ end
+
+ context 'when setting is set' do
+ let(:json) { { default_language: 'fr' } }
+
+ it 'returns value' do
+ expect(subject[:default_language]).to eq 'fr'
+ end
+ end
+
+ context 'when setting was not defined' do
+ it 'raises error' do
+ expect { subject[:foo] }.to raise_error UserSettings::KeyError
+ end
+ end
+ end
+
+ describe '#[]=' do
+ context 'when value matches type' do
+ before do
+ subject[:always_send_emails] = true
+ end
+
+ it 'updates value' do
+ expect(subject[:always_send_emails]).to be true
+ end
+ end
+
+ context 'when value needs to be type-cast' do
+ before do
+ subject[:always_send_emails] = '1'
+ end
+
+ it 'updates value with a type-cast' do
+ expect(subject[:always_send_emails]).to be true
+ end
+ end
+ end
+
+ describe '#update' do
+ before do
+ subject.update(always_send_emails: true, default_language: 'fr', default_privacy: nil)
+ end
+
+ it 'updates values' do
+ expect(subject[:always_send_emails]).to be true
+ expect(subject[:default_language]).to eq 'fr'
+ end
+
+ it 'does not set values that are nil' do
+ expect(subject.as_json).to_not include(default_privacy: nil)
+ end
+ end
+
+ describe '#as_json' do
+ let(:json) { { default_language: 'fr' } }
+
+ it 'returns hash' do
+ expect(subject.as_json).to eq json
+ end
+ end
+
+ describe '.keys' do
+ it 'returns an array' do
+ expect(described_class.keys).to be_a Array
+ end
+ end
+
+ describe '.definition_for' do
+ context 'when key is defined' do
+ it 'returns a setting' do
+ expect(described_class.definition_for(:always_send_emails)).to be_a UserSettings::Setting
+ end
+ end
+
+ context 'when key is not defined' do
+ it 'returns nil' do
+ expect(described_class.definition_for(:foo)).to be_nil
+ end
+ end
+ end
+
+ describe '.definition_for?' do
+ context 'when key is defined' do
+ it 'returns true' do
+ expect(described_class.definition_for?(:always_send_emails)).to be true
+ end
+ end
+
+ context 'when key is not defined' do
+ it 'returns false' do
+ expect(described_class.definition_for?(:foo)).to be false
+ end
+ end
+ end
+end
diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb
index 3e7b59f17..ab883927a 100644
--- a/spec/models/user_spec.rb
+++ b/spec/models/user_spec.rb
@@ -313,9 +313,9 @@ RSpec.describe User, type: :model do
end
describe 'settings' do
- it 'is instance of Settings::ScopedSettings' do
+ it 'is instance of UserSettings' do
user = Fabricate(:user)
- expect(user.settings).to be_a Settings::ScopedSettings
+ expect(user.settings).to be_a UserSettings
end
end
@@ -379,16 +379,6 @@ RSpec.describe User, type: :model do
end
end
- it_behaves_like 'Settings-extended' do
- def create!
- User.create!(account: Fabricate(:account, user: nil), email: 'foo@mastodon.space', password: 'abcd1234', agreement: true)
- end
-
- def fabricate
- Fabricate(:user)
- end
- end
-
describe 'token_for_app' do
let(:user) { Fabricate(:user) }
let(:app) { Fabricate(:application, owner: user) }
diff --git a/spec/services/notify_service_spec.rb b/spec/services/notify_service_spec.rb
index c58cebbfb..616a7aa20 100644
--- a/spec/services/notify_service_spec.rb
+++ b/spec/services/notify_service_spec.rb
@@ -54,7 +54,8 @@ RSpec.describe NotifyService, type: :service do
let(:type) { :mention }
before do
- user.settings.interactions = user.settings.interactions.merge('must_be_following_dm' => enabled)
+ user.settings.update('interactions.must_be_following_dm': enabled)
+ user.save
end
context 'if recipient is supposed to be following sender' do
@@ -155,8 +156,8 @@ RSpec.describe NotifyService, type: :service do
before do
ActionMailer::Base.deliveries.clear
- notification_emails = user.settings.notification_emails
- user.settings.notification_emails = notification_emails.merge('follow' => enabled)
+ user.settings.update('notification_emails.follow': enabled)
+ user.save
end
context 'when email notification is enabled' do
diff --git a/spec/services/report_service_spec.rb b/spec/services/report_service_spec.rb
index 9d81bd971..452400f72 100644
--- a/spec/services/report_service_spec.rb
+++ b/spec/services/report_service_spec.rb
@@ -96,7 +96,8 @@ RSpec.describe ReportService, type: :service do
before do
ActionMailer::Base.deliveries.clear
- source_account.user.settings.notification_emails['report'] = true
+ source_account.user.settings['notification_emails.report'] = true
+ source_account.user.save
end
it 'does not send an e-mail' do
--
cgit
From 9d39b111f18faac3812558cd29444a9bd48c959c Mon Sep 17 00:00:00 2001
From: Matt Jankowski
Date: Fri, 7 Apr 2023 14:39:34 +0200
Subject: Expand coverage for "system checks" (#24216)
---
spec/lib/admin/system_check/base_check_spec.rb | 27 ++++++
.../system_check/database_schema_check_spec.rb | 45 ++++++++++
.../admin/system_check/elasticsearch_check_spec.rb | 100 +++++++++++++++++++++
.../admin/system_check/media_privacy_check_spec.rb | 33 +++++++
spec/lib/admin/system_check/message_spec.rb | 14 +++
spec/lib/admin/system_check/rules_check_spec.rb | 53 +++++++++++
.../system_check/sidekiq_process_check_spec.rb | 45 ++++++++++
spec/lib/admin/system_check_spec.rb | 15 ++++
spec/support/examples/lib/admin/checks.rb | 21 +++++
9 files changed, 353 insertions(+)
create mode 100644 spec/lib/admin/system_check/base_check_spec.rb
create mode 100644 spec/lib/admin/system_check/database_schema_check_spec.rb
create mode 100644 spec/lib/admin/system_check/elasticsearch_check_spec.rb
create mode 100644 spec/lib/admin/system_check/media_privacy_check_spec.rb
create mode 100644 spec/lib/admin/system_check/message_spec.rb
create mode 100644 spec/lib/admin/system_check/rules_check_spec.rb
create mode 100644 spec/lib/admin/system_check/sidekiq_process_check_spec.rb
create mode 100644 spec/lib/admin/system_check_spec.rb
create mode 100644 spec/support/examples/lib/admin/checks.rb
(limited to 'spec/lib')
diff --git a/spec/lib/admin/system_check/base_check_spec.rb b/spec/lib/admin/system_check/base_check_spec.rb
new file mode 100644
index 000000000..fdd9f6b6c
--- /dev/null
+++ b/spec/lib/admin/system_check/base_check_spec.rb
@@ -0,0 +1,27 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+describe Admin::SystemCheck::BaseCheck do
+ subject(:check) { described_class.new(user) }
+
+ let(:user) { Fabricate(:user) }
+
+ describe 'skip?' do
+ it 'returns false' do
+ expect(check.skip?).to be false
+ end
+ end
+
+ describe 'pass?' do
+ it 'raises not implemented error' do
+ expect { check.pass? }.to raise_error(NotImplementedError)
+ end
+ end
+
+ describe 'message' do
+ it 'raises not implemented error' do
+ expect { check.message }.to raise_error(NotImplementedError)
+ end
+ end
+end
diff --git a/spec/lib/admin/system_check/database_schema_check_spec.rb b/spec/lib/admin/system_check/database_schema_check_spec.rb
new file mode 100644
index 000000000..db1dcb52f
--- /dev/null
+++ b/spec/lib/admin/system_check/database_schema_check_spec.rb
@@ -0,0 +1,45 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+describe Admin::SystemCheck::DatabaseSchemaCheck do
+ subject(:check) { described_class.new(user) }
+
+ let(:user) { Fabricate(:user) }
+
+ it_behaves_like 'a check available to devops users'
+
+ describe 'pass?' do
+ context 'when database needs migration' do
+ before do
+ context = instance_double(ActiveRecord::MigrationContext, needs_migration?: true)
+ allow(ActiveRecord::Base.connection).to receive(:migration_context).and_return(context)
+ end
+
+ it 'returns false' do
+ expect(check.pass?).to be false
+ end
+ end
+
+ context 'when database does not need migration' do
+ before do
+ context = instance_double(ActiveRecord::MigrationContext, needs_migration?: false)
+ allow(ActiveRecord::Base.connection).to receive(:migration_context).and_return(context)
+ end
+
+ it 'returns true' do
+ expect(check.pass?).to be true
+ end
+ end
+ end
+
+ describe 'message' do
+ it 'sends class name symbol to message instance' do
+ allow(Admin::SystemCheck::Message).to receive(:new).with(:database_schema_check)
+
+ check.message
+
+ expect(Admin::SystemCheck::Message).to have_received(:new).with(:database_schema_check)
+ end
+ end
+end
diff --git a/spec/lib/admin/system_check/elasticsearch_check_spec.rb b/spec/lib/admin/system_check/elasticsearch_check_spec.rb
new file mode 100644
index 000000000..1ffac89ee
--- /dev/null
+++ b/spec/lib/admin/system_check/elasticsearch_check_spec.rb
@@ -0,0 +1,100 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+describe Admin::SystemCheck::ElasticsearchCheck do
+ subject(:check) { described_class.new(user) }
+
+ let(:user) { Fabricate(:user) }
+
+ it_behaves_like 'a check available to devops users'
+
+ describe 'pass?' do
+ context 'when chewy is enabled' do
+ before { allow(Chewy).to receive(:enabled?).and_return(true) }
+
+ context 'when running version is present and high enough' do
+ before do
+ allow(Chewy.client).to receive(:info)
+ .and_return({ 'version' => { 'number' => '999.99.9' } })
+ end
+
+ it 'returns true' do
+ expect(check.pass?).to be true
+ end
+ end
+
+ context 'when running version is present and too low' do
+ context 'when compatible version is too low' do
+ before do
+ allow(Chewy.client).to receive(:info)
+ .and_return({ 'version' => { 'number' => '1.2.3', 'minimum_wire_compatibility_version' => '1.0' } })
+ end
+
+ it 'returns false' do
+ expect(check.pass?).to be false
+ end
+ end
+
+ context 'when compatible version is high enough' do
+ before do
+ allow(Chewy.client).to receive(:info)
+ .and_return({ 'version' => { 'number' => '1.2.3', 'minimum_wire_compatibility_version' => '99.9' } })
+ end
+
+ it 'returns true' do
+ expect(check.pass?).to be true
+ end
+ end
+ end
+
+ context 'when running version is missing' do
+ before do
+ client = instance_double(Elasticsearch::Transport::Client)
+ allow(client).to receive(:info).and_raise(Elasticsearch::Transport::Transport::Error)
+ allow(Chewy).to receive(:client).and_return(client)
+ end
+
+ it 'returns false' do
+ expect(check.pass?).to be false
+ end
+ end
+ end
+
+ context 'when chewy is not enabled' do
+ before { allow(Chewy).to receive(:enabled?).and_return(false) }
+
+ it 'returns true' do
+ expect(check.pass?).to be true
+ end
+ end
+ end
+
+ describe 'message' do
+ context 'when running version is present' do
+ before { allow(Chewy.client).to receive(:info).and_return({ 'version' => { 'number' => '999.99.9' } }) }
+
+ it 'sends class name symbol to message instance' do
+ allow(Admin::SystemCheck::Message).to receive(:new)
+ .with(:elasticsearch_version_check, anything)
+
+ check.message
+
+ expect(Admin::SystemCheck::Message).to have_received(:new)
+ .with(:elasticsearch_version_check, 'Elasticsearch 999.99.9 is running while 7.x is required')
+ end
+ end
+
+ context 'when running version is missing' do
+ it 'sends class name symbol to message instance' do
+ allow(Admin::SystemCheck::Message).to receive(:new)
+ .with(:elasticsearch_running_check)
+
+ check.message
+
+ expect(Admin::SystemCheck::Message).to have_received(:new)
+ .with(:elasticsearch_running_check)
+ end
+ end
+ end
+end
diff --git a/spec/lib/admin/system_check/media_privacy_check_spec.rb b/spec/lib/admin/system_check/media_privacy_check_spec.rb
new file mode 100644
index 000000000..316bf1215
--- /dev/null
+++ b/spec/lib/admin/system_check/media_privacy_check_spec.rb
@@ -0,0 +1,33 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+describe Admin::SystemCheck::MediaPrivacyCheck do
+ subject(:check) { described_class.new(user) }
+
+ let(:user) { Fabricate(:user) }
+
+ it_behaves_like 'a check available to devops users'
+
+ describe 'pass?' do
+ context 'when the media cannot be listed' do
+ before do
+ stub_request(:get, /ngrok.io/).to_return(status: 200, body: 'a list of no files')
+ end
+
+ it 'returns true' do
+ expect(check.pass?).to be true
+ end
+ end
+ end
+
+ describe 'message' do
+ it 'sends values to message instance' do
+ allow(Admin::SystemCheck::Message).to receive(:new).with(nil, nil, nil, true)
+
+ check.message
+
+ expect(Admin::SystemCheck::Message).to have_received(:new).with(nil, nil, nil, true)
+ end
+ end
+end
diff --git a/spec/lib/admin/system_check/message_spec.rb b/spec/lib/admin/system_check/message_spec.rb
new file mode 100644
index 000000000..c0671f345
--- /dev/null
+++ b/spec/lib/admin/system_check/message_spec.rb
@@ -0,0 +1,14 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+describe Admin::SystemCheck::Message do
+ subject(:check) { described_class.new(:key_value, :value_value, :action_value, :critical_value) }
+
+ it 'providers readers when initialized' do
+ expect(check.key).to eq :key_value
+ expect(check.value).to eq :value_value
+ expect(check.action).to eq :action_value
+ expect(check.critical).to eq :critical_value
+ end
+end
diff --git a/spec/lib/admin/system_check/rules_check_spec.rb b/spec/lib/admin/system_check/rules_check_spec.rb
new file mode 100644
index 000000000..fb3293fb2
--- /dev/null
+++ b/spec/lib/admin/system_check/rules_check_spec.rb
@@ -0,0 +1,53 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+describe Admin::SystemCheck::RulesCheck do
+ subject(:check) { described_class.new(user) }
+
+ let(:user) { Fabricate(:user) }
+
+ describe 'skip?' do
+ context 'when user can manage rules' do
+ before { allow(user).to receive(:can?).with(:manage_rules).and_return(true) }
+
+ it 'returns false' do
+ expect(check.skip?).to be false
+ end
+ end
+
+ context 'when user cannot manage rules' do
+ before { allow(user).to receive(:can?).with(:manage_rules).and_return(false) }
+
+ it 'returns true' do
+ expect(check.skip?).to be true
+ end
+ end
+ end
+
+ describe 'pass?' do
+ context 'when there is not a kept rule' do
+ it 'returns false' do
+ expect(check.pass?).to be false
+ end
+ end
+
+ context 'when there is a kept rule' do
+ before { Fabricate(:rule) }
+
+ it 'returns true' do
+ expect(check.pass?).to be true
+ end
+ end
+ end
+
+ describe 'message' do
+ it 'sends class name symbol to message instance' do
+ allow(Admin::SystemCheck::Message).to receive(:new).with(:rules_check, nil, '/admin/rules')
+
+ check.message
+
+ expect(Admin::SystemCheck::Message).to have_received(:new).with(:rules_check, nil, '/admin/rules')
+ end
+ end
+end
diff --git a/spec/lib/admin/system_check/sidekiq_process_check_spec.rb b/spec/lib/admin/system_check/sidekiq_process_check_spec.rb
new file mode 100644
index 000000000..9bd9daddf
--- /dev/null
+++ b/spec/lib/admin/system_check/sidekiq_process_check_spec.rb
@@ -0,0 +1,45 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+describe Admin::SystemCheck::SidekiqProcessCheck do
+ subject(:check) { described_class.new(user) }
+
+ let(:user) { Fabricate(:user) }
+
+ it_behaves_like 'a check available to devops users'
+
+ describe 'pass?' do
+ context 'when missing queues is empty' do
+ before do
+ process_set = instance_double(Sidekiq::ProcessSet, reduce: [])
+ allow(Sidekiq::ProcessSet).to receive(:new).and_return(process_set)
+ end
+
+ it 'returns true' do
+ expect(check.pass?).to be true
+ end
+ end
+
+ context 'when missing queues is not empty' do
+ before do
+ process_set = instance_double(Sidekiq::ProcessSet, reduce: [:something])
+ allow(Sidekiq::ProcessSet).to receive(:new).and_return(process_set)
+ end
+
+ it 'returns false' do
+ expect(check.pass?).to be false
+ end
+ end
+ end
+
+ describe 'message' do
+ it 'sends values to message instance' do
+ allow(Admin::SystemCheck::Message).to receive(:new).with(:sidekiq_process_check, 'default, push, mailers, pull, scheduler, ingress')
+
+ check.message
+
+ expect(Admin::SystemCheck::Message).to have_received(:new).with(:sidekiq_process_check, 'default, push, mailers, pull, scheduler, ingress')
+ end
+ end
+end
diff --git a/spec/lib/admin/system_check_spec.rb b/spec/lib/admin/system_check_spec.rb
new file mode 100644
index 000000000..30048fd3a
--- /dev/null
+++ b/spec/lib/admin/system_check_spec.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+describe Admin::SystemCheck do
+ let(:user) { Fabricate(:user) }
+
+ describe 'perform' do
+ let(:result) { described_class.perform(user) }
+
+ it 'runs all the checks' do
+ expect(result).to be_an(Array)
+ end
+ end
+end
diff --git a/spec/support/examples/lib/admin/checks.rb b/spec/support/examples/lib/admin/checks.rb
new file mode 100644
index 000000000..b50faa77b
--- /dev/null
+++ b/spec/support/examples/lib/admin/checks.rb
@@ -0,0 +1,21 @@
+# frozen_string_literal: true
+
+shared_examples 'a check available to devops users' do
+ describe 'skip?' do
+ context 'when user can view devops' do
+ before { allow(user).to receive(:can?).with(:view_devops).and_return(true) }
+
+ it 'returns false' do
+ expect(check.skip?).to be false
+ end
+ end
+
+ context 'when user cannot view devops' do
+ before { allow(user).to receive(:can?).with(:view_devops).and_return(false) }
+
+ it 'returns true' do
+ expect(check.skip?).to be true
+ end
+ end
+ end
+end
--
cgit
From ff168ef2024626f37fa776fde5739dcd58ecb9f2 Mon Sep 17 00:00:00 2001
From: Claire
Date: Sun, 9 Apr 2023 11:25:30 +0200
Subject: Fix most rubocop issues (#2165)
* Run rubocop --autocorrect on app/, config/ and lib/, also manually fix some remaining style issues
* Run rubocop --autocorrect-all on db/
* Run rubocop --autocorrect-all on `spec/` and fix remaining issues
---
.rubocop_todo.yml | 2 +
.../api/v1/timelines/public_controller.rb | 2 +-
app/controllers/auth/confirmations_controller.rb | 13 ++--
app/controllers/settings/flavours_controller.rb | 4 +-
app/helpers/accounts_helper.rb | 2 +-
app/lib/advanced_text_formatter.rb | 1 +
app/lib/feed_manager.rb | 2 +
app/lib/themes.rb | 45 ++++++------
app/models/direct_feed.rb | 9 +--
app/models/status.rb | 19 ++---
app/models/user.rb | 1 -
app/serializers/activitypub/note_serializer.rb | 1 +
app/serializers/rest/account_serializer.rb | 2 +-
app/serializers/rest/mute_serializer.rb | 4 +-
app/serializers/rest/status_serializer.rb | 4 +-
app/services/backup_service.rb | 2 +-
app/services/fan_out_on_write_service.rb | 2 +-
app/services/post_status_service.rb | 25 ++++---
app/validators/status_pin_validator.rb | 2 +-
config/initializers/0_duplicate_migrations.rb | 24 ++++---
config/initializers/simple_form.rb | 1 +
db/migrate/20171009222537_create_keyword_mutes.rb | 2 +
...900_move_keyword_mutes_into_glitch_namespace.rb | 2 +
...171210213213_add_local_only_flag_to_statuses.rb | 2 +
db/migrate/20180410220657_create_bookmarks.rb | 2 +
..._add_apply_to_mentions_flag_to_keyword_mutes.rb | 2 +
db/migrate/20180707193142_migrate_filters.rb | 12 ++--
.../20190512200918_add_content_type_to_statuses.rb | 2 +
...20209175231_add_content_type_to_status_edits.rb | 2 +
.../20180813160548_post_migrate_filters.rb | 6 +-
lib/sanitize_ext/sanitize_config.rb | 8 +--
lib/tasks/assets.rake | 12 ++--
lib/tasks/glitchsoc.rake | 8 ++-
.../api/v1/accounts/credentials_controller_spec.rb | 4 +-
.../api/v1/timelines/direct_controller_spec.rb | 2 +-
spec/controllers/application_controller_spec.rb | 4 +-
.../settings/flavours_controller_spec.rb | 3 +-
spec/lib/advanced_text_formatter_spec.rb | 82 +++++++++++-----------
spec/models/concerns/account_interactions_spec.rb | 39 +---------
spec/models/public_feed_spec.rb | 12 ++--
spec/models/status_spec.rb | 42 +++++------
spec/models/tag_feed_spec.rb | 2 +-
spec/policies/status_policy_spec.rb | 4 +-
spec/services/notify_service_spec.rb | 2 +-
spec/validators/status_length_validator_spec.rb | 2 +-
45 files changed, 210 insertions(+), 215 deletions(-)
(limited to 'spec/lib')
diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml
index 2e4801a55..dc7e21dc5 100644
--- a/.rubocop_todo.yml
+++ b/.rubocop_todo.yml
@@ -473,6 +473,7 @@ RSpec/ContextWording:
- 'spec/lib/activitypub/activity/create_spec.rb'
- 'spec/lib/activitypub/activity/follow_spec.rb'
- 'spec/lib/activitypub/activity/reject_spec.rb'
+ - 'spec/lib/advanced_text_formatter_spec.rb'
- 'spec/lib/emoji_formatter_spec.rb'
- 'spec/lib/entity_cache_spec.rb'
- 'spec/lib/feed_manager_spec.rb'
@@ -1321,6 +1322,7 @@ Rails/FilePath:
- 'app/models/setting.rb'
- 'app/validators/reaction_validator.rb'
- 'config/environments/test.rb'
+ - 'config/initializers/locale.rb'
- 'db/migrate/20170716191202_add_hide_notifications_to_mute.rb'
- 'db/migrate/20171005171936_add_disabled_to_custom_emojis.rb'
- 'db/migrate/20171028221157_add_reblogs_to_follows.rb'
diff --git a/app/controllers/api/v1/timelines/public_controller.rb b/app/controllers/api/v1/timelines/public_controller.rb
index 493fe4776..4675af921 100644
--- a/app/controllers/api/v1/timelines/public_controller.rb
+++ b/app/controllers/api/v1/timelines/public_controller.rb
@@ -40,7 +40,7 @@ class Api::V1::Timelines::PublicController < Api::BaseController
only_media: truthy_param?(:only_media),
allow_local_only: truthy_param?(:allow_local_only),
with_replies: Setting.show_replies_in_public_timelines,
- with_reblogs: Setting.show_reblogs_in_public_timelines,
+ with_reblogs: Setting.show_reblogs_in_public_timelines
)
end
diff --git a/app/controllers/auth/confirmations_controller.rb b/app/controllers/auth/confirmations_controller.rb
index 0817a905c..620fb621d 100644
--- a/app/controllers/auth/confirmations_controller.rb
+++ b/app/controllers/auth/confirmations_controller.rb
@@ -15,12 +15,6 @@ class Auth::ConfirmationsController < Devise::ConfirmationsController
skip_before_action :require_functional!
- def new
- super
-
- resource.email = current_user.unconfirmed_email || current_user.email if user_signed_in?
- end
-
def show
old_session_values = session.to_hash
reset_session
@@ -29,6 +23,12 @@ class Auth::ConfirmationsController < Devise::ConfirmationsController
super
end
+ def new
+ super
+
+ resource.email = current_user.unconfirmed_email || current_user.email if user_signed_in?
+ end
+
def confirm_captcha
check_captcha! do |message|
flash.now[:alert] = message
@@ -51,6 +51,7 @@ class Auth::ConfirmationsController < Devise::ConfirmationsController
# step.
confirmation_token = params[:confirmation_token]
return if confirmation_token.nil?
+
@confirmation_user = User.find_first_by_auth_conditions(confirmation_token: confirmation_token)
end
diff --git a/app/controllers/settings/flavours_controller.rb b/app/controllers/settings/flavours_controller.rb
index c1172598b..b179b9429 100644
--- a/app/controllers/settings/flavours_controller.rb
+++ b/app/controllers/settings/flavours_controller.rb
@@ -12,9 +12,7 @@ class Settings::FlavoursController < Settings::BaseController
end
def show
- unless Themes.instance.flavours.include?(params[:flavour]) || (params[:flavour] == current_flavour)
- redirect_to action: 'show', flavour: current_flavour
- end
+ redirect_to action: 'show', flavour: current_flavour unless Themes.instance.flavours.include?(params[:flavour]) || (params[:flavour] == current_flavour)
@listing = Themes.instance.flavours
@selected = params[:flavour]
diff --git a/app/helpers/accounts_helper.rb b/app/helpers/accounts_helper.rb
index 91c3a116b..b8277ee17 100644
--- a/app/helpers/accounts_helper.rb
+++ b/app/helpers/accounts_helper.rb
@@ -28,7 +28,7 @@ module AccountsHelper
end
def hide_followers_count?(account)
- Setting.hide_followers_count || account.user&.settings['hide_followers_count']
+ Setting.hide_followers_count || account.user&.settings&.[]('hide_followers_count')
end
def account_description(account)
diff --git a/app/lib/advanced_text_formatter.rb b/app/lib/advanced_text_formatter.rb
index 21e81d4d1..cdf1e2d9c 100644
--- a/app/lib/advanced_text_formatter.rb
+++ b/app/lib/advanced_text_formatter.rb
@@ -15,6 +15,7 @@ class AdvancedTextFormatter < TextFormatter
def autolink(link, link_type)
return link if link_type == :email
+
@format_link.call(link)
end
end
diff --git a/app/lib/feed_manager.rb b/app/lib/feed_manager.rb
index 4ce888fc9..15ff6d15f 100644
--- a/app/lib/feed_manager.rb
+++ b/app/lib/feed_manager.rb
@@ -306,6 +306,7 @@ class FeedManager
statuses.each do |status|
next if filter_from_direct?(status, account)
+
added += 1 if add_to_feed(:direct, account.id, status)
end
@@ -459,6 +460,7 @@ class FeedManager
# @return [Boolean]
def filter_from_direct?(status, receiver_id)
return false if receiver_id == status.account_id
+
filter_from_mentions?(status, receiver_id)
end
diff --git a/app/lib/themes.rb b/app/lib/themes.rb
index 81e016d4a..45ba47780 100644
--- a/app/lib/themes.rb
+++ b/app/lib/themes.rb
@@ -7,24 +7,23 @@ class Themes
include Singleton
def initialize
-
core = YAML.load_file(Rails.root.join('app', 'javascript', 'core', 'theme.yml'))
- core['pack'] = Hash.new unless core['pack']
+ core['pack'] = {} unless core['pack']
- result = Hash.new
- Dir.glob(Rails.root.join('app', 'javascript', 'flavours', '*', 'theme.yml')) do |path|
- data = YAML.load_file(path)
+ result = {}
+ Rails.root.glob('app/javascript/flavours/*/theme.yml') do |pathname|
+ data = YAML.load_file(pathname)
next unless data['pack']
- dir = File.dirname(path)
- name = File.basename(dir)
+ dir = pathname.dirname
+ name = dir.basename.to_s
locales = []
screenshots = []
if data['locales']
Dir.glob(File.join(dir, data['locales'], '*.{js,json}')) do |locale|
- localeName = File.basename(locale, File.extname(locale))
- locales.push(localeName) unless localeName.match(/defaultMessages|whitelist|index/)
+ locale_name = File.basename(locale, File.extname(locale))
+ locales.push(locale_name) unless /defaultMessages|whitelist|index/.match?(locale_name)
end
end
@@ -43,34 +42,30 @@ class Themes
result[name] = data
end
- Dir.glob(Rails.root.join('app', 'javascript', 'skins', '*', '*')) do |path|
- ext = File.extname(path)
- skin = File.basename(path)
- name = File.basename(File.dirname(path))
+ Rails.root.glob('app/javascript/skins/*/*') do |pathname|
+ ext = pathname.extname.to_s
+ skin = pathname.basename.to_s
+ name = pathname.dirname.basename.to_s
next unless result[name]
- if File.directory?(path)
+ if pathname.directory?
pack = []
- Dir.glob(File.join(path, '*.{css,scss}')) do |sheet|
- pack.push(File.basename(sheet, File.extname(sheet)))
+ pathname.glob('*.{css,scss}') do |sheet|
+ pack.push(sheet.basename(sheet.extname).to_s)
end
- elsif ext.match(/^\.s?css$/i)
- skin = File.basename(path, ext)
+ elsif /^\.s?css$/i.match?(ext)
+ skin = pathname.basename(ext).to_s
pack = ['common']
end
- if skin != 'default'
- result[name]['skin'][skin] = pack
- end
+ result[name]['skin'][skin] = pack if skin != 'default'
end
@core = core
@conf = result
end
- def core
- @core
- end
+ attr_reader :core
def flavour(name)
@conf[name]
@@ -86,7 +81,7 @@ class Themes
def flavours_and_skins
flavours.map do |flavour|
- [flavour, skins_for(flavour).map{ |skin| [flavour, skin] }]
+ [flavour, skins_for(flavour).map { |skin| [flavour, skin] }]
end
end
end
diff --git a/app/models/direct_feed.rb b/app/models/direct_feed.rb
index 1f2448070..689a735b3 100644
--- a/app/models/direct_feed.rb
+++ b/app/models/direct_feed.rb
@@ -4,9 +4,8 @@ class DirectFeed < Feed
include Redisable
def initialize(account)
- @type = :direct
- @id = account.id
@account = account
+ super(:direct, account.id)
end
def get(limit, max_id = nil, since_id = nil, min_id = nil)
@@ -19,10 +18,12 @@ class DirectFeed < Feed
private
- def from_database(limit, max_id, since_id, min_id)
+ # TODO: _min_id is not actually handled by `as_direct_timeline`
+ def from_database(limit, max_id, since_id, _min_id)
loop do
- statuses = Status.as_direct_timeline(@account, limit, max_id, since_id, min_id)
+ statuses = Status.as_direct_timeline(@account, limit, max_id, since_id)
return statuses if statuses.empty?
+
max_id = statuses.last.id
statuses = statuses.reject { |status| FeedManager.instance.filter?(:direct, status, @account) }
return statuses unless statuses.empty?
diff --git a/app/models/status.rb b/app/models/status.rb
index e01ddb5c5..8a58e5d68 100644
--- a/app/models/status.rb
+++ b/app/models/status.rb
@@ -338,7 +338,7 @@ class Status < ApplicationRecord
visibilities.keys - %w(direct limited)
end
- def as_direct_timeline(account, limit = 20, max_id = nil, since_id = nil, cache_ids = false)
+ def as_direct_timeline(account, limit = 20, max_id = nil, since_id = nil)
# direct timeline is mix of direct message from_me and to_me.
# 2 queries are executed with pagination.
# constant expression using arel_table is required for partial index
@@ -369,14 +369,9 @@ class Status < ApplicationRecord
query_to_me = query_to_me.where('mentions.status_id > ?', since_id)
end
- if cache_ids
- # returns array of cache_ids object that have id and updated_at
- (query_from_me.cache_ids.to_a + query_to_me.cache_ids.to_a).uniq(&:id).sort_by(&:id).reverse.take(limit)
- else
- # returns ActiveRecord.Relation
- items = (query_from_me.select(:id).to_a + query_to_me.select(:id).to_a).uniq(&:id).sort_by(&:id).reverse.take(limit)
- Status.where(id: items.map(&:id))
- end
+ # returns ActiveRecord.Relation
+ items = (query_from_me.select(:id).to_a + query_to_me.select(:id).to_a).uniq(&:id).sort_by(&:id).reverse.take(limit)
+ Status.where(id: items.map(&:id))
end
def favourites_map(status_ids, account_id)
@@ -553,9 +548,9 @@ class Status < ApplicationRecord
end
def set_locality
- if account.domain.nil? && !attribute_changed?(:local_only)
- self.local_only = marked_local_only?
- end
+ return unless account.domain.nil? && !attribute_changed?(:local_only)
+
+ self.local_only = marked_local_only?
end
def set_conversation
diff --git a/app/models/user.rb b/app/models/user.rb
index 3471bb2c1..daf8768e8 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -244,7 +244,6 @@ class User < ApplicationRecord
end
def functional?
-
functional_or_moved?
end
diff --git a/app/serializers/activitypub/note_serializer.rb b/app/serializers/activitypub/note_serializer.rb
index ca067ed9b..52ffaf717 100644
--- a/app/serializers/activitypub/note_serializer.rb
+++ b/app/serializers/activitypub/note_serializer.rb
@@ -32,6 +32,7 @@ class ActivityPub::NoteSerializer < ActivityPub::Serializer
def id
raise Mastodon::NotPermittedError, 'Local-only statuses should not be serialized' if object.local_only? && !instance_options[:allow_local_only]
+
ActivityPub::TagManager.instance.uri_for(object)
end
diff --git a/app/serializers/rest/account_serializer.rb b/app/serializers/rest/account_serializer.rb
index e6c8fe4b2..d4e7ac974 100644
--- a/app/serializers/rest/account_serializer.rb
+++ b/app/serializers/rest/account_serializer.rb
@@ -91,7 +91,7 @@ class REST::AccountSerializer < ActiveModel::Serializer
end
def followers_count
- (Setting.hide_followers_count || object.user&.setting_hide_followers_count) ? -1 : object.followers_count
+ Setting.hide_followers_count || object.user&.setting_hide_followers_count ? -1 : object.followers_count
end
def display_name
diff --git a/app/serializers/rest/mute_serializer.rb b/app/serializers/rest/mute_serializer.rb
index 043a2f059..c9b55ff16 100644
--- a/app/serializers/rest/mute_serializer.rb
+++ b/app/serializers/rest/mute_serializer.rb
@@ -2,7 +2,7 @@
class REST::MuteSerializer < ActiveModel::Serializer
include RoutingHelper
-
+
attributes :id, :account, :target_account, :created_at, :hide_notifications
def account
@@ -12,4 +12,4 @@ class REST::MuteSerializer < ActiveModel::Serializer
def target_account
REST::AccountSerializer.new(object.target_account)
end
-end
\ No newline at end of file
+end
diff --git a/app/serializers/rest/status_serializer.rb b/app/serializers/rest/status_serializer.rb
index 659c45b83..eb5f3c3ea 100644
--- a/app/serializers/rest/status_serializer.rb
+++ b/app/serializers/rest/status_serializer.rb
@@ -13,7 +13,7 @@ class REST::StatusSerializer < ActiveModel::Serializer
attribute :muted, if: :current_user?
attribute :bookmarked, if: :current_user?
attribute :pinned, if: :pinnable?
- attribute :local_only if :local?
+ attribute :local_only, if: :local?
has_many :filtered, serializer: REST::FilterResultSerializer, if: :current_user?
attribute :content, unless: :source_requested?
@@ -32,6 +32,8 @@ class REST::StatusSerializer < ActiveModel::Serializer
has_one :preview_card, key: :card, serializer: REST::PreviewCardSerializer
has_one :preloadable_poll, key: :poll, serializer: REST::PollSerializer
+ delegate :local?, to: :object
+
def id
object.id.to_s
end
diff --git a/app/services/backup_service.rb b/app/services/backup_service.rb
index a9d740211..c5e7a8e58 100644
--- a/app/services/backup_service.rb
+++ b/app/services/backup_service.rb
@@ -154,7 +154,7 @@ class BackupService < BaseService
object,
serializer: serializer,
adapter: ActivityPub::Adapter,
- allow_local_only: true,
+ allow_local_only: true
).as_json
end
diff --git a/app/services/fan_out_on_write_service.rb b/app/services/fan_out_on_write_service.rb
index 8e74e152e..3b14a6748 100644
--- a/app/services/fan_out_on_write_service.rb
+++ b/app/services/fan_out_on_write_service.rb
@@ -116,7 +116,7 @@ class FanOutOnWriteService < BaseService
end
def deliver_to_direct_timelines!
- FeedInsertWorker.push_bulk(@status.mentions.includes(:account).map(&:account).select { |mentioned_account| mentioned_account.local? }) do |account|
+ FeedInsertWorker.push_bulk(@status.mentions.includes(:account).map(&:account).select(&:local?)) do |account|
[@status.id, account.id, 'direct', { 'update' => update? }]
end
end
diff --git a/app/services/post_status_service.rb b/app/services/post_status_service.rb
index bca3b3ff7..74ec47a33 100644
--- a/app/services/post_status_service.rb
+++ b/app/services/post_status_service.rb
@@ -61,17 +61,22 @@ class PostStatusService < BaseService
private
- def preprocess_attributes!
- if @text.blank? && @options[:spoiler_text].present?
- @text = '.'
- if @media&.find(&:video?) || @media&.find(&:gifv?)
- @text = '📹'
- elsif @media&.find(&:audio?)
- @text = '🎵'
- elsif @media&.find(&:image?)
- @text = '🖼'
- end
+ def fill_blank_text!
+ return unless @text.blank? && @options[:spoiler_text].present?
+
+ if @media&.any?(&:video?) || @media&.any?(&:gifv?)
+ @text = '📹'
+ elsif @media&.any?(&:audio?)
+ @text = '🎵'
+ elsif @media&.any?(&:image?)
+ @text = '🖼'
+ else
+ @text = '.'
end
+ end
+
+ def preprocess_attributes!
+ fill_blank_text!
@sensitive = (@options[:sensitive].nil? ? @account.user&.setting_default_sensitive : @options[:sensitive]) || @options[:spoiler_text].present?
@visibility = @options[:visibility] || @account.user&.setting_default_privacy
@visibility = :unlisted if @visibility&.to_sym == :public && @account.silenced?
diff --git a/app/validators/status_pin_validator.rb b/app/validators/status_pin_validator.rb
index 9466a81fe..4af7bd295 100644
--- a/app/validators/status_pin_validator.rb
+++ b/app/validators/status_pin_validator.rb
@@ -7,6 +7,6 @@ class StatusPinValidator < ActiveModel::Validator
pin.errors.add(:base, I18n.t('statuses.pin_errors.reblog')) if pin.status.reblog?
pin.errors.add(:base, I18n.t('statuses.pin_errors.ownership')) if pin.account_id != pin.status.account_id
pin.errors.add(:base, I18n.t('statuses.pin_errors.direct')) if pin.status.direct_visibility?
- pin.errors.add(:base, I18n.t('statuses.pin_errors.limit')) if pin.account.status_pins.count >= MAX_PINNED && pin.account.local?
+ pin.errors.add(:base, I18n.t('statuses.pin_errors.limit')) if pin.account.status_pins.count >= MAX_PINNED && pin.account.local?
end
end
diff --git a/config/initializers/0_duplicate_migrations.rb b/config/initializers/0_duplicate_migrations.rb
index 6c45e4bd2..1b8b59025 100644
--- a/config/initializers/0_duplicate_migrations.rb
+++ b/config/initializers/0_duplicate_migrations.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
# Some migrations have been present in glitch-soc for a long time and have then
# been merged in upstream Mastodon, under a different version number.
#
@@ -12,24 +14,26 @@
# we decided monkey-patching Rails' Migrator to completely ignore the duplicate,
# keeping only the one that has run, or an arbitrary one.
-ALLOWED_DUPLICATES = [20180410220657, 20180831171112].freeze
+ALLOWED_DUPLICATES = [2018_04_10_220657, 2018_08_31_171112].freeze
module ActiveRecord
class Migrator
def self.new(direction, migrations, schema_migration, target_version = nil)
migrated = Set.new(Base.connection.migration_context.get_all_versions)
- migrations.group_by(&:name).each do |name, duplicates|
- if duplicates.length > 1 && duplicates.all? { |m| ALLOWED_DUPLICATES.include?(m.version) }
- # We have a set of allowed duplicates. Keep the migrated one, if any.
- non_migrated = duplicates.reject { |m| migrated.include?(m.version.to_i) }
+ migrations.group_by(&:name).each do |_name, duplicates|
+ next unless duplicates.length > 1 && duplicates.all? { |m| ALLOWED_DUPLICATES.include?(m.version) }
+
+ # We have a set of allowed duplicates. Keep the migrated one, if any.
+ non_migrated = duplicates.reject { |m| migrated.include?(m.version.to_i) }
- if duplicates.length == non_migrated.length || non_migrated.length == 0
+ migrations = begin
+ if duplicates.length == non_migrated.length || non_migrated.empty?
# There weren't any migrated one, so we have to pick one “canonical” migration
- migrations = migrations - duplicates[1..-1]
+ migrations - duplicates[1..]
else
# Just reject every duplicate which hasn't been migrated yet
- migrations = migrations - non_migrated
+ migrations - non_migrated
end
end
end
@@ -43,10 +47,10 @@ module ActiveRecord
# A set of duplicated migrations is considered migrated if at least one of
# them is migrated.
migrated = get_all_versions
- migrations.group_by(&:name).each do |name, duplicates|
+ migrations.group_by(&:name).each do |_name, duplicates|
return true unless duplicates.any? { |m| migrated.include?(m.version.to_i) }
end
- return false
+ false
end
end
end
diff --git a/config/initializers/simple_form.rb b/config/initializers/simple_form.rb
index d167a1600..fff4f538e 100644
--- a/config/initializers/simple_form.rb
+++ b/config/initializers/simple_form.rb
@@ -22,6 +22,7 @@ end
module GlitchOnlyComponent
def glitch_only(_wrapper_options = nil)
return unless options[:glitch_only]
+
options[:label_text] = ->(raw_label_text, _required_label_text, _label_present) { safe_join([raw_label_text, ' ', content_tag(:span, I18n.t('simple_form.glitch_only'), class: 'glitch_only')]) }
nil
end
diff --git a/db/migrate/20171009222537_create_keyword_mutes.rb b/db/migrate/20171009222537_create_keyword_mutes.rb
index 66411ba1d..77c88b0a5 100644
--- a/db/migrate/20171009222537_create_keyword_mutes.rb
+++ b/db/migrate/20171009222537_create_keyword_mutes.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
class CreateKeywordMutes < ActiveRecord::Migration[5.1]
def change
create_table :keyword_mutes do |t|
diff --git a/db/migrate/20171021191900_move_keyword_mutes_into_glitch_namespace.rb b/db/migrate/20171021191900_move_keyword_mutes_into_glitch_namespace.rb
index 269bb49d6..b6ea537c2 100644
--- a/db/migrate/20171021191900_move_keyword_mutes_into_glitch_namespace.rb
+++ b/db/migrate/20171021191900_move_keyword_mutes_into_glitch_namespace.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
class MoveKeywordMutesIntoGlitchNamespace < ActiveRecord::Migration[5.1]
def change
safety_assured do
diff --git a/db/migrate/20171210213213_add_local_only_flag_to_statuses.rb b/db/migrate/20171210213213_add_local_only_flag_to_statuses.rb
index af1e29d6a..010503b10 100644
--- a/db/migrate/20171210213213_add_local_only_flag_to_statuses.rb
+++ b/db/migrate/20171210213213_add_local_only_flag_to_statuses.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
class AddLocalOnlyFlagToStatuses < ActiveRecord::Migration[5.1]
def change
add_column :statuses, :local_only, :boolean
diff --git a/db/migrate/20180410220657_create_bookmarks.rb b/db/migrate/20180410220657_create_bookmarks.rb
index bc79022e4..aba21f5ea 100644
--- a/db/migrate/20180410220657_create_bookmarks.rb
+++ b/db/migrate/20180410220657_create_bookmarks.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
# This migration is a duplicate of 20180831171112 and may get ignored, see
# config/initializers/0_duplicate_migrations.rb
diff --git a/db/migrate/20180604000556_add_apply_to_mentions_flag_to_keyword_mutes.rb b/db/migrate/20180604000556_add_apply_to_mentions_flag_to_keyword_mutes.rb
index cd97d0f20..8078a07bf 100644
--- a/db/migrate/20180604000556_add_apply_to_mentions_flag_to_keyword_mutes.rb
+++ b/db/migrate/20180604000556_add_apply_to_mentions_flag_to_keyword_mutes.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'mastodon/migration_helpers'
class AddApplyToMentionsFlagToKeywordMutes < ActiveRecord::Migration[5.2]
diff --git a/db/migrate/20180707193142_migrate_filters.rb b/db/migrate/20180707193142_migrate_filters.rb
index 067c53357..8f6b3e1bb 100644
--- a/db/migrate/20180707193142_migrate_filters.rb
+++ b/db/migrate/20180707193142_migrate_filters.rb
@@ -1,7 +1,9 @@
+# frozen_string_literal: true
+
class MigrateFilters < ActiveRecord::Migration[5.2]
class GlitchKeywordMute < ApplicationRecord
# Dummy class, as we removed Glitch::KeywordMute
- belongs_to :account, required: true
+ belongs_to :account, optional: false
validates_presence_of :keyword
end
@@ -15,7 +17,7 @@ class MigrateFilters < ActiveRecord::Migration[5.2]
private
def clean_up_contexts
- self.context = Array(context).map(&:strip).map(&:presence).compact
+ self.context = Array(context).map(&:strip).filter_map(&:presence)
end
end
@@ -27,7 +29,8 @@ class MigrateFilters < ActiveRecord::Migration[5.2]
phrase: filter.keyword,
context: filter.apply_to_mentions ? %w(home public notifications) : %w(home public),
whole_word: filter.whole_word,
- irreversible: true)
+ irreversible: true
+ )
end
end
@@ -48,7 +51,8 @@ class MigrateFilters < ActiveRecord::Migration[5.2]
GlitchKeywordMute.where(account: filter.account).create!(
keyword: filter.phrase,
whole_word: filter.whole_word,
- apply_to_mentions: filter.context.include?('notifications'))
+ apply_to_mentions: filter.context.include?('notifications')
+ )
end
end
end
diff --git a/db/migrate/20190512200918_add_content_type_to_statuses.rb b/db/migrate/20190512200918_add_content_type_to_statuses.rb
index efbe2caa7..31c1a4f17 100644
--- a/db/migrate/20190512200918_add_content_type_to_statuses.rb
+++ b/db/migrate/20190512200918_add_content_type_to_statuses.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
class AddContentTypeToStatuses < ActiveRecord::Migration[5.2]
def change
add_column :statuses, :content_type, :string
diff --git a/db/migrate/20220209175231_add_content_type_to_status_edits.rb b/db/migrate/20220209175231_add_content_type_to_status_edits.rb
index 0e4e52fcb..bb414535d 100644
--- a/db/migrate/20220209175231_add_content_type_to_status_edits.rb
+++ b/db/migrate/20220209175231_add_content_type_to_status_edits.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
class AddContentTypeToStatusEdits < ActiveRecord::Migration[6.1]
def change
add_column :status_edits, :content_type, :string
diff --git a/db/post_migrate/20180813160548_post_migrate_filters.rb b/db/post_migrate/20180813160548_post_migrate_filters.rb
index 588548c1d..82acf13d5 100644
--- a/db/post_migrate/20180813160548_post_migrate_filters.rb
+++ b/db/post_migrate/20180813160548_post_migrate_filters.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
class PostMigrateFilters < ActiveRecord::Migration[5.2]
disable_ddl_transaction!
@@ -5,7 +7,5 @@ class PostMigrateFilters < ActiveRecord::Migration[5.2]
drop_table :glitch_keyword_mutes if table_exists? :glitch_keyword_mutes
end
- def down
- end
+ def down; end
end
-
diff --git a/lib/sanitize_ext/sanitize_config.rb b/lib/sanitize_ext/sanitize_config.rb
index dfc586561..4c0e9b858 100644
--- a/lib/sanitize_ext/sanitize_config.rb
+++ b/lib/sanitize_ext/sanitize_config.rb
@@ -48,9 +48,9 @@ class Sanitize
node.content = "[🖼 #{node['alt']}]"
else
url = node['href']
- prefix = url.match(/\Ahttps?:\/\/(www\.)?/).to_s
+ prefix = url.match(%r{\Ahttps?://(www\.)?}).to_s
text = url[prefix.length, 30]
- text = text + "…" if url[prefix.length..-1].length > 30
+ text += '…' if url.length - prefix.length > 30
node.content = "[🖼 #{text}]"
end
end
@@ -88,7 +88,7 @@ class Sanitize
},
protocols: {
- 'a' => { 'href' => LINK_PROTOCOLS },
+ 'a' => { 'href' => LINK_PROTOCOLS },
'blockquote' => { 'cite' => LINK_PROTOCOLS },
},
@@ -126,7 +126,7 @@ class Sanitize
node = env[:node]
- rel = (node['rel'] || '').split(' ') & ['tag']
+ rel = (node['rel'] || '').split & ['tag']
rel += ['nofollow', 'noopener', 'noreferrer'] unless TagManager.instance.local_url?(node['href'])
if rel.empty?
diff --git a/lib/tasks/assets.rake b/lib/tasks/assets.rake
index e1102af33..76e190f70 100644
--- a/lib/tasks/assets.rake
+++ b/lib/tasks/assets.rake
@@ -3,14 +3,14 @@
namespace :assets do
desc 'Generate static pages'
task generate_static_pages: :environment do
- class StaticApplicationController < ApplicationController
- def current_user
- nil
+ def render_static_page(action, dest:, **opts)
+ renderer = Class.new(ApplicationController) do
+ def current_user
+ nil
+ end
end
- end
- def render_static_page(action, dest:, **opts)
- html = StaticApplicationController.render(action, opts)
+ html = renderer.render(action, opts)
File.write(dest, html)
end
diff --git a/lib/tasks/glitchsoc.rake b/lib/tasks/glitchsoc.rake
index 79e864648..72558fa19 100644
--- a/lib/tasks/glitchsoc.rake
+++ b/lib/tasks/glitchsoc.rake
@@ -1,8 +1,12 @@
+# frozen_string_literal: true
+
namespace :glitchsoc do
desc 'Backfill local-only flag on statuses table'
task backfill_local_only: :environment do
- Status.local.where(local_only: nil).find_each do |st|
- ActiveRecord::Base.logger.silence { st.update_attribute(:local_only, st.marked_local_only?) }
+ Status.local.where(local_only: nil).find_each do |status|
+ ActiveRecord::Base.logger.silence do
+ status.update_attribute(:local_only, status.marked_local_only?) # rubocop:disable Rails/SkipsModelValidations
+ end
end
end
end
diff --git a/spec/controllers/api/v1/accounts/credentials_controller_spec.rb b/spec/controllers/api/v1/accounts/credentials_controller_spec.rb
index de08dd524..a677aaad0 100644
--- a/spec/controllers/api/v1/accounts/credentials_controller_spec.rb
+++ b/spec/controllers/api/v1/accounts/credentials_controller_spec.rb
@@ -75,10 +75,10 @@ describe Api::V1::Accounts::CredentialsController do
end
end
- describe 'with invalid data' do
+ describe 'with a too long profile bio' do
before do
note = 'This is too long. '
- note = note + 'a' * (Account::MAX_NOTE_LENGTH - note.length + 1)
+ note += 'a' * (Account::MAX_NOTE_LENGTH - note.length + 1)
patch :update, params: { note: note }
end
diff --git a/spec/controllers/api/v1/timelines/direct_controller_spec.rb b/spec/controllers/api/v1/timelines/direct_controller_spec.rb
index a22c2cbea..def67a0fe 100644
--- a/spec/controllers/api/v1/timelines/direct_controller_spec.rb
+++ b/spec/controllers/api/v1/timelines/direct_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-RSpec.describe Api::V1::Timelines::DirectController, type: :controller do
+RSpec.describe Api::V1::Timelines::DirectController do
let(:user) { Fabricate(:user) }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'read:statuses') }
diff --git a/spec/controllers/application_controller_spec.rb b/spec/controllers/application_controller_spec.rb
index 1aabae0ea..82455d874 100644
--- a/spec/controllers/application_controller_spec.rb
+++ b/spec/controllers/application_controller_spec.rb
@@ -75,8 +75,8 @@ describe ApplicationController, type: :controller do
describe 'helper_method :current_flavour' do
it 'returns "glitch" when theme wasn\'t changed in admin settings' do
- allow(Setting).to receive(:default_settings).and_return({'skin' => 'default'})
- allow(Setting).to receive(:default_settings).and_return({'flavour' => 'glitch'})
+ allow(Setting).to receive(:default_settings).and_return({ 'skin' => 'default' })
+ allow(Setting).to receive(:default_settings).and_return({ 'flavour' => 'glitch' })
expect(controller.view_context.current_flavour).to eq 'glitch'
end
diff --git a/spec/controllers/settings/flavours_controller_spec.rb b/spec/controllers/settings/flavours_controller_spec.rb
index f89bde1f9..8c7d4a768 100644
--- a/spec/controllers/settings/flavours_controller_spec.rb
+++ b/spec/controllers/settings/flavours_controller_spec.rb
@@ -1,7 +1,8 @@
# frozen_string_literal: true
+
require 'rails_helper'
-RSpec.describe Settings::FlavoursController, type: :controller do
+RSpec.describe Settings::FlavoursController do
let(:user) { Fabricate(:user) }
before do
diff --git a/spec/lib/advanced_text_formatter_spec.rb b/spec/lib/advanced_text_formatter_spec.rb
index c1e469606..8b27b56a1 100644
--- a/spec/lib/advanced_text_formatter_spec.rb
+++ b/spec/lib/advanced_text_formatter_spec.rb
@@ -1,12 +1,14 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe AdvancedTextFormatter do
describe '#to_s' do
+ subject { described_class.new(text, preloaded_accounts: preloaded_accounts, content_type: content_type).to_s }
+
let(:preloaded_accounts) { nil }
let(:content_type) { 'text/markdown' }
- subject { described_class.new(text, preloaded_accounts: preloaded_accounts, content_type: content_type).to_s }
-
context 'given a markdown source' do
let(:content_type) { 'text/markdown' }
@@ -14,7 +16,7 @@ RSpec.describe AdvancedTextFormatter do
let(:text) { 'text' }
it 'paragraphizes the text' do
- is_expected.to eq '
text
'
+ expect(subject).to eq '
text
'
end
end
@@ -22,7 +24,7 @@ RSpec.describe AdvancedTextFormatter do
let(:text) { "line\nfeed" }
it 'removes line feeds' do
- is_expected.not_to include "\n"
+ expect(subject).to_not include "\n"
end
end
@@ -30,7 +32,7 @@ RSpec.describe AdvancedTextFormatter do
let(:text) { 'test `foo` bar' }
it 'formats code using ' do
- is_expected.to include 'test foo bar'
+ expect(subject).to include 'test foo bar'
end
end
@@ -38,15 +40,15 @@ RSpec.describe AdvancedTextFormatter do
let(:text) { "test\n\n```\nint main(void) {\n return 0; // https://joinmastodon.org/foo\n}\n```\n" }
it 'formats code using
and ' do
- is_expected.to include '
int main'
+ expect(subject).to include '
int main'
end
it 'does not strip leading spaces' do
- is_expected.to include '> return 0'
+ expect(subject).to include '> return 0'
end
it 'does not format links' do
- is_expected.to include 'return 0; // https://joinmastodon.org/foo'
+ expect(subject).to include 'return 0; // https://joinmastodon.org/foo'
end
end
@@ -54,7 +56,7 @@ RSpec.describe AdvancedTextFormatter do
let(:text) { 'test `https://foo.bar/bar` bar' }
it 'does not rewrite the link' do
- is_expected.to include 'test https://foo.bar/bar bar'
+ expect(subject).to include 'test https://foo.bar/bar bar'
end
end
@@ -62,7 +64,7 @@ RSpec.describe AdvancedTextFormatter do
let(:text) { 'foo https://cb6e6126.ngrok.io/about/more' }
it 'creates a link' do
- is_expected.to include '@alice'
+ expect(subject).to include '@alice'
end
end
@@ -80,7 +82,7 @@ RSpec.describe AdvancedTextFormatter do
let(:text) { '@alice' }
it 'does not create a mention link' do
- is_expected.to include '@alice'
+ expect(subject).to include '@alice'
end
end
@@ -88,7 +90,7 @@ RSpec.describe AdvancedTextFormatter do
let(:text) { 'https://hackernoon.com/the-power-to-build-communities-a-response-to-mark-zuckerberg-3f2cac9148a4' }
it 'matches the full URL' do
- is_expected.to include 'href="https://hackernoon.com/the-power-to-build-communities-a-response-to-mark-zuckerberg-3f2cac9148a4"'
+ expect(subject).to include 'href="https://hackernoon.com/the-power-to-build-communities-a-response-to-mark-zuckerberg-3f2cac9148a4"'
end
end
@@ -96,7 +98,7 @@ RSpec.describe AdvancedTextFormatter do
let(:text) { 'http://google.com' }
it 'matches the full URL' do
- is_expected.to include 'href="http://google.com"'
+ expect(subject).to include 'href="http://google.com"'
end
end
@@ -104,7 +106,7 @@ RSpec.describe AdvancedTextFormatter do
let(:text) { 'http://example.gay' }
it 'matches the full URL' do
- is_expected.to include 'href="http://example.gay"'
+ expect(subject).to include 'href="http://example.gay"'
end
end
@@ -112,11 +114,11 @@ RSpec.describe AdvancedTextFormatter do
let(:text) { 'https://nic.みんな/' }
it 'matches the full URL' do
- is_expected.to include 'href="https://nic.みんな/"'
+ expect(subject).to include 'href="https://nic.みんな/"'
end
it 'has display URL' do
- is_expected.to include 'nic.みんな/'
+ expect(subject).to include 'nic.みんな/'
end
end
@@ -124,7 +126,7 @@ RSpec.describe AdvancedTextFormatter do
let(:text) { 'http://www.mcmansionhell.com/post/156408871451/50-states-of-mcmansion-hell-scottsdale-arizona. ' }
it 'matches the full URL but not the period' do
- is_expected.to include 'href="http://www.mcmansionhell.com/post/156408871451/50-states-of-mcmansion-hell-scottsdale-arizona"'
+ expect(subject).to include 'href="http://www.mcmansionhell.com/post/156408871451/50-states-of-mcmansion-hell-scottsdale-arizona"'
end
end
@@ -132,7 +134,7 @@ RSpec.describe AdvancedTextFormatter do
let(:text) { '(http://google.com/)' }
it 'matches the full URL but not the parentheses' do
- is_expected.to include 'href="http://google.com/"'
+ expect(subject).to include 'href="http://google.com/"'
end
end
@@ -140,7 +142,7 @@ RSpec.describe AdvancedTextFormatter do
let(:text) { 'http://www.google.com!' }
it 'matches the full URL but not the exclamation point' do
- is_expected.to include 'href="http://www.google.com"'
+ expect(subject).to include 'href="http://www.google.com"'
end
end
@@ -148,7 +150,7 @@ RSpec.describe AdvancedTextFormatter do
let(:text) { "http://www.google.com'" }
it 'matches the full URL but not the single quote' do
- is_expected.to include 'href="http://www.google.com"'
+ expect(subject).to include 'href="http://www.google.com"'
end
end
end
@@ -157,7 +159,7 @@ RSpec.describe AdvancedTextFormatter do
let(:text) { 'http://www.google.com>' }
it 'matches the full URL but not the angle bracket' do
- is_expected.to include 'href="http://www.google.com"'
+ expect(subject).to include 'href="http://www.google.com"'
end
end
@@ -166,7 +168,7 @@ RSpec.describe AdvancedTextFormatter do
let(:text) { 'https://www.ruby-toolbox.com/search?utf8=%E2%9C%93&q=autolink' }
it 'matches the full URL' do
- is_expected.to include 'href="https://www.ruby-toolbox.com/search?utf8=%E2%9C%93&q=autolink"'
+ expect(subject).to include 'href="https://www.ruby-toolbox.com/search?utf8=%E2%9C%93&q=autolink"'
end
end
@@ -174,7 +176,7 @@ RSpec.describe AdvancedTextFormatter do
let(:text) { 'https://www.ruby-toolbox.com/search?utf8=✓&q=autolink' }
it 'matches the full URL' do
- is_expected.to include 'href="https://www.ruby-toolbox.com/search?utf8=✓&q=autolink"'
+ expect(subject).to include 'href="https://www.ruby-toolbox.com/search?utf8=✓&q=autolink"'
end
end
@@ -182,7 +184,7 @@ RSpec.describe AdvancedTextFormatter do
let(:text) { 'https://www.ruby-toolbox.com/search?utf8=✓' }
it 'matches the full URL' do
- is_expected.to include 'href="https://www.ruby-toolbox.com/search?utf8=✓"'
+ expect(subject).to include 'href="https://www.ruby-toolbox.com/search?utf8=✓"'
end
end
@@ -190,7 +192,7 @@ RSpec.describe AdvancedTextFormatter do
let(:text) { 'https://www.ruby-toolbox.com/search?utf8=%E2%9C%93&utf81=✓&q=autolink' }
it 'preserves escaped unicode characters' do
- is_expected.to include 'href="https://www.ruby-toolbox.com/search?utf8=%E2%9C%93&utf81=✓&q=autolink"'
+ expect(subject).to include 'href="https://www.ruby-toolbox.com/search?utf8=%E2%9C%93&utf81=✓&q=autolink"'
end
end
@@ -198,7 +200,7 @@ RSpec.describe AdvancedTextFormatter do
let(:text) { 'https://en.wikipedia.org/wiki/Diaspora_(software)' }
it 'matches the full URL' do
- is_expected.to include 'href="https://en.wikipedia.org/wiki/Diaspora_(software)"'
+ expect(subject).to include 'href="https://en.wikipedia.org/wiki/Diaspora_(software)"'
end
end
@@ -206,7 +208,7 @@ RSpec.describe AdvancedTextFormatter do
let(:text) { '"https://example.com/"' }
it 'does not match the quotation marks' do
- is_expected.to include 'href="https://example.com/"'
+ expect(subject).to include 'href="https://example.com/"'
end
end
@@ -214,19 +216,19 @@ RSpec.describe AdvancedTextFormatter do
let(:text) { '' }
it 'does not match the angle brackets' do
- is_expected.to include 'href="https://example.com/"'
+ expect(subject).to include 'href="https://example.com/"'
end
end
context 'given a URL containing unsafe code (XSS attack, invisible part)' do
- let(:text) { %q{http://example.com/blahblahblahblah/a} }
+ let(:text) { 'http://example.com/blahblahblahblah/a' }
it 'does not include the HTML in the URL' do
- is_expected.to include '"http://example.com/blahblahblahblah/a"'
+ expect(subject).to include '"http://example.com/blahblahblahblah/a"'
end
it 'does not include a script tag' do
- is_expected.to_not include '' }
it 'does not include a script tag' do
- is_expected.to_not include '