diff --git a/app/models/account.rb b/app/models/account.rb index 6258857b1b..05e833d575 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -126,6 +126,8 @@ class Account < ApplicationRecord validates :uri, absence: true end + validates :domain, exclusion: { in: [''] } + normalizes :username, with: ->(username) { username.squish } scope :without_internal, -> { where(id: 1...) } @@ -187,7 +189,7 @@ class Account < ApplicationRecord end def remote? - domain.present? + !domain.nil? end def moved? diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb index 5b995b4af6..a0187b6211 100644 --- a/spec/models/account_spec.rb +++ b/spec/models/account_spec.rb @@ -49,14 +49,16 @@ RSpec.describe Account do end describe '#local?' do - it 'returns true when domain is null' do - account = Fabricate(:account, domain: nil) - expect(account).to be_local + context 'when the domain is null' do + subject { Fabricate.build :account, domain: nil } + + it { is_expected.to be_local } end - it 'returns false when domain is present' do - account = Fabricate(:account, domain: 'foreign.tld') - expect(account).to_not be_local + context 'when the domain is present' do + subject { Fabricate.build :account, domain: 'host.example' } + + it { is_expected.to_not be_local } end end @@ -67,12 +69,6 @@ RSpec.describe Account do it { is_expected.to_not be_remote } end - context 'when the domain is blank' do - subject { Fabricate.build :account, domain: '' } - - it { is_expected.to_not be_remote } - end - context 'when the domain is present' do subject { Fabricate.build :account, domain: 'host.example' } @@ -557,6 +553,8 @@ RSpec.describe Account do describe 'Validations' do it { is_expected.to validate_presence_of(:username) } + it { is_expected.to_not allow_value('').for(:domain) } + context 'when account is local' do subject { Fabricate.build :account, domain: nil } diff --git a/spec/services/import_service_spec.rb b/spec/services/import_service_spec.rb index 0a99c5e748..2e1358c635 100644 --- a/spec/services/import_service_spec.rb +++ b/spec/services/import_service_spec.rb @@ -204,7 +204,7 @@ RSpec.describe ImportService, :inline_jobs do subject { described_class.new } let(:csv) { attachment_fixture('bookmark-imports.txt') } - let(:local_account) { Fabricate(:account, username: 'foo', domain: '') } + let(:local_account) { Fabricate(:account, username: 'foo', domain: nil) } let!(:remote_status) { Fabricate(:status, uri: 'https://example.com/statuses/1312') } let!(:direct_status) { Fabricate(:status, uri: 'https://example.com/statuses/direct', visibility: :direct) }