From ac5ced71cd6e1a022530c6f1a2e6c943f3a43f99 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 21 Jul 2026 08:43:46 -0400 Subject: [PATCH] Compact validation matcher checks where possible (#39435) --- spec/models/account_spec.rb | 5 +---- spec/models/collection_spec.rb | 4 +--- spec/models/custom_filter_spec.rb | 3 +-- spec/models/instance_moderation_note_spec.rb | 3 +-- spec/models/ip_block_spec.rb | 3 +-- spec/models/rule_translation_spec.rb | 3 +-- spec/models/terms_of_service_spec.rb | 3 +-- spec/models/webauthn_credential_spec.rb | 5 +---- 8 files changed, 8 insertions(+), 21 deletions(-) diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb index 0ae71d54162..70d349d13ad 100644 --- a/spec/models/account_spec.rb +++ b/spec/models/account_spec.rb @@ -547,10 +547,7 @@ RSpec.describe Account do it { is_expected.to_not allow_values(account_note_over_limit).for(:note) } - it { is_expected.to validate_absence_of(:followers_url).on(:create) } - it { is_expected.to validate_absence_of(:inbox_url).on(:create) } - it { is_expected.to validate_absence_of(:shared_inbox_url).on(:create) } - it { is_expected.to validate_absence_of(:uri).on(:create) } + it { is_expected.to validate_absence_of(:inbox_url, :followers_url, :shared_inbox_url, :uri).on(:create) } it { is_expected.to allow_values([], ['example.com'], (1..domains_limit).to_a).for(:attribution_domains) } it { is_expected.to_not allow_values(['example com'], ['@'], (1..(domains_limit + 1)).to_a).for(:attribution_domains) } diff --git a/spec/models/collection_spec.rb b/spec/models/collection_spec.rb index 16322aff9f8..921a30ea7c7 100644 --- a/spec/models/collection_spec.rb +++ b/spec/models/collection_spec.rb @@ -29,9 +29,7 @@ RSpec.describe Collection do it { is_expected.to validate_length_of(:description_html).is_at_most(Collection::DESCRIPTION_LENGTH_HARD_LIMIT) } - it { is_expected.to validate_presence_of(:uri) } - - it { is_expected.to validate_presence_of(:original_number_of_items) } + it { is_expected.to validate_presence_of(:original_number_of_items, :uri) } it { is_expected.to allow_value('randomstuff').for(:language) } end diff --git a/spec/models/custom_filter_spec.rb b/spec/models/custom_filter_spec.rb index 8a60f1dd491..c838687c97c 100644 --- a/spec/models/custom_filter_spec.rb +++ b/spec/models/custom_filter_spec.rb @@ -7,8 +7,7 @@ RSpec.describe CustomFilter do describe 'Validations' do it { is_expected.to validate_length_of(:title).is_at_most(described_class::TITLE_LENGTH_LIMIT) } - it { is_expected.to validate_presence_of(:context) } - it { is_expected.to validate_presence_of(:title) } + it { is_expected.to validate_presence_of(:context, :title) } it { is_expected.to_not allow_values([], %w(invalid)).for(:context) } it { is_expected.to allow_values(%w(home)).for(:context) } diff --git a/spec/models/instance_moderation_note_spec.rb b/spec/models/instance_moderation_note_spec.rb index 23e6e3d5e14..cae029e71e8 100644 --- a/spec/models/instance_moderation_note_spec.rb +++ b/spec/models/instance_moderation_note_spec.rb @@ -19,7 +19,6 @@ RSpec.describe InstanceModerationNote do it { is_expected.to allow_value('non-existent.example').for(:domain) } it { is_expected.to validate_length_of(:content).is_at_most(described_class::CONTENT_SIZE_LIMIT) } - it { is_expected.to validate_presence_of(:content) } - it { is_expected.to validate_presence_of(:domain) } + it { is_expected.to validate_presence_of(:content, :domain) } end end diff --git a/spec/models/ip_block_spec.rb b/spec/models/ip_block_spec.rb index 595d4cc685c..61172954561 100644 --- a/spec/models/ip_block_spec.rb +++ b/spec/models/ip_block_spec.rb @@ -9,8 +9,7 @@ RSpec.describe IpBlock do describe 'Validations' do subject { Fabricate.build :ip_block } - it { is_expected.to validate_presence_of(:ip) } - it { is_expected.to validate_presence_of(:severity) } + it { is_expected.to validate_presence_of(:ip, :severity) } it { is_expected.to validate_uniqueness_of(:ip) } diff --git a/spec/models/rule_translation_spec.rb b/spec/models/rule_translation_spec.rb index 1a0a7375042..ee8c6982e85 100644 --- a/spec/models/rule_translation_spec.rb +++ b/spec/models/rule_translation_spec.rb @@ -10,8 +10,7 @@ RSpec.describe RuleTranslation do describe 'Validations' do subject { Fabricate.build :rule_translation } - it { is_expected.to validate_presence_of(:language) } - it { is_expected.to validate_presence_of(:text) } + it { is_expected.to validate_presence_of(:language, :text) } it { is_expected.to validate_length_of(:text).is_at_most(Rule::TEXT_SIZE_LIMIT) } it { is_expected.to validate_uniqueness_of(:language).scoped_to(:rule_id) } end diff --git a/spec/models/terms_of_service_spec.rb b/spec/models/terms_of_service_spec.rb index 99a7caa6131..e86b1de51b6 100644 --- a/spec/models/terms_of_service_spec.rb +++ b/spec/models/terms_of_service_spec.rb @@ -25,8 +25,7 @@ RSpec.describe TermsOfService do context 'when published' do subject { Fabricate.build :terms_of_service, published_at: Time.zone.today } - it { is_expected.to validate_presence_of(:changelog) } - it { is_expected.to validate_presence_of(:effective_date) } + it { is_expected.to validate_presence_of(:changelog, :effective_date) } end end diff --git a/spec/models/webauthn_credential_spec.rb b/spec/models/webauthn_credential_spec.rb index 8abf5835418..a1cf5781bef 100644 --- a/spec/models/webauthn_credential_spec.rb +++ b/spec/models/webauthn_credential_spec.rb @@ -6,10 +6,7 @@ RSpec.describe WebauthnCredential do describe 'Validations' do subject { Fabricate.build :webauthn_credential } - it { is_expected.to validate_presence_of(:external_id) } - it { is_expected.to validate_presence_of(:public_key) } - it { is_expected.to validate_presence_of(:nickname) } - it { is_expected.to validate_presence_of(:sign_count) } + it { is_expected.to validate_presence_of(:external_id, :nickname, :public_key, :sign_count) } it { is_expected.to validate_uniqueness_of(:external_id) } it { is_expected.to validate_uniqueness_of(:nickname).scoped_to(:user_id) }