Browse Source

Handle nil and blank cases in Account finders (#3500)

closed-social-glitch-2
Matt Jankowski 7 years ago
committed by GitHub
parent
commit
d1e08bd38c
2 changed files with 23 additions and 3 deletions
  1. +7
    -3
      app/models/concerns/account_finder_concern.rb
  2. +16
    -0
      spec/models/concerns/account_finder_concern_spec.rb

+ 7
- 3
app/models/concerns/account_finder_concern.rb View File

@ -37,21 +37,25 @@ module AccountFinderConcern
def scoped_accounts
Account.unscoped.tap do |scope|
scope.merge! with_usernames
scope.merge! matching_username
scope.merge! matching_domain
end
end
def with_usernames
Account.where.not(username: [nil, ''])
end
def matching_username
raise(ActiveRecord::RecordNotFound) if username.blank?
Account.where(Account.arel_table[:username].lower.eq username.downcase)
Account.where(Account.arel_table[:username].lower.eq username.to_s.downcase)
end
def matching_domain
if domain.nil?
Account.where(domain: nil)
else
Account.where(Account.arel_table[:domain].lower.eq domain.downcase)
Account.where(Account.arel_table[:domain].lower.eq domain.to_s.downcase)
end
end
end

+ 16
- 0
spec/models/concerns/account_finder_concern_spec.rb View File

@ -24,6 +24,14 @@ describe AccountFinderConcern do
it 'returns nil for regex style username value' do
expect(Account.find_local('al%')).to be_nil
end
it 'returns nil for nil username value' do
expect(Account.find_local(nil)).to be_nil
end
it 'returns nil for blank username value' do
expect(Account.find_local('')).to be_nil
end
end
describe '.find_local!' do
@ -70,6 +78,14 @@ describe AccountFinderConcern do
it 'returns nil for regex style domain value' do
expect(Account.find_remote('alice', 'm%')).to be_nil
end
it 'returns nil for nil username value' do
expect(Account.find_remote(nil, 'domain')).to be_nil
end
it 'returns nil for blank username value' do
expect(Account.find_remote('', 'domain')).to be_nil
end
end
describe '.find_remote!' do

Loading…
Cancel
Save