mirror of
https://github.com/mastodon/mastodon.git
synced 2024-12-22 18:45:41 +01:00
Move account silence-related methods to concern (#28866)
This commit is contained in:
parent
157fba4698
commit
d033920b7e
4 changed files with 41 additions and 22 deletions
|
@ -90,6 +90,7 @@ class Account < ApplicationRecord
|
||||||
include Account::Interactions
|
include Account::Interactions
|
||||||
include Account::Merging
|
include Account::Merging
|
||||||
include Account::Search
|
include Account::Search
|
||||||
|
include Account::Silences
|
||||||
include Account::StatusesSearch
|
include Account::StatusesSearch
|
||||||
include Account::Suspensions
|
include Account::Suspensions
|
||||||
include Account::AttributionDomains
|
include Account::AttributionDomains
|
||||||
|
@ -129,9 +130,7 @@ class Account < ApplicationRecord
|
||||||
scope :remote, -> { where.not(domain: nil) }
|
scope :remote, -> { where.not(domain: nil) }
|
||||||
scope :local, -> { where(domain: nil) }
|
scope :local, -> { where(domain: nil) }
|
||||||
scope :partitioned, -> { order(Arel.sql('row_number() over (partition by domain)')) }
|
scope :partitioned, -> { order(Arel.sql('row_number() over (partition by domain)')) }
|
||||||
scope :silenced, -> { where.not(silenced_at: nil) }
|
|
||||||
scope :sensitized, -> { where.not(sensitized_at: nil) }
|
scope :sensitized, -> { where.not(sensitized_at: nil) }
|
||||||
scope :without_silenced, -> { where(silenced_at: nil) }
|
|
||||||
scope :without_instance_actor, -> { where.not(id: INSTANCE_ACTOR_ID) }
|
scope :without_instance_actor, -> { where.not(id: INSTANCE_ACTOR_ID) }
|
||||||
scope :recent, -> { reorder(id: :desc) }
|
scope :recent, -> { reorder(id: :desc) }
|
||||||
scope :bots, -> { where(actor_type: AUTOMATED_ACTOR_TYPES) }
|
scope :bots, -> { where(actor_type: AUTOMATED_ACTOR_TYPES) }
|
||||||
|
@ -244,18 +243,6 @@ class Account < ApplicationRecord
|
||||||
ResolveAccountService.new.call(acct) unless local?
|
ResolveAccountService.new.call(acct) unless local?
|
||||||
end
|
end
|
||||||
|
|
||||||
def silenced?
|
|
||||||
silenced_at.present?
|
|
||||||
end
|
|
||||||
|
|
||||||
def silence!(date = Time.now.utc)
|
|
||||||
update!(silenced_at: date)
|
|
||||||
end
|
|
||||||
|
|
||||||
def unsilence!
|
|
||||||
update!(silenced_at: nil)
|
|
||||||
end
|
|
||||||
|
|
||||||
def sensitized?
|
def sensitized?
|
||||||
sensitized_at.present?
|
sensitized_at.present?
|
||||||
end
|
end
|
||||||
|
|
22
app/models/concerns/account/silences.rb
Normal file
22
app/models/concerns/account/silences.rb
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module Account::Silences
|
||||||
|
extend ActiveSupport::Concern
|
||||||
|
|
||||||
|
included do
|
||||||
|
scope :silenced, -> { where.not(silenced_at: nil) }
|
||||||
|
scope :without_silenced, -> { where(silenced_at: nil) }
|
||||||
|
end
|
||||||
|
|
||||||
|
def silenced?
|
||||||
|
silenced_at.present?
|
||||||
|
end
|
||||||
|
|
||||||
|
def silence!(date = Time.now.utc)
|
||||||
|
update!(silenced_at: date)
|
||||||
|
end
|
||||||
|
|
||||||
|
def unsilence!
|
||||||
|
update!(silenced_at: nil)
|
||||||
|
end
|
||||||
|
end
|
|
@ -983,14 +983,6 @@ RSpec.describe Account do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe 'silenced' do
|
|
||||||
it 'returns an array of accounts who are silenced' do
|
|
||||||
silenced_account = Fabricate(:account, silenced: true)
|
|
||||||
_account = Fabricate(:account, silenced: false)
|
|
||||||
expect(described_class.silenced).to contain_exactly(silenced_account)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
describe 'searchable' do
|
describe 'searchable' do
|
||||||
let!(:suspended_local) { Fabricate(:account, suspended: true, username: 'suspended_local') }
|
let!(:suspended_local) { Fabricate(:account, suspended: true, username: 'suspended_local') }
|
||||||
let!(:suspended_remote) { Fabricate(:account, suspended: true, domain: 'example.org', username: 'suspended_remote') }
|
let!(:suspended_remote) { Fabricate(:account, suspended: true, domain: 'example.org', username: 'suspended_remote') }
|
||||||
|
|
18
spec/models/concerns/account/silences_spec.rb
Normal file
18
spec/models/concerns/account/silences_spec.rb
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
RSpec.describe Account::Silences do
|
||||||
|
describe 'Scopes' do
|
||||||
|
describe '.silenced' do
|
||||||
|
let(:silenced_account) { Fabricate :account, silenced: true }
|
||||||
|
|
||||||
|
before { Fabricate :account, silenced: false }
|
||||||
|
|
||||||
|
it 'returns an array of accounts who are silenced' do
|
||||||
|
expect(Account.silenced)
|
||||||
|
.to contain_exactly(silenced_account)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in a new issue