diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index c3c41f3c5d..13e2cc3caf 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-offense-counts --no-auto-gen-timestamp` -# using RuboCop version 1.75.2. +# using RuboCop version 1.75.3. # 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 diff --git a/Gemfile.lock b/Gemfile.lock index 1faec93b4c..b5cf21cc51 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -743,7 +743,7 @@ GEM rspec-mocks (~> 3.0) sidekiq (>= 5, < 9) rspec-support (3.13.2) - rubocop (1.75.2) + rubocop (1.75.3) json (~> 2.3) language_server-protocol (~> 3.17.0.2) lint_roller (~> 1.1.0) @@ -773,7 +773,7 @@ GEM rack (>= 1.1) rubocop (>= 1.75.0, < 2.0) rubocop-ast (>= 1.38.0, < 2.0) - rubocop-rspec (3.5.0) + rubocop-rspec (3.6.0) lint_roller (~> 1.1) rubocop (~> 1.72, >= 1.72.1) rubocop-rspec_rails (2.31.0) diff --git a/spec/controllers/application_controller_spec.rb b/spec/controllers/application_controller_spec.rb index 2e7a59db05..cd4181a00d 100644 --- a/spec/controllers/application_controller_spec.rb +++ b/spec/controllers/application_controller_spec.rb @@ -23,7 +23,7 @@ RSpec.describe ApplicationController do end end - shared_examples 'respond_with_error' do |code| + shared_examples 'error response' do |code| it "returns http #{code} for http and renders template" do subject @@ -51,7 +51,7 @@ RSpec.describe ApplicationController do post 'success' end - include_examples 'respond_with_error', 422 + it_behaves_like 'error response', 422 end describe 'helper_method :current_account' do @@ -123,7 +123,7 @@ RSpec.describe ApplicationController do get 'routing_error' end - include_examples 'respond_with_error', 404 + it_behaves_like 'error response', 404 end context 'with ActiveRecord::RecordNotFound' do @@ -132,7 +132,7 @@ RSpec.describe ApplicationController do get 'record_not_found' end - include_examples 'respond_with_error', 404 + it_behaves_like 'error response', 404 end context 'with ActionController::InvalidAuthenticityToken' do @@ -141,7 +141,7 @@ RSpec.describe ApplicationController do get 'invalid_authenticity_token' end - include_examples 'respond_with_error', 422 + it_behaves_like 'error response', 422 end describe 'before_action :check_suspension' do @@ -186,7 +186,7 @@ RSpec.describe ApplicationController do get 'route_forbidden' end - include_examples 'respond_with_error', 403 + it_behaves_like 'error response', 403 end describe 'not_found' do @@ -201,7 +201,7 @@ RSpec.describe ApplicationController do get 'route_not_found' end - include_examples 'respond_with_error', 404 + it_behaves_like 'error response', 404 end describe 'gone' do @@ -216,7 +216,7 @@ RSpec.describe ApplicationController do get 'route_gone' end - include_examples 'respond_with_error', 410 + it_behaves_like 'error response', 410 end describe 'unprocessable_entity' do @@ -231,6 +231,6 @@ RSpec.describe ApplicationController do get 'route_unprocessable_entity' end - include_examples 'respond_with_error', 422 + it_behaves_like 'error response', 422 end end diff --git a/spec/controllers/auth/registrations_controller_spec.rb b/spec/controllers/auth/registrations_controller_spec.rb index 4e43592a4e..a110717166 100644 --- a/spec/controllers/auth/registrations_controller_spec.rb +++ b/spec/controllers/auth/registrations_controller_spec.rb @@ -5,7 +5,7 @@ require 'rails_helper' RSpec.describe Auth::RegistrationsController do render_views - shared_examples 'checks for enabled registrations' do |path| + shared_examples 'registration mode based responses' do |path| context 'when in single user mode and open for registration' do before do Setting.registrations_mode = 'open' @@ -156,7 +156,7 @@ RSpec.describe Auth::RegistrationsController do end end - include_examples 'checks for enabled registrations', :new + it_behaves_like 'registration mode based responses', :new end describe 'POST #create' do @@ -378,7 +378,7 @@ RSpec.describe Auth::RegistrationsController do end end - include_examples 'checks for enabled registrations', :create + it_behaves_like 'registration mode based responses', :create end describe 'DELETE #destroy' do diff --git a/spec/controllers/concerns/localized_spec.rb b/spec/controllers/concerns/localized_spec.rb index 4798e8270c..d4b8064d90 100644 --- a/spec/controllers/concerns/localized_spec.rb +++ b/spec/controllers/concerns/localized_spec.rb @@ -59,10 +59,10 @@ RSpec.describe Localized do sign_in(user) end - include_examples 'default locale' + it_behaves_like 'default locale' end context 'with a user who has not signed in' do - include_examples 'default locale' + it_behaves_like 'default locale' end end diff --git a/spec/controllers/relationships_controller_spec.rb b/spec/controllers/relationships_controller_spec.rb index 75b5e71f35..633d72fbba 100644 --- a/spec/controllers/relationships_controller_spec.rb +++ b/spec/controllers/relationships_controller_spec.rb @@ -35,7 +35,7 @@ RSpec.describe RelationshipsController do describe 'PATCH #update' do let(:alice) { Fabricate(:account, username: 'alice', domain: 'example.com') } - shared_examples 'redirects back to followers page' do + shared_examples 'general behavior for followed user' do it 'redirects back to followers page' do alice.follow!(user.account) @@ -49,7 +49,7 @@ RSpec.describe RelationshipsController do context 'when select parameter is not provided' do subject { patch :update } - include_examples 'redirects back to followers page' + it_behaves_like 'general behavior for followed user' end context 'when select parameter is provided' do @@ -83,7 +83,7 @@ RSpec.describe RelationshipsController do end end - include_examples 'redirects back to followers page' + it_behaves_like 'general behavior for followed user' end end end diff --git a/spec/controllers/settings/imports_controller_spec.rb b/spec/controllers/settings/imports_controller_spec.rb index 219b882e6d..c2c6c353f3 100644 --- a/spec/controllers/settings/imports_controller_spec.rb +++ b/spec/controllers/settings/imports_controller_spec.rb @@ -162,7 +162,7 @@ RSpec.describe Settings::ImportsController do ] end - include_examples 'export failed rows', "Account address,Show boosts,Notify on new posts,Languages\nfoo@bar,true,false,\nuser@bar,false,true,\"fr, de\"\n" + it_behaves_like 'export failed rows', "Account address,Show boosts,Notify on new posts,Languages\nfoo@bar,true,false,\nuser@bar,false,true,\"fr, de\"\n" end context 'with blocks' do @@ -175,7 +175,7 @@ RSpec.describe Settings::ImportsController do ] end - include_examples 'export failed rows', "foo@bar\nuser@bar\n" + it_behaves_like 'export failed rows', "foo@bar\nuser@bar\n" end context 'with mutes' do @@ -188,7 +188,7 @@ RSpec.describe Settings::ImportsController do ] end - include_examples 'export failed rows', "Account address,Hide notifications\nfoo@bar,true\nuser@bar,false\n" + it_behaves_like 'export failed rows', "Account address,Hide notifications\nfoo@bar,true\nuser@bar,false\n" end context 'with domain blocks' do @@ -201,7 +201,7 @@ RSpec.describe Settings::ImportsController do ] end - include_examples 'export failed rows', "bad.domain\nevil.domain\n" + it_behaves_like 'export failed rows', "bad.domain\nevil.domain\n" end context 'with bookmarks' do @@ -214,7 +214,7 @@ RSpec.describe Settings::ImportsController do ] end - include_examples 'export failed rows', "https://foo.com/1\nhttps://foo.com/2\n" + it_behaves_like 'export failed rows', "https://foo.com/1\nhttps://foo.com/2\n" end context 'with lists' do @@ -227,7 +227,7 @@ RSpec.describe Settings::ImportsController do ] end - include_examples 'export failed rows', "Amigos,user@example.com\nFrenemies,user@org.org\n" + it_behaves_like 'export failed rows', "Amigos,user@example.com\nFrenemies,user@org.org\n" end end diff --git a/spec/controllers/settings/two_factor_authentication/confirmations_controller_spec.rb b/spec/controllers/settings/two_factor_authentication/confirmations_controller_spec.rb index 45c5e77323..0121c94330 100644 --- a/spec/controllers/settings/two_factor_authentication/confirmations_controller_spec.rb +++ b/spec/controllers/settings/two_factor_authentication/confirmations_controller_spec.rb @@ -34,7 +34,7 @@ RSpec.describe Settings::TwoFactorAuthentication::ConfirmationsController do get :new, session: { challenge_passed_at: Time.now.utc, new_otp_secret: 'thisisasecretforthespecofnewview' } end - include_examples 'renders expected page' + it_behaves_like 'renders expected page' end it 'redirects if a new otp_secret has not been set in the session' do @@ -94,7 +94,7 @@ RSpec.describe Settings::TwoFactorAuthentication::ConfirmationsController do .to include(I18n.t('otp_authentication.wrong_code')) end - include_examples 'renders expected page' + it_behaves_like 'renders expected page' end private diff --git a/spec/lib/cache_buster_spec.rb b/spec/lib/cache_buster_spec.rb index f7cff9c1c3..65eb72ff3b 100644 --- a/spec/lib/cache_buster_spec.rb +++ b/spec/lib/cache_buster_spec.rb @@ -12,7 +12,7 @@ RSpec.describe CacheBuster do let(:purge_url) { 'https://example.com/test_purge' } describe '#bust' do - shared_examples 'makes_request' do + shared_examples 'cache busting request' do it 'makes an HTTP purging request' do method = http_method&.to_sym || :get stub_request(method, purge_url).to_return(status: 200) @@ -28,28 +28,28 @@ RSpec.describe CacheBuster do end context 'when using default options' do - include_examples 'makes_request' + it_behaves_like 'cache busting request' end context 'when specifying a secret header' do let(:secret_header) { 'X-Purge-Secret' } let(:secret) { SecureRandom.hex(20) } - include_examples 'makes_request' + it_behaves_like 'cache busting request' end context 'when specifying a PURGE method' do let(:http_method) { 'purge' } context 'when not using headers' do - include_examples 'makes_request' + it_behaves_like 'cache busting request' end context 'when specifying a secret header' do let(:secret_header) { 'X-Purge-Secret' } let(:secret) { SecureRandom.hex(20) } - include_examples 'makes_request' + it_behaves_like 'cache busting request' end end end diff --git a/spec/lib/fasp/request_spec.rb b/spec/lib/fasp/request_spec.rb index 5d81c09722..80d061dc61 100644 --- a/spec/lib/fasp/request_spec.rb +++ b/spec/lib/fasp/request_spec.rb @@ -44,14 +44,14 @@ RSpec.describe Fasp::Request do end describe '#get' do - include_examples 'a provider request', :get + it_behaves_like 'a provider request', :get end describe '#post' do - include_examples 'a provider request', :post + it_behaves_like 'a provider request', :post end describe '#delete' do - include_examples 'a provider request', :delete + it_behaves_like 'a provider request', :delete end end diff --git a/spec/lib/link_details_extractor_spec.rb b/spec/lib/link_details_extractor_spec.rb index cb072c4870..019a57cac5 100644 --- a/spec/lib/link_details_extractor_spec.rb +++ b/spec/lib/link_details_extractor_spec.rb @@ -118,7 +118,7 @@ RSpec.describe LinkDetailsExtractor do HTML - include_examples 'structured data' + it_behaves_like 'structured data' end context 'with the first tag is invalid JSON' do @@ -136,7 +136,7 @@ RSpec.describe LinkDetailsExtractor do HTML - include_examples 'structured data' + it_behaves_like 'structured data' end context 'with the first tag is null' do @@ -154,7 +154,7 @@ RSpec.describe LinkDetailsExtractor do HTML - include_examples 'structured data' + it_behaves_like 'structured data' end context 'with preceding block of unsupported LD+JSON' do @@ -194,7 +194,7 @@ RSpec.describe LinkDetailsExtractor do HTML - include_examples 'structured data' + it_behaves_like 'structured data' end context 'with unsupported in same block LD+JSON' do @@ -218,7 +218,7 @@ RSpec.describe LinkDetailsExtractor do HTML - include_examples 'structured data' + it_behaves_like 'structured data' end context 'with author names as array' do diff --git a/spec/lib/mastodon/cli/ip_blocks_spec.rb b/spec/lib/mastodon/cli/ip_blocks_spec.rb index 68d6b19859..d531b8b7a8 100644 --- a/spec/lib/mastodon/cli/ip_blocks_spec.rb +++ b/spec/lib/mastodon/cli/ip_blocks_spec.rb @@ -56,7 +56,7 @@ RSpec.describe Mastodon::CLI::IpBlocks do end context 'with valid IP addresses' do - include_examples 'ip address blocking' + it_behaves_like 'ip address blocking' end context 'when a specified IP address is already blocked' do @@ -84,7 +84,7 @@ RSpec.describe Mastodon::CLI::IpBlocks do .to('sign_up_requires_approval') end - include_examples 'ip address blocking' + it_behaves_like 'ip address blocking' end end @@ -101,25 +101,25 @@ RSpec.describe Mastodon::CLI::IpBlocks do context 'with --comment option' do let(:options) { { severity: 'no_access', comment: 'Spam' } } - include_examples 'ip address blocking' + it_behaves_like 'ip address blocking' end context 'with --duration option' do let(:options) { { severity: 'no_access', duration: 10.days } } - include_examples 'ip address blocking' + it_behaves_like 'ip address blocking' end context 'with "sign_up_requires_approval" severity' do let(:options) { { severity: 'sign_up_requires_approval' } } - include_examples 'ip address blocking' + it_behaves_like 'ip address blocking' end context 'with "sign_up_block" severity' do let(:options) { { severity: 'sign_up_block' } } - include_examples 'ip address blocking' + it_behaves_like 'ip address blocking' end context 'when a specified IP address fails to be blocked' do diff --git a/spec/lib/mastodon/redis_configuration_spec.rb b/spec/lib/mastodon/redis_configuration_spec.rb index e36dcfba0a..90dc20f6dd 100644 --- a/spec/lib/mastodon/redis_configuration_spec.rb +++ b/spec/lib/mastodon/redis_configuration_spec.rb @@ -207,18 +207,18 @@ RSpec.describe Mastodon::RedisConfiguration do end end - include_examples 'setting a different driver' - include_examples 'setting a namespace' - include_examples 'sentinel support' + it_behaves_like 'setting a different driver' + it_behaves_like 'setting a namespace' + it_behaves_like 'sentinel support' end describe '#sidekiq' do subject { redis_environment.sidekiq } - include_examples 'secondary configuration', 'SIDEKIQ' - include_examples 'setting a different driver' - include_examples 'setting a namespace' - include_examples 'sentinel support', 'SIDEKIQ' + it_behaves_like 'secondary configuration', 'SIDEKIQ' + it_behaves_like 'setting a different driver' + it_behaves_like 'setting a namespace' + it_behaves_like 'sentinel support', 'SIDEKIQ' end describe '#cache' do @@ -256,8 +256,8 @@ RSpec.describe Mastodon::RedisConfiguration do end end - include_examples 'secondary configuration', 'CACHE' - include_examples 'setting a different driver' - include_examples 'sentinel support', 'CACHE' + it_behaves_like 'secondary configuration', 'CACHE' + it_behaves_like 'setting a different driver' + it_behaves_like 'sentinel support', 'CACHE' end end diff --git a/spec/mailers/notification_mailer_spec.rb b/spec/mailers/notification_mailer_spec.rb index d97c01858d..25eb4ada26 100644 --- a/spec/mailers/notification_mailer_spec.rb +++ b/spec/mailers/notification_mailer_spec.rb @@ -35,7 +35,7 @@ RSpec.describe NotificationMailer do let(:notification) { Notification.create!(account: receiver.account, activity: mention) } let(:mail) { prepared_mailer_for(receiver.account).mention } - include_examples 'localized subject', 'notification_mailer.mention.subject', name: 'bob' + it_behaves_like 'localized subject', 'notification_mailer.mention.subject', name: 'bob' it 'renders the email' do expect(mail) @@ -47,8 +47,8 @@ RSpec.describe NotificationMailer do .and have_standard_headers('mention').for(receiver) end - include_examples 'delivery to non functional user' - include_examples 'delivery without status' + it_behaves_like 'delivery to non functional user' + it_behaves_like 'delivery without status' end describe 'follow' do @@ -56,7 +56,7 @@ RSpec.describe NotificationMailer do let(:notification) { Notification.create!(account: receiver.account, activity: follow) } let(:mail) { prepared_mailer_for(receiver.account).follow } - include_examples 'localized subject', 'notification_mailer.follow.subject', name: 'bob' + it_behaves_like 'localized subject', 'notification_mailer.follow.subject', name: 'bob' it 'renders the email' do expect(mail) @@ -66,7 +66,7 @@ RSpec.describe NotificationMailer do .and have_standard_headers('follow').for(receiver) end - include_examples 'delivery to non functional user' + it_behaves_like 'delivery to non functional user' end describe 'favourite' do @@ -74,7 +74,7 @@ RSpec.describe NotificationMailer do let(:notification) { Notification.create!(account: receiver.account, activity: favourite) } let(:mail) { prepared_mailer_for(own_status.account).favourite } - include_examples 'localized subject', 'notification_mailer.favourite.subject', name: 'bob' + it_behaves_like 'localized subject', 'notification_mailer.favourite.subject', name: 'bob' it 'renders the email' do expect(mail) @@ -86,8 +86,8 @@ RSpec.describe NotificationMailer do .and have_standard_headers('favourite').for(receiver) end - include_examples 'delivery to non functional user' - include_examples 'delivery without status' + it_behaves_like 'delivery to non functional user' + it_behaves_like 'delivery without status' end describe 'reblog' do @@ -95,7 +95,7 @@ RSpec.describe NotificationMailer do let(:notification) { Notification.create!(account: receiver.account, activity: reblog) } let(:mail) { prepared_mailer_for(own_status.account).reblog } - include_examples 'localized subject', 'notification_mailer.reblog.subject', name: 'bob' + it_behaves_like 'localized subject', 'notification_mailer.reblog.subject', name: 'bob' it 'renders the email' do expect(mail) @@ -107,8 +107,8 @@ RSpec.describe NotificationMailer do .and have_standard_headers('reblog').for(receiver) end - include_examples 'delivery to non functional user' - include_examples 'delivery without status' + it_behaves_like 'delivery to non functional user' + it_behaves_like 'delivery without status' end describe 'follow_request' do @@ -116,7 +116,7 @@ RSpec.describe NotificationMailer do let(:notification) { Notification.create!(account: receiver.account, activity: follow_request) } let(:mail) { prepared_mailer_for(receiver.account).follow_request } - include_examples 'localized subject', 'notification_mailer.follow_request.subject', name: 'bob' + it_behaves_like 'localized subject', 'notification_mailer.follow_request.subject', name: 'bob' it 'renders the email' do expect(mail) @@ -126,7 +126,7 @@ RSpec.describe NotificationMailer do .and have_standard_headers('follow_request').for(receiver) end - include_examples 'delivery to non functional user' + it_behaves_like 'delivery to non functional user' end private diff --git a/spec/mailers/user_mailer_spec.rb b/spec/mailers/user_mailer_spec.rb index 3f40e24c8b..6586d51a41 100644 --- a/spec/mailers/user_mailer_spec.rb +++ b/spec/mailers/user_mailer_spec.rb @@ -29,10 +29,10 @@ RSpec.describe UserMailer do .and(have_body_text(Rails.configuration.x.local_domain)) end - include_examples 'localized subject', - 'devise.mailer.confirmation_instructions.subject', - instance: Rails.configuration.x.local_domain - include_examples 'delivery to memorialized user' + it_behaves_like 'localized subject', + 'devise.mailer.confirmation_instructions.subject', + instance: Rails.configuration.x.local_domain + it_behaves_like 'delivery to memorialized user' end describe '#reconfirmation_instructions' do @@ -48,10 +48,10 @@ RSpec.describe UserMailer do .and(have_body_text(Rails.configuration.x.local_domain)) end - include_examples 'localized subject', - 'devise.mailer.confirmation_instructions.subject', - instance: Rails.configuration.x.local_domain - include_examples 'delivery to memorialized user' + it_behaves_like 'localized subject', + 'devise.mailer.confirmation_instructions.subject', + instance: Rails.configuration.x.local_domain + it_behaves_like 'delivery to memorialized user' end describe '#reset_password_instructions' do @@ -66,9 +66,9 @@ RSpec.describe UserMailer do .and(have_body_text('spec')) end - include_examples 'localized subject', - 'devise.mailer.reset_password_instructions.subject' - include_examples 'delivery to memorialized user' + it_behaves_like 'localized subject', + 'devise.mailer.reset_password_instructions.subject' + it_behaves_like 'delivery to memorialized user' end describe '#password_change' do @@ -82,9 +82,9 @@ RSpec.describe UserMailer do .and(have_body_text(I18n.t('devise.mailer.password_change.title'))) end - include_examples 'localized subject', - 'devise.mailer.password_change.subject' - include_examples 'delivery to memorialized user' + it_behaves_like 'localized subject', + 'devise.mailer.password_change.subject' + it_behaves_like 'delivery to memorialized user' end describe '#email_changed' do @@ -98,9 +98,9 @@ RSpec.describe UserMailer do .and(have_body_text(I18n.t('devise.mailer.email_changed.title'))) end - include_examples 'localized subject', - 'devise.mailer.email_changed.subject' - include_examples 'delivery to memorialized user' + it_behaves_like 'localized subject', + 'devise.mailer.email_changed.subject' + it_behaves_like 'delivery to memorialized user' end describe '#warning' do @@ -129,9 +129,9 @@ RSpec.describe UserMailer do .and(have_body_text(I18n.t('devise.mailer.webauthn_credential.deleted.title'))) end - include_examples 'localized subject', - 'devise.mailer.webauthn_credential.deleted.subject' - include_examples 'delivery to memorialized user' + it_behaves_like 'localized subject', + 'devise.mailer.webauthn_credential.deleted.subject' + it_behaves_like 'delivery to memorialized user' end describe '#suspicious_sign_in' do @@ -148,8 +148,8 @@ RSpec.describe UserMailer do .and(have_body_text(I18n.t('user_mailer.suspicious_sign_in.explanation'))) end - include_examples 'localized subject', - 'user_mailer.suspicious_sign_in.subject' + it_behaves_like 'localized subject', + 'user_mailer.suspicious_sign_in.subject' end describe '#failed_2fa' do @@ -166,8 +166,8 @@ RSpec.describe UserMailer do .and(have_body_text(I18n.t('user_mailer.failed_2fa.explanation'))) end - include_examples 'localized subject', - 'user_mailer.failed_2fa.subject' + it_behaves_like 'localized subject', + 'user_mailer.failed_2fa.subject' end describe '#appeal_approved' do @@ -204,7 +204,7 @@ RSpec.describe UserMailer do .and(have_body_text(I18n.t('devise.mailer.two_factor_enabled.explanation'))) end - include_examples 'delivery to memorialized user' + it_behaves_like 'delivery to memorialized user' end describe '#two_factor_disabled' do @@ -217,7 +217,7 @@ RSpec.describe UserMailer do .and(have_body_text(I18n.t('devise.mailer.two_factor_disabled.explanation'))) end - include_examples 'delivery to memorialized user' + it_behaves_like 'delivery to memorialized user' end describe '#webauthn_enabled' do @@ -230,7 +230,7 @@ RSpec.describe UserMailer do .and(have_body_text(I18n.t('devise.mailer.webauthn_enabled.explanation'))) end - include_examples 'delivery to memorialized user' + it_behaves_like 'delivery to memorialized user' end describe '#webauthn_disabled' do @@ -243,7 +243,7 @@ RSpec.describe UserMailer do .and(have_body_text(I18n.t('devise.mailer.webauthn_disabled.explanation'))) end - include_examples 'delivery to memorialized user' + it_behaves_like 'delivery to memorialized user' end describe '#two_factor_recovery_codes_changed' do @@ -256,7 +256,7 @@ RSpec.describe UserMailer do .and(have_body_text(I18n.t('devise.mailer.two_factor_recovery_codes_changed.explanation'))) end - include_examples 'delivery to memorialized user' + it_behaves_like 'delivery to memorialized user' end describe '#webauthn_credential_added' do @@ -270,7 +270,7 @@ RSpec.describe UserMailer do .and(have_body_text(I18n.t('devise.mailer.webauthn_credential.added.explanation'))) end - include_examples 'delivery to memorialized user' + it_behaves_like 'delivery to memorialized user' end describe '#welcome' do @@ -289,7 +289,7 @@ RSpec.describe UserMailer do .and(have_body_text(I18n.t('user_mailer.welcome.explanation'))) end - include_examples 'delivery to memorialized user' + it_behaves_like 'delivery to memorialized user' end describe '#backup_ready' do @@ -303,7 +303,7 @@ RSpec.describe UserMailer do .and(have_body_text(I18n.t('user_mailer.backup_ready.explanation'))) end - include_examples 'delivery to memorialized user' + it_behaves_like 'delivery to memorialized user' end describe '#terms_of_service_changed' do diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb index 2baf1fd3db..06b7b78e64 100644 --- a/spec/models/account_spec.rb +++ b/spec/models/account_spec.rb @@ -3,8 +3,8 @@ require 'rails_helper' RSpec.describe Account do - include_examples 'Account::Search' - include_examples 'Reviewable' + it_behaves_like 'Account::Search' + it_behaves_like 'Reviewable' context 'with an account record' do subject { Fabricate(:account) } @@ -806,8 +806,8 @@ RSpec.describe Account do end end - include_examples 'AccountAvatar', :account - include_examples 'AccountHeader', :account + it_behaves_like 'AccountAvatar', :account + it_behaves_like 'AccountHeader', :account describe '#increment_count!' do subject { Fabricate(:account) } diff --git a/spec/models/custom_filter_spec.rb b/spec/models/custom_filter_spec.rb index 168cbb7c91..03914fa6b4 100644 --- a/spec/models/custom_filter_spec.rb +++ b/spec/models/custom_filter_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe CustomFilter do - include_examples 'Expireable' + it_behaves_like 'Expireable' describe 'Validations' do it { is_expected.to validate_presence_of(:title) } diff --git a/spec/models/invite_spec.rb b/spec/models/invite_spec.rb index 6363f77a64..12ea6897f9 100644 --- a/spec/models/invite_spec.rb +++ b/spec/models/invite_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe Invite do - include_examples 'Expireable' + it_behaves_like 'Expireable' describe 'Associations' do it { is_expected.to belong_to(:user).inverse_of(:invites) } diff --git a/spec/models/ip_block_spec.rb b/spec/models/ip_block_spec.rb index 856d55be9d..18fb7ea136 100644 --- a/spec/models/ip_block_spec.rb +++ b/spec/models/ip_block_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe IpBlock do - include_examples 'Expireable' + it_behaves_like 'Expireable' describe 'Validations' do subject { Fabricate.build :ip_block } diff --git a/spec/models/login_activity_spec.rb b/spec/models/login_activity_spec.rb index 5b7935e8ba..bdee99c20f 100644 --- a/spec/models/login_activity_spec.rb +++ b/spec/models/login_activity_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe LoginActivity do - include_examples 'BrowserDetection' + it_behaves_like 'BrowserDetection' describe 'Associations' do it { is_expected.to belong_to(:user).required } diff --git a/spec/models/mute_spec.rb b/spec/models/mute_spec.rb index 33aa4f15dc..9cc4f74bea 100644 --- a/spec/models/mute_spec.rb +++ b/spec/models/mute_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe Mute do - include_examples 'Expireable' + it_behaves_like 'Expireable' describe 'Associations' do it { is_expected.to belong_to(:account).required } diff --git a/spec/models/poll_spec.rb b/spec/models/poll_spec.rb index 3288119546..04efb03a0b 100644 --- a/spec/models/poll_spec.rb +++ b/spec/models/poll_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe Poll do - include_examples 'Expireable' + it_behaves_like 'Expireable' describe '#reset_votes!' do let(:poll) { Fabricate :poll, cached_tallies: [2, 3], votes_count: 5, voters_count: 5 } diff --git a/spec/models/preview_card_provider_spec.rb b/spec/models/preview_card_provider_spec.rb index a3bd4f49ad..561c93d0b2 100644 --- a/spec/models/preview_card_provider_spec.rb +++ b/spec/models/preview_card_provider_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe PreviewCardProvider do - include_examples 'Reviewable' + it_behaves_like 'Reviewable' describe 'scopes' do let(:trendable_and_reviewed) { Fabricate(:preview_card_provider, trendable: true, reviewed_at: 5.days.ago) } diff --git a/spec/models/preview_card_trend_spec.rb b/spec/models/preview_card_trend_spec.rb index a5cb159af3..fb1f4643d5 100644 --- a/spec/models/preview_card_trend_spec.rb +++ b/spec/models/preview_card_trend_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe PreviewCardTrend do - include_examples 'RankedTrend' + it_behaves_like 'RankedTrend' describe 'Associations' do it { is_expected.to belong_to(:preview_card).required } diff --git a/spec/models/session_activation_spec.rb b/spec/models/session_activation_spec.rb index bb9b3c785f..63d22f0208 100644 --- a/spec/models/session_activation_spec.rb +++ b/spec/models/session_activation_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe SessionActivation do - include_examples 'BrowserDetection' + it_behaves_like 'BrowserDetection' describe '.active?' do subject { described_class.active?(id) } diff --git a/spec/models/status_spec.rb b/spec/models/status_spec.rb index a197aaf1d2..8a87d35366 100644 --- a/spec/models/status_spec.rb +++ b/spec/models/status_spec.rb @@ -9,7 +9,7 @@ RSpec.describe Status do let(:bob) { Fabricate(:account, username: 'bob') } let(:other) { Fabricate(:status, account: bob, text: 'Skulls for the skull god! The enemy\'s gates are sideways!') } - include_examples 'Status::Visibility' + it_behaves_like 'Status::Visibility' describe '#local?' do it 'returns true when no remote URI is set' do diff --git a/spec/models/status_trend_spec.rb b/spec/models/status_trend_spec.rb index 50fb9b5f5c..28485ae4df 100644 --- a/spec/models/status_trend_spec.rb +++ b/spec/models/status_trend_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe StatusTrend do - include_examples 'RankedTrend' + it_behaves_like 'RankedTrend' describe 'Associations' do it { is_expected.to belong_to(:account).required } diff --git a/spec/models/tag_spec.rb b/spec/models/tag_spec.rb index a1cc6a064f..0831ac34b8 100644 --- a/spec/models/tag_spec.rb +++ b/spec/models/tag_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe Tag do - include_examples 'Reviewable' + it_behaves_like 'Reviewable' describe 'Validations' do describe 'name' do diff --git a/spec/models/tag_trend_spec.rb b/spec/models/tag_trend_spec.rb index 37b50686db..2ddedd6cbc 100644 --- a/spec/models/tag_trend_spec.rb +++ b/spec/models/tag_trend_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe TagTrend do - include_examples 'RankedTrend' + it_behaves_like 'RankedTrend' describe 'Associations' do it { is_expected.to belong_to(:tag).required } diff --git a/spec/policies/admin/fasp/provider_policy_spec.rb b/spec/policies/admin/fasp/provider_policy_spec.rb index 802760f2e9..3bdb51405d 100644 --- a/spec/policies/admin/fasp/provider_policy_spec.rb +++ b/spec/policies/admin/fasp/provider_policy_spec.rb @@ -25,10 +25,10 @@ RSpec.describe Admin::Fasp::ProviderPolicy, type: :policy do end permissions :index?, :create? do - include_examples 'admin only', Fasp::Provider + it_behaves_like 'admin only', Fasp::Provider end permissions :show?, :create?, :update?, :destroy? do - include_examples 'admin only', :fasp_provider + it_behaves_like 'admin only', :fasp_provider end end diff --git a/spec/requests/oauth/token_spec.rb b/spec/requests/oauth/token_spec.rb index 74f301c577..7be65e7ab3 100644 --- a/spec/requests/oauth/token_spec.rb +++ b/spec/requests/oauth/token_spec.rb @@ -29,7 +29,7 @@ RSpec.describe 'Managing OAuth Tokens' do access_grant.plaintext_token end - shared_examples 'returns originally requested scopes' do + shared_examples 'original scope request preservation' do it 'returns all scopes requested for the given code' do subject @@ -41,26 +41,26 @@ RSpec.describe 'Managing OAuth Tokens' do context 'with no scopes specified' do let(:scope) { nil } - include_examples 'returns originally requested scopes' + it_behaves_like 'original scope request preservation' end context 'with scopes specified' do context 'when the scopes were requested for this code' do let(:scope) { 'write' } - include_examples 'returns originally requested scopes' + it_behaves_like 'original scope request preservation' end context 'when the scope was not requested for the code' do let(:scope) { 'follow' } - include_examples 'returns originally requested scopes' + it_behaves_like 'original scope request preservation' end context 'when the scope does not belong to the application' do let(:scope) { 'push' } - include_examples 'returns originally requested scopes' + it_behaves_like 'original scope request preservation' end end end diff --git a/spec/requests/omniauth_callbacks_spec.rb b/spec/requests/omniauth_callbacks_spec.rb index e13a49ec62..c71d025f9f 100644 --- a/spec/requests/omniauth_callbacks_spec.rb +++ b/spec/requests/omniauth_callbacks_spec.rb @@ -130,14 +130,14 @@ RSpec.describe 'OmniAuth callbacks' do end describe '#openid_connect', if: ENV['OIDC_ENABLED'] == 'true' && ENV['OIDC_SCOPE'].present? do - include_examples 'omniauth provider callbacks', :openid_connect + it_behaves_like 'omniauth provider callbacks', :openid_connect end describe '#cas', if: ENV['CAS_ENABLED'] == 'true' do - include_examples 'omniauth provider callbacks', :cas + it_behaves_like 'omniauth provider callbacks', :cas end describe '#saml', if: ENV['SAML_ENABLED'] == 'true' do - include_examples 'omniauth provider callbacks', :saml + it_behaves_like 'omniauth provider callbacks', :saml end end diff --git a/spec/services/activitypub/fetch_remote_account_service_spec.rb b/spec/services/activitypub/fetch_remote_account_service_spec.rb index 175ac9cb61..7ebd3cdc70 100644 --- a/spec/services/activitypub/fetch_remote_account_service_spec.rb +++ b/spec/services/activitypub/fetch_remote_account_service_spec.rb @@ -68,7 +68,7 @@ RSpec.describe ActivityPub::FetchRemoteAccountService do expect(account.domain).to eq 'example.com' end - include_examples 'sets profile data' + it_behaves_like 'sets profile data' end context 'when WebFinger presents different domain than URI' do @@ -91,7 +91,7 @@ RSpec.describe ActivityPub::FetchRemoteAccountService do expect(account.domain).to eq 'iscool.af' end - include_examples 'sets profile data' + it_behaves_like 'sets profile data' end context 'when WebFinger returns a different URI' do diff --git a/spec/services/activitypub/fetch_remote_actor_service_spec.rb b/spec/services/activitypub/fetch_remote_actor_service_spec.rb index 9d031cb89b..975e0799dd 100644 --- a/spec/services/activitypub/fetch_remote_actor_service_spec.rb +++ b/spec/services/activitypub/fetch_remote_actor_service_spec.rb @@ -68,7 +68,7 @@ RSpec.describe ActivityPub::FetchRemoteActorService do expect(account.domain).to eq 'example.com' end - include_examples 'sets profile data' + it_behaves_like 'sets profile data' end context 'when WebFinger presents different domain than URI' do @@ -91,7 +91,7 @@ RSpec.describe ActivityPub::FetchRemoteActorService do expect(account.domain).to eq 'iscool.af' end - include_examples 'sets profile data' + it_behaves_like 'sets profile data' end context 'when WebFinger returns a different URI' do diff --git a/spec/services/bulk_import_row_service_spec.rb b/spec/services/bulk_import_row_service_spec.rb index b9af795a5d..0601261bdb 100644 --- a/spec/services/bulk_import_row_service_spec.rb +++ b/spec/services/bulk_import_row_service_spec.rb @@ -115,7 +115,7 @@ RSpec.describe BulkImportRowService do account.follow!(target_account) end - include_examples 'row import success and list addition' + it_behaves_like 'row import success and list addition' end context 'when the user already requested to follow the target account' do @@ -123,17 +123,17 @@ RSpec.describe BulkImportRowService do account.request_follow!(target_account) end - include_examples 'row import success and list addition' + it_behaves_like 'row import success and list addition' end context 'when the target account is neither followed nor requested' do - include_examples 'row import success and list addition' + it_behaves_like 'row import success and list addition' end context 'when the target account is the user themself' do let(:target_account) { account } - include_examples 'row import success and list addition' + it_behaves_like 'row import success and list addition' end def add_target_account_to_list @@ -153,7 +153,7 @@ RSpec.describe BulkImportRowService do end context 'when the list does not exist yet' do - include_examples 'common behavior' + it_behaves_like 'common behavior' end context 'when the list exists' do @@ -161,7 +161,7 @@ RSpec.describe BulkImportRowService do Fabricate(:list, account: account, title: list_name) end - include_examples 'common behavior' + it_behaves_like 'common behavior' it 'does not create a new list' do account.follow!(target_account) diff --git a/spec/services/delete_account_service_spec.rb b/spec/services/delete_account_service_spec.rb index 741ac340cf..da02d2bd59 100644 --- a/spec/services/delete_account_service_spec.rb +++ b/spec/services/delete_account_service_spec.rb @@ -71,7 +71,7 @@ RSpec.describe DeleteAccountService do let!(:remote_alice) { Fabricate(:account, inbox_url: 'https://alice.com/inbox', domain: 'alice.com', protocol: :activitypub) } let!(:remote_bob) { Fabricate(:account, inbox_url: 'https://bob.com/inbox', domain: 'bob.com', protocol: :activitypub) } - include_examples 'common behavior' do + it_behaves_like 'common behavior' do let(:account) { Fabricate(:account) } let(:local_follower) { Fabricate(:account) } @@ -88,7 +88,7 @@ RSpec.describe DeleteAccountService do stub_request(:post, account.inbox_url).to_return(status: 201) end - include_examples 'common behavior' do + it_behaves_like 'common behavior' do let(:account) { Fabricate(:account, inbox_url: 'https://bob.com/inbox', protocol: :activitypub, domain: 'bob.com') } let(:local_follower) { Fabricate(:account) } diff --git a/spec/services/suspend_account_service_spec.rb b/spec/services/suspend_account_service_spec.rb index c15c23ca30..2b1455e9a8 100644 --- a/spec/services/suspend_account_service_spec.rb +++ b/spec/services/suspend_account_service_spec.rb @@ -46,7 +46,7 @@ RSpec.describe SuspendAccountService do json['type'] == 'Update' && json['actor'] == actor_id && json['object']['id'] == actor_id && json['object']['suspended'] end - include_examples 'common behavior' do + it_behaves_like 'common behavior' do let!(:account) { Fabricate(:account) } let!(:remote_follower) { Fabricate(:account, uri: 'https://alice.com', inbox_url: 'https://alice.com/inbox', protocol: :activitypub, domain: 'alice.com') } let!(:remote_reporter) { Fabricate(:account, uri: 'https://bob.com', inbox_url: 'https://bob.com/inbox', protocol: :activitypub, domain: 'bob.com') } @@ -72,7 +72,7 @@ RSpec.describe SuspendAccountService do json['type'] == 'Reject' && json['actor'] == ActivityPub::TagManager.instance.uri_for(followee) && json['object']['actor'] == account.uri end - include_examples 'common behavior' do + it_behaves_like 'common behavior' do let!(:account) { Fabricate(:account, domain: 'bob.com', uri: 'https://bob.com', inbox_url: 'https://bob.com/inbox', protocol: :activitypub) } let!(:local_followee) { Fabricate(:account) } diff --git a/spec/services/unsuspend_account_service_spec.rb b/spec/services/unsuspend_account_service_spec.rb index 8d4882c37f..2410040062 100644 --- a/spec/services/unsuspend_account_service_spec.rb +++ b/spec/services/unsuspend_account_service_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe UnsuspendAccountService do - shared_context 'with common context' do + shared_context 'when account is unsuspended' do subject { described_class.new.call(account) } let!(:local_follower) { Fabricate(:user, current_sign_in_at: 1.hour.ago).account } @@ -31,12 +31,13 @@ RSpec.describe UnsuspendAccountService do stub_request(:post, 'https://bob.com/inbox').to_return(status: 201) end + let!(:account) { Fabricate(:account) } + it 'does not change the “suspended” flag' do expect { subject }.to_not change(account, :suspended?) end - include_examples 'with common context' do - let!(:account) { Fabricate(:account) } + include_context 'when account is unsuspended' do let!(:remote_follower) { Fabricate(:account, uri: 'https://alice.com', inbox_url: 'https://alice.com/inbox', protocol: :activitypub, domain: 'alice.com') } let!(:remote_reporter) { Fabricate(:account, uri: 'https://bob.com', inbox_url: 'https://bob.com/inbox', protocol: :activitypub, domain: 'bob.com') } @@ -65,8 +66,8 @@ RSpec.describe UnsuspendAccountService do end describe 'unsuspending a remote account' do - include_examples 'with common context' do - let!(:account) { Fabricate(:account, domain: 'bob.com', uri: 'https://bob.com', inbox_url: 'https://bob.com/inbox', protocol: :activitypub) } + include_context 'when account is unsuspended' do + let!(:account) { Fabricate(:account, domain: 'bob.com', uri: 'https://bob.com', inbox_url: 'https://bob.com/inbox', protocol: :activitypub) } let!(:resolve_account_service) { instance_double(ResolveAccountService) } before do diff --git a/spec/workers/import/row_worker_spec.rb b/spec/workers/import/row_worker_spec.rb index edb02cb391..f173d49706 100644 --- a/spec/workers/import/row_worker_spec.rb +++ b/spec/workers/import/row_worker_spec.rb @@ -8,95 +8,82 @@ RSpec.describe Import::RowWorker do let(:row) { Fabricate(:bulk_import_row, bulk_import: import) } describe '#perform' do - before do - allow(BulkImportRowService).to receive(:new).and_return(service_double) + before { allow(BulkImportRowService).to receive(:new).and_return(service_double) } + + shared_context 'when service succeeds' do + let(:service_double) { instance_double(BulkImportRowService, call: true) } + end + + shared_context 'when service fails' do + let(:service_double) { instance_double(BulkImportRowService, call: false) } + end + + shared_context 'when service errors' do + let(:service_double) { instance_double(BulkImportRowService) } + before { allow(service_double).to receive(:call).and_raise('dummy error') } end shared_examples 'clean failure' do - let(:service_double) { instance_double(BulkImportRowService, call: false) } - - it 'calls BulkImportRowService' do - subject.perform(row.id) - expect(service_double).to have_received(:call).with(row) - end - - it 'increases the number of processed items' do - expect { subject.perform(row.id) }.to(change { import.reload.processed_items }.by(+1)) - end - - it 'does not increase the number of imported items' do - expect { subject.perform(row.id) }.to_not(change { import.reload.imported_items }) - end - - it 'does not delete the row' do - subject.perform(row.id) - expect(BulkImportRow.exists?(row.id)).to be true + it 'calls service, increases processed items, preserves imported items, and keeps row' do + expect { subject.perform(row.id) } + .to change { import.reload.processed_items }.by(+1) + .and not_change { import.reload.imported_items } + .and(not_change { BulkImportRow.exists?(row.id) }.from(true)) + expect(service_double) + .to have_received(:call).with(row) end end shared_examples 'unclean failure' do - let(:service_double) { instance_double(BulkImportRowService) } - - before do - allow(service_double).to receive(:call) do - raise 'dummy error' - end - end - - it 'raises an error and does not change processed items count' do - expect { subject.perform(row.id) }.to raise_error(StandardError, 'dummy error').and(not_change { import.reload.processed_items }) - end - - it 'does not delete the row' do - expect { subject.perform(row.id) }.to raise_error(StandardError, 'dummy error').and(not_change { BulkImportRow.exists?(row.id) }) + it 'raises an error, preserves processed items, and keeps row' do + expect { subject.perform(row.id) } + .to raise_error(StandardError, 'dummy error') + .and(not_change { import.reload.processed_items }) + .and(not_change { BulkImportRow.exists?(row.id) }.from(true)) end end shared_examples 'clean success' do - let(:service_double) { instance_double(BulkImportRowService, call: true) } - - it 'calls BulkImportRowService' do - subject.perform(row.id) + it 'calls service, increases processed items, increases imported items, and deletes row' do + expect { subject.perform(row.id) } + .to change { import.reload.processed_items }.by(+1) + .and change { import.reload.imported_items }.by(+1) + .and(change { BulkImportRow.exists?(row.id) }.from(true).to(false)) expect(service_double).to have_received(:call).with(row) end - - it 'increases the number of processed items' do - expect { subject.perform(row.id) }.to(change { import.reload.processed_items }.by(+1)) - end - - it 'increases the number of imported items' do - expect { subject.perform(row.id) }.to(change { import.reload.imported_items }.by(+1)) - end - - it 'deletes the row' do - expect { subject.perform(row.id) }.to change { BulkImportRow.exists?(row.id) }.from(true).to(false) - end end context 'when there are multiple rows to process' do let(:import) { Fabricate(:bulk_import, total_items: 2, processed_items: 0, imported_items: 0, state: :in_progress) } context 'with a clean failure' do - include_examples 'clean failure' + include_context 'when service fails' + it_behaves_like 'clean failure' it 'does not mark the import as finished' do - expect { subject.perform(row.id) }.to_not(change { import.reload.state.to_sym }) + expect { subject.perform(row.id) } + .to_not(change { import.reload.state.to_sym }) end end context 'with an unclean failure' do - include_examples 'unclean failure' + include_context 'when service errors' + it_behaves_like 'unclean failure' it 'does not mark the import as finished' do - expect { subject.perform(row.id) }.to raise_error(StandardError).and(not_change { import.reload.state.to_sym }) + expect { subject.perform(row.id) } + .to raise_error(StandardError) + .and(not_change { import.reload.state.to_sym }) end end context 'with a clean success' do - include_examples 'clean success' + include_context 'when service succeeds' + it_behaves_like 'clean success' it 'does not mark the import as finished' do - expect { subject.perform(row.id) }.to_not(change { import.reload.state.to_sym }) + expect { subject.perform(row.id) } + .to_not(change { import.reload.state.to_sym }) end end end @@ -105,21 +92,28 @@ RSpec.describe Import::RowWorker do let(:import) { Fabricate(:bulk_import, total_items: 2, processed_items: 1, imported_items: 0, state: :in_progress) } context 'with a clean failure' do - include_examples 'clean failure' + include_context 'when service fails' + it_behaves_like 'clean failure' it 'marks the import as finished' do - expect { subject.perform(row.id) }.to change { import.reload.state.to_sym }.from(:in_progress).to(:finished) + expect { subject.perform(row.id) } + .to change { import.reload.state.to_sym }.from(:in_progress).to(:finished) end end - # NOTE: sidekiq retry logic may be a bit too difficult to test, so leaving this blind spot for now - it_behaves_like 'unclean failure' + context 'with an unclean failure' do + # NOTE: sidekiq retry logic may be a bit too difficult to test, so leaving this blind spot for now + include_context 'when service errors' + it_behaves_like 'unclean failure' + end context 'with a clean success' do - include_examples 'clean success' + include_context 'when service succeeds' + it_behaves_like 'clean success' it 'marks the import as finished' do - expect { subject.perform(row.id) }.to change { import.reload.state.to_sym }.from(:in_progress).to(:finished) + expect { subject.perform(row.id) } + .to change { import.reload.state.to_sym }.from(:in_progress).to(:finished) end end end diff --git a/spec/workers/move_worker_spec.rb b/spec/workers/move_worker_spec.rb index a24de57e27..d9cf4a1686 100644 --- a/spec/workers/move_worker_spec.rb +++ b/spec/workers/move_worker_spec.rb @@ -113,27 +113,27 @@ RSpec.describe MoveWorker do end shared_examples 'common tests' do - include_examples 'user note handling' - include_examples 'block and mute handling' - include_examples 'followers count handling' - include_examples 'lists handling' + it_behaves_like 'user note handling' + it_behaves_like 'block and mute handling' + it_behaves_like 'followers count handling' + it_behaves_like 'lists handling' context 'when a local user already follows both source and target' do before do local_follower.request_follow!(target_account) end - include_examples 'user note handling' - include_examples 'block and mute handling' - include_examples 'followers count handling' - include_examples 'lists handling' + it_behaves_like 'user note handling' + it_behaves_like 'block and mute handling' + it_behaves_like 'followers count handling' + it_behaves_like 'lists handling' context 'when the local user already has the target in a list' do before do list.accounts << target_account end - include_examples 'lists handling' + it_behaves_like 'lists handling' end end @@ -142,17 +142,17 @@ RSpec.describe MoveWorker do local_follower.follow!(target_account) end - include_examples 'user note handling' - include_examples 'block and mute handling' - include_examples 'followers count handling' - include_examples 'lists handling' + it_behaves_like 'user note handling' + it_behaves_like 'block and mute handling' + it_behaves_like 'followers count handling' + it_behaves_like 'lists handling' context 'when the local user already has the target in a list' do before do list.accounts << target_account end - include_examples 'lists handling' + it_behaves_like 'lists handling' end end end @@ -164,7 +164,7 @@ RSpec.describe MoveWorker do expect(UnfollowFollowWorker).to have_enqueued_sidekiq_job(local_follower.id, source_account.id, target_account.id, false) end - include_examples 'common tests' + it_behaves_like 'common tests' end context 'when target account is local' do @@ -175,7 +175,7 @@ RSpec.describe MoveWorker do expect(UnfollowFollowWorker).to have_enqueued_sidekiq_job(local_follower.id, source_account.id, target_account.id, true) end - include_examples 'common tests' + it_behaves_like 'common tests' end context 'when both target and source accounts are local' do @@ -187,7 +187,7 @@ RSpec.describe MoveWorker do expect(local_follower.following?(target_account)).to be true end - include_examples 'common tests' + it_behaves_like 'common tests' it 'does not allow the moved account to follow themselves' do source_account.follow!(target_account) diff --git a/spec/workers/scheduler/accounts_statuses_cleanup_scheduler_spec.rb b/spec/workers/scheduler/accounts_statuses_cleanup_scheduler_spec.rb index 28a4176193..55b66629e0 100644 --- a/spec/workers/scheduler/accounts_statuses_cleanup_scheduler_spec.rb +++ b/spec/workers/scheduler/accounts_statuses_cleanup_scheduler_spec.rb @@ -108,7 +108,7 @@ RSpec.describe Scheduler::AccountsStatusesCleanupScheduler do context 'when the budget is lower than the number of toots to delete' do it 'deletes the appropriate statuses' do - expect(Status.count).to be > (subject.compute_budget) # Data check + expect(Status.count).to be > subject.compute_budget # Data check expect { subject.perform } .to change(Status, :count).by(-subject.compute_budget) # Cleanable statuses