Expand spec coverage and refactor the Account.find_
methods (#3485)
* Move specs for account finder methods to concern spec * Move account finder methods to concern * Improve spec wording * Use more explicit comparison to ensure correct return value * Add coverage for .find_local! and .find_remote! * Add some methods to the finder * Use arel on matching_username method * Avoid ternary in matching domain method * Simplify finder methods * Use an AccountFinder class to simplify lookup
This commit is contained in:
parent
bf811e4d4a
commit
2cc3111a77
4 changed files with 152 additions and 69 deletions
|
@ -42,6 +42,7 @@ class Account < ApplicationRecord
|
|||
MENTION_RE = /(?:^|[^\/[:word:]])@([a-z0-9_]+(?:@[a-z0-9\.\-]+[a-z0-9]+)?)/i
|
||||
|
||||
include AccountAvatar
|
||||
include AccountFinderConcern
|
||||
include AccountHeader
|
||||
include AccountInteractions
|
||||
include Attachmentable
|
||||
|
@ -162,27 +163,6 @@ class Account < ApplicationRecord
|
|||
end
|
||||
|
||||
class << self
|
||||
def find_local!(username)
|
||||
find_remote!(username, nil)
|
||||
end
|
||||
|
||||
def find_remote!(username, domain)
|
||||
raise ActiveRecord::RecordNotFound if username.blank?
|
||||
where('lower(accounts.username) = ?', username.downcase).where(domain.nil? ? { domain: nil } : 'lower(accounts.domain) = ?', domain&.downcase).take!
|
||||
end
|
||||
|
||||
def find_local(username)
|
||||
find_local!(username)
|
||||
rescue ActiveRecord::RecordNotFound
|
||||
nil
|
||||
end
|
||||
|
||||
def find_remote(username, domain)
|
||||
find_remote!(username, domain)
|
||||
rescue ActiveRecord::RecordNotFound
|
||||
nil
|
||||
end
|
||||
|
||||
def triadic_closures(account, limit: 5, offset: 0)
|
||||
sql = <<-SQL.squish
|
||||
WITH first_degree AS (
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue