From c37bc5a8a94758e19b2d50db5e7816a96cec5cf4 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 17 Mar 2026 05:50:32 -0400 Subject: [PATCH] Update model-concern-related spec locations for consistency (#38200) --- .../account/avatar_spec.rb} | 10 ++-- .../account/header_spec.rb} | 4 +- .../account/search_spec.rb} | 46 +++++++++---------- spec/models/account_spec.rb | 4 -- .../status/visibility_spec.rb} | 2 +- spec/models/status_spec.rb | 2 - .../user/activity_spec.rb} | 6 +-- .../user/confirmation_spec.rb} | 6 +-- spec/models/user_spec.rb | 2 - 9 files changed, 37 insertions(+), 45 deletions(-) rename spec/{support/examples/models/concerns/account_avatar.rb => models/account/avatar_spec.rb} (77%) rename spec/{support/examples/models/concerns/account_header.rb => models/account/header_spec.rb} (84%) rename spec/{support/examples/models/concerns/account/search.rb => models/account/search_spec.rb} (78%) rename spec/{support/examples/models/concerns/status/visibility.rb => models/status/visibility_spec.rb} (99%) rename spec/{support/examples/models/concerns/user/activity.rb => models/user/activity_spec.rb} (89%) rename spec/{support/examples/models/concerns/user/confirmation.rb => models/user/confirmation_spec.rb} (97%) diff --git a/spec/support/examples/models/concerns/account_avatar.rb b/spec/models/account/avatar_spec.rb similarity index 77% rename from spec/support/examples/models/concerns/account_avatar.rb rename to spec/models/account/avatar_spec.rb index c6cc4e75a5..05d5c16e60 100644 --- a/spec/support/examples/models/concerns/account_avatar.rb +++ b/spec/models/account/avatar_spec.rb @@ -1,24 +1,24 @@ # frozen_string_literal: true -RSpec.shared_examples 'AccountAvatar' do |fabricator| +RSpec.describe Account::Avatar do describe 'static avatars', :attachment_processing do describe 'with a square GIF' do it 'creates a png static style' do - account = Fabricate(fabricator, avatar: attachment_fixture('avatar.gif')) + account = Fabricate(:account, avatar: attachment_fixture('avatar.gif')) expect(account.avatar_static_url).to_not eq account.avatar_original_url end end describe 'with a higher-than-wide GIF' do it 'creates a png static style' do - account = Fabricate(fabricator, avatar: attachment_fixture('avatar-high.gif')) + account = Fabricate(:account, avatar: attachment_fixture('avatar-high.gif')) expect(account.avatar_static_url).to_not eq account.avatar_original_url end end describe 'when non-GIF' do it 'does not create extra static style' do - account = Fabricate(fabricator, avatar: attachment_fixture('attachment.jpg')) + account = Fabricate(:account, avatar: attachment_fixture('attachment.jpg')) expect(account.avatar_static_url).to eq account.avatar_original_url end end @@ -26,7 +26,7 @@ RSpec.shared_examples 'AccountAvatar' do |fabricator| describe 'base64-encoded files', :attachment_processing do let(:base64_attachment) { "data:image/jpeg;base64,#{Base64.encode64(attachment_fixture('attachment.jpg').read)}" } - let(:account) { Fabricate(fabricator, avatar: base64_attachment) } + let(:account) { Fabricate(:account, avatar: base64_attachment) } it 'saves avatar' do expect(account.persisted?).to be true diff --git a/spec/support/examples/models/concerns/account_header.rb b/spec/models/account/header_spec.rb similarity index 84% rename from spec/support/examples/models/concerns/account_header.rb rename to spec/models/account/header_spec.rb index af8d22d633..9faf30a3db 100644 --- a/spec/support/examples/models/concerns/account_header.rb +++ b/spec/models/account/header_spec.rb @@ -1,9 +1,9 @@ # frozen_string_literal: true -RSpec.shared_examples 'AccountHeader' do |fabricator| +RSpec.describe Account::Header do describe 'base64-encoded files', :attachment_processing do let(:base64_attachment) { "data:image/jpeg;base64,#{Base64.encode64(attachment_fixture('attachment.jpg').read)}" } - let(:account) { Fabricate(fabricator, header: base64_attachment) } + let(:account) { Fabricate(:account, header: base64_attachment) } it 'saves header' do expect(account.persisted?).to be true diff --git a/spec/support/examples/models/concerns/account/search.rb b/spec/models/account/search_spec.rb similarity index 78% rename from spec/support/examples/models/concerns/account/search.rb rename to spec/models/account/search_spec.rb index 9d9b499732..a67eddf63d 100644 --- a/spec/support/examples/models/concerns/account/search.rb +++ b/spec/models/account/search_spec.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -RSpec.shared_examples 'Account::Search' do +RSpec.describe Account::Search do describe '.search_for' do before do _missing = Fabricate( @@ -20,7 +20,7 @@ RSpec.shared_examples 'Account::Search' do suspended: true ) - results = described_class.search_for('username') + results = Account.search_for('username') expect(results).to eq [] end @@ -33,7 +33,7 @@ RSpec.shared_examples 'Account::Search' do match.user.update(approved: false) - results = described_class.search_for('username') + results = Account.search_for('username') expect(results).to eq [] end @@ -46,7 +46,7 @@ RSpec.shared_examples 'Account::Search' do match.user.update(confirmed_at: nil) - results = described_class.search_for('username') + results = Account.search_for('username') expect(results).to eq [] end @@ -58,7 +58,7 @@ RSpec.shared_examples 'Account::Search' do domain: 'example.com' ) - results = described_class.search_for('A?l\i:c e') + results = Account.search_for('A?l\i:c e') expect(results).to eq [match] end @@ -70,7 +70,7 @@ RSpec.shared_examples 'Account::Search' do domain: 'example.com' ) - results = described_class.search_for('display') + results = Account.search_for('display') expect(results).to eq [match] end @@ -82,7 +82,7 @@ RSpec.shared_examples 'Account::Search' do domain: 'example.com' ) - results = described_class.search_for('username') + results = Account.search_for('username') expect(results).to eq [match] end @@ -94,20 +94,20 @@ RSpec.shared_examples 'Account::Search' do domain: 'example.com' ) - results = described_class.search_for('example') + results = Account.search_for('example') expect(results).to eq [match] end it 'limits via constant by default' do stub_const('Account::Search::DEFAULT_LIMIT', 1) 2.times.each { Fabricate(:account, display_name: 'Display Name') } - results = described_class.search_for('display') + results = Account.search_for('display') expect(results.size).to eq 1 end it 'accepts arbitrary limits' do 2.times.each { Fabricate(:account, display_name: 'Display Name') } - results = described_class.search_for('display', limit: 1) + results = Account.search_for('display', limit: 1) expect(results.size).to eq 1 end @@ -117,7 +117,7 @@ RSpec.shared_examples 'Account::Search' do { display_name: 'Display Name', username: 'username', domain: 'example.com' }, ].map(&method(:Fabricate).curry(2).call(:account)) - results = described_class.search_for('username') + results = Account.search_for('username') expect(results).to eq matches end end @@ -135,7 +135,7 @@ RSpec.shared_examples 'Account::Search' do ) account.follow!(match) - results = described_class.advanced_search_for('A?l\i:c e', account, limit: 10, following: true) + results = Account.advanced_search_for('A?l\i:c e', account, limit: 10, following: true) expect(results).to eq [match] end @@ -147,7 +147,7 @@ RSpec.shared_examples 'Account::Search' do domain: 'example.com' ) - results = described_class.advanced_search_for('A?l\i:c e', account, limit: 10, following: true) + results = Account.advanced_search_for('A?l\i:c e', account, limit: 10, following: true) expect(results).to eq [] end @@ -160,7 +160,7 @@ RSpec.shared_examples 'Account::Search' do suspended: true ) - results = described_class.advanced_search_for('username', account, limit: 10, following: true) + results = Account.advanced_search_for('username', account, limit: 10, following: true) expect(results).to eq [] end @@ -173,7 +173,7 @@ RSpec.shared_examples 'Account::Search' do match.user.update(approved: false) - results = described_class.advanced_search_for('username', account, limit: 10, following: true) + results = Account.advanced_search_for('username', account, limit: 10, following: true) expect(results).to eq [] end @@ -186,7 +186,7 @@ RSpec.shared_examples 'Account::Search' do match.user.update(confirmed_at: nil) - results = described_class.advanced_search_for('username', account, limit: 10, following: true) + results = Account.advanced_search_for('username', account, limit: 10, following: true) expect(results).to eq [] end end @@ -200,7 +200,7 @@ RSpec.shared_examples 'Account::Search' do suspended: true ) - results = described_class.advanced_search_for('username', account) + results = Account.advanced_search_for('username', account) expect(results).to eq [] end @@ -213,7 +213,7 @@ RSpec.shared_examples 'Account::Search' do match.user.update(approved: false) - results = described_class.advanced_search_for('username', account) + results = Account.advanced_search_for('username', account) expect(results).to eq [] end @@ -226,7 +226,7 @@ RSpec.shared_examples 'Account::Search' do match.user.update(confirmed_at: nil) - results = described_class.advanced_search_for('username', account) + results = Account.advanced_search_for('username', account) expect(results).to eq [] end @@ -238,20 +238,20 @@ RSpec.shared_examples 'Account::Search' do domain: 'example.com' ) - results = described_class.advanced_search_for('A?l\i:c e', account) + results = Account.advanced_search_for('A?l\i:c e', account) expect(results).to eq [match] end it 'limits result count by default value' do stub_const('Account::Search::DEFAULT_LIMIT', 1) 2.times { Fabricate(:account, display_name: 'Display Name') } - results = described_class.advanced_search_for('display', account) + results = Account.advanced_search_for('display', account) expect(results.size).to eq 1 end it 'accepts arbitrary limits' do 2.times { Fabricate(:account, display_name: 'Display Name') } - results = described_class.advanced_search_for('display', account, limit: 1) + results = Account.advanced_search_for('display', account, limit: 1) expect(results.size).to eq 1 end @@ -260,7 +260,7 @@ RSpec.shared_examples 'Account::Search' do followed_match = Fabricate(:account, username: 'Matcher') Fabricate(:follow, account: account, target_account: followed_match) - results = described_class.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/account_spec.rb b/spec/models/account_spec.rb index 2fd32d1361..bb521e234a 100644 --- a/spec/models/account_spec.rb +++ b/spec/models/account_spec.rb @@ -3,7 +3,6 @@ require 'rails_helper' RSpec.describe Account do - it_behaves_like 'Account::Search' it_behaves_like 'Reviewable' describe 'Associations' do @@ -773,9 +772,6 @@ RSpec.describe Account do end end - it_behaves_like 'AccountAvatar', :account - it_behaves_like 'AccountHeader', :account - describe '#increment_count!' do subject { Fabricate(:account) } diff --git a/spec/support/examples/models/concerns/status/visibility.rb b/spec/models/status/visibility_spec.rb similarity index 99% rename from spec/support/examples/models/concerns/status/visibility.rb rename to spec/models/status/visibility_spec.rb index dd9e0bddf0..2aaaf6a88c 100644 --- a/spec/support/examples/models/concerns/status/visibility.rb +++ b/spec/models/status/visibility_spec.rb @@ -2,7 +2,7 @@ require 'rails_helper' -RSpec.shared_examples 'Status::Visibility' do +RSpec.describe Status::Visibility do describe 'Validations' do context 'when status is a reblog' do subject { Fabricate.build :status, reblog: Fabricate(:status) } diff --git a/spec/models/status_spec.rb b/spec/models/status_spec.rb index 1c653ae113..06524fc484 100644 --- a/spec/models/status_spec.rb +++ b/spec/models/status_spec.rb @@ -9,8 +9,6 @@ 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!') } - it_behaves_like 'Status::Visibility' - describe '#local?' do it 'returns true when no remote URI is set' do expect(subject.local?).to be true diff --git a/spec/support/examples/models/concerns/user/activity.rb b/spec/models/user/activity_spec.rb similarity index 89% rename from spec/support/examples/models/concerns/user/activity.rb rename to spec/models/user/activity_spec.rb index 7e647b694a..ca86150716 100644 --- a/spec/support/examples/models/concerns/user/activity.rb +++ b/spec/models/user/activity_spec.rb @@ -2,7 +2,7 @@ require 'rails_helper' -RSpec.shared_examples 'User::Activity' do +RSpec.describe User::Activity do before { stub_const 'User::ACTIVE_DURATION', 7.days } describe 'Scopes' do @@ -11,14 +11,14 @@ RSpec.shared_examples 'User::Activity' do describe '.signed_in_recently' do it 'returns users who have signed in during the recent period' do - expect(described_class.signed_in_recently) + expect(User.signed_in_recently) .to contain_exactly(recent_sign_in_user) end end describe '.not_signed_in_recently' do it 'returns users who have not signed in during the recent period' do - expect(described_class.not_signed_in_recently) + expect(User.not_signed_in_recently) .to contain_exactly(no_recent_sign_in_user) end end diff --git a/spec/support/examples/models/concerns/user/confirmation.rb b/spec/models/user/confirmation_spec.rb similarity index 97% rename from spec/support/examples/models/concerns/user/confirmation.rb rename to spec/models/user/confirmation_spec.rb index bb4d1b52b9..eda12e2fa5 100644 --- a/spec/support/examples/models/concerns/user/confirmation.rb +++ b/spec/models/user/confirmation_spec.rb @@ -2,21 +2,21 @@ require 'rails_helper' -RSpec.shared_examples 'User::Confirmation' do +RSpec.describe User::Confirmation do describe 'Scopes' do let!(:unconfirmed_user) { Fabricate :user, confirmed_at: nil } let!(:confirmed_user) { Fabricate :user, confirmed_at: Time.now.utc } describe '.confirmed' do it 'returns users who are confirmed' do - expect(described_class.confirmed) + expect(User.confirmed) .to contain_exactly(confirmed_user) end end describe '.unconfirmed' do it 'returns users who are not confirmed' do - expect(described_class.unconfirmed) + expect(User.unconfirmed) .to contain_exactly(unconfirmed_user) end end diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index a7ac034f0a..e4ef25bc76 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -10,8 +10,6 @@ RSpec.describe User do let(:account) { Fabricate(:account, username: 'alice') } it_behaves_like 'two_factor_backupable' - it_behaves_like 'User::Activity' - it_behaves_like 'User::Confirmation' describe 'otp_secret' do it 'encrypts the saved value' do