Simplify basic presence validations (#29664)

This commit is contained in:
Matt Jankowski 2024-09-05 11:36:05 -04:00 committed by GitHub
parent bc435c63bd
commit 5acec087ca
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
16 changed files with 28 additions and 159 deletions

View file

@ -64,14 +64,7 @@ RSpec.describe Announcement do
end end
describe 'Validations' do describe 'Validations' do
describe 'text' do it { is_expected.to validate_presence_of(:text) }
it 'validates presence of attribute' do
record = Fabricate.build(:announcement, text: nil)
expect(record).to_not be_valid
expect(record.errors[:text]).to be_present
end
end
describe 'ends_at' do describe 'ends_at' do
it 'validates presence when starts_at is present' do it 'validates presence when starts_at is present' do

View file

@ -4,17 +4,8 @@ require 'rails_helper'
RSpec.describe Block do RSpec.describe Block do
describe 'validations' do describe 'validations' do
it 'is invalid without an account' do it { is_expected.to belong_to(:account).required }
block = Fabricate.build(:block, account: nil) it { is_expected.to belong_to(:target_account).required }
block.valid?
expect(block).to model_have_error_on_field(:account)
end
it 'is invalid without a target_account' do
block = Fabricate.build(:block, target_account: nil)
block.valid?
expect(block).to model_have_error_on_field(:target_account)
end
end end
it 'removes blocking cache after creation' do it 'removes blocking cache after creation' do

View file

@ -4,11 +4,6 @@ require 'rails_helper'
RSpec.describe CustomEmojiCategory do RSpec.describe CustomEmojiCategory do
describe 'validations' do describe 'validations' do
it 'validates name presence' do it { is_expected.to validate_presence_of(:name) }
record = described_class.new(name: nil)
expect(record).to_not be_valid
expect(record).to model_have_error_on_field(:name)
end
end end
end end

View file

@ -4,19 +4,8 @@ require 'rails_helper'
RSpec.describe CustomFilter do RSpec.describe CustomFilter do
describe 'Validations' do describe 'Validations' do
it 'requires presence of title' do it { is_expected.to validate_presence_of(:title) }
record = described_class.new(title: '') it { is_expected.to validate_presence_of(:context) }
record.valid?
expect(record).to model_have_error_on_field(:title)
end
it 'requires presence of context' do
record = described_class.new(context: nil)
record.valid?
expect(record).to model_have_error_on_field(:context)
end
it 'requires non-empty of context' do it 'requires non-empty of context' do
record = described_class.new(context: []) record = described_class.new(context: [])

View file

@ -4,11 +4,7 @@ require 'rails_helper'
RSpec.describe DomainAllow do RSpec.describe DomainAllow do
describe 'Validations' do describe 'Validations' do
it 'is invalid without a domain' do it { is_expected.to validate_presence_of(:domain) }
domain_allow = Fabricate.build(:domain_allow, domain: nil)
domain_allow.valid?
expect(domain_allow).to model_have_error_on_field(:domain)
end
it 'is invalid if the same normalized domain already exists' do it 'is invalid if the same normalized domain already exists' do
_domain_allow = Fabricate(:domain_allow, domain: 'にゃん') _domain_allow = Fabricate(:domain_allow, domain: 'にゃん')

View file

@ -4,11 +4,7 @@ require 'rails_helper'
RSpec.describe DomainBlock do RSpec.describe DomainBlock do
describe 'validations' do describe 'validations' do
it 'is invalid without a domain' do it { is_expected.to validate_presence_of(:domain) }
domain_block = Fabricate.build(:domain_block, domain: nil)
domain_block.valid?
expect(domain_block).to model_have_error_on_field(:domain)
end
it 'is invalid if the same normalized domain already exists' do it 'is invalid if the same normalized domain already exists' do
_domain_block = Fabricate(:domain_block, domain: 'にゃん') _domain_block = Fabricate(:domain_block, domain: 'にゃん')

View file

@ -9,17 +9,8 @@ RSpec.describe Follow do
describe 'validations' do describe 'validations' do
subject { described_class.new(account: alice, target_account: bob, rate_limit: true) } subject { described_class.new(account: alice, target_account: bob, rate_limit: true) }
it 'is invalid without an account' do it { is_expected.to belong_to(:account).required }
follow = Fabricate.build(:follow, account: nil) it { is_expected.to belong_to(:target_account).required }
follow.valid?
expect(follow).to model_have_error_on_field(:account)
end
it 'is invalid without a target_account' do
follow = Fabricate.build(:follow, target_account: nil)
follow.valid?
expect(follow).to model_have_error_on_field(:target_account)
end
it 'is invalid if account already follows too many people' do it 'is invalid if account already follows too many people' do
alice.update(following_count: FollowLimitValidator::LIMIT) alice.update(following_count: FollowLimitValidator::LIMIT)

View file

@ -3,19 +3,8 @@
require 'rails_helper' require 'rails_helper'
RSpec.describe Import do RSpec.describe Import do
let(:account) { Fabricate(:account) } describe 'Validations' do
let(:type) { 'following' } it { is_expected.to validate_presence_of(:type) }
let(:data) { attachment_fixture('imports.txt') } it { is_expected.to validate_presence_of(:data) }
describe 'validations' do
it 'is invalid without an type' do
import = described_class.create(account: account, data: data)
expect(import).to model_have_error_on_field(:type)
end
it 'is invalid without a data' do
import = described_class.create(account: account, type: type)
expect(import).to model_have_error_on_field(:data)
end
end end
end end

View file

@ -4,19 +4,8 @@ require 'rails_helper'
RSpec.describe IpBlock do RSpec.describe IpBlock do
describe 'validations' do describe 'validations' do
it 'validates ip presence', :aggregate_failures do it { is_expected.to validate_presence_of(:ip) }
ip_block = described_class.new(ip: nil, severity: :no_access) it { is_expected.to validate_presence_of(:severity) }
expect(ip_block).to_not be_valid
expect(ip_block).to model_have_error_on_field(:ip)
end
it 'validates severity presence', :aggregate_failures do
ip_block = described_class.new(ip: '127.0.0.1', severity: nil)
expect(ip_block).to_not be_valid
expect(ip_block).to model_have_error_on_field(:severity)
end
it 'validates ip uniqueness', :aggregate_failures do it 'validates ip uniqueness', :aggregate_failures do
described_class.create!(ip: '127.0.0.1', severity: :no_access) described_class.create!(ip: '127.0.0.1', severity: :no_access)

View file

@ -3,14 +3,7 @@
require 'rails_helper' require 'rails_helper'
RSpec.describe Marker do RSpec.describe Marker do
describe 'validations' do describe 'Validations' do
describe 'timeline' do it { is_expected.to validate_inclusion_of(:timeline).in_array(described_class::TIMELINES) }
it 'must be included in valid list' do
record = described_class.new(timeline: 'not real timeline')
expect(record).to_not be_valid
expect(record).to model_have_error_on_field(:timeline)
end
end
end end
end end

View file

@ -257,12 +257,7 @@ RSpec.describe MediaAttachment, :attachment_processing do
end end
end end
it 'is invalid without file' do it { is_expected.to validate_presence_of(:file) }
media = described_class.new
expect(media.valid?).to be false
expect(media).to model_have_error_on_field(:file)
end
describe 'size limit validation' do describe 'size limit validation' do
it 'rejects video files that are too large' do it 'rejects video files that are too large' do

View file

@ -4,16 +4,7 @@ require 'rails_helper'
RSpec.describe Mention do RSpec.describe Mention do
describe 'validations' do describe 'validations' do
it 'is invalid without an account' do it { is_expected.to belong_to(:account).required }
mention = Fabricate.build(:mention, account: nil) it { is_expected.to belong_to(:status).required }
mention.valid?
expect(mention).to model_have_error_on_field(:account)
end
it 'is invalid without a status' do
mention = Fabricate.build(:mention, status: nil)
mention.valid?
expect(mention).to model_have_error_on_field(:status)
end
end end
end end

View file

@ -32,12 +32,9 @@ RSpec.describe Poll do
describe 'validations' do describe 'validations' do
context 'when not valid' do context 'when not valid' do
let(:poll) { Fabricate.build(:poll, expires_at: nil) } subject { Fabricate.build(:poll) }
it 'is invalid without an expire date' do it { is_expected.to validate_presence_of(:expires_at) }
poll.valid?
expect(poll).to model_have_error_on_field(:expires_at)
end
end end
end end
end end

View file

@ -32,11 +32,7 @@ RSpec.describe User do
end end
describe 'validations' do describe 'validations' do
it 'is invalid without an account' do it { is_expected.to belong_to(:account).required }
user = Fabricate.build(:user, account: nil)
user.valid?
expect(user).to model_have_error_on_field(:account)
end
it 'is invalid without a valid email' do it 'is invalid without a valid email' do
user = Fabricate.build(:user, email: 'john@') user = Fabricate.build(:user, email: 'john@')

View file

@ -4,37 +4,10 @@ require 'rails_helper'
RSpec.describe WebauthnCredential do RSpec.describe WebauthnCredential do
describe 'validations' do describe 'validations' do
it 'is invalid without an external id' do it { is_expected.to validate_presence_of(:external_id) }
webauthn_credential = Fabricate.build(:webauthn_credential, external_id: nil) it { is_expected.to validate_presence_of(:public_key) }
it { is_expected.to validate_presence_of(:nickname) }
webauthn_credential.valid? it { is_expected.to validate_presence_of(:sign_count) }
expect(webauthn_credential).to model_have_error_on_field(:external_id)
end
it 'is invalid without a public key' do
webauthn_credential = Fabricate.build(:webauthn_credential, public_key: nil)
webauthn_credential.valid?
expect(webauthn_credential).to model_have_error_on_field(:public_key)
end
it 'is invalid without a nickname' do
webauthn_credential = Fabricate.build(:webauthn_credential, nickname: nil)
webauthn_credential.valid?
expect(webauthn_credential).to model_have_error_on_field(:nickname)
end
it 'is invalid without a sign_count' do
webauthn_credential = Fabricate.build(:webauthn_credential, sign_count: nil)
webauthn_credential.valid?
expect(webauthn_credential).to model_have_error_on_field(:sign_count)
end
it 'is invalid if already exist a webauthn credential with the same external id' do it 'is invalid if already exist a webauthn credential with the same external id' do
Fabricate(:webauthn_credential, external_id: '_Typ0ygudDnk9YUVWLQayw') Fabricate(:webauthn_credential, external_id: '_Typ0ygudDnk9YUVWLQayw')

View file

@ -6,12 +6,7 @@ RSpec.describe Webhook do
let(:webhook) { Fabricate(:webhook) } let(:webhook) { Fabricate(:webhook) }
describe 'Validations' do describe 'Validations' do
it 'requires presence of events' do it { is_expected.to validate_presence_of(:events) }
record = described_class.new(events: nil)
record.valid?
expect(record).to model_have_error_on_field(:events)
end
it 'requires non-empty events value' do it 'requires non-empty events value' do
record = described_class.new(events: []) record = described_class.new(events: [])