diff --git a/app/models/account.rb b/app/models/account.rb index 007fad7830..206529301e 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -90,6 +90,7 @@ class Account < ApplicationRecord include Account::Interactions include Account::Merging include Account::Search + include Account::Sensitizes include Account::Silences include Account::StatusesSearch include Account::Suspensions @@ -130,7 +131,6 @@ class Account < ApplicationRecord scope :remote, -> { where.not(domain: nil) } scope :local, -> { where(domain: nil) } scope :partitioned, -> { order(Arel.sql('row_number() over (partition by domain)')) } - scope :sensitized, -> { where.not(sensitized_at: nil) } scope :without_instance_actor, -> { where.not(id: INSTANCE_ACTOR_ID) } scope :recent, -> { reorder(id: :desc) } scope :bots, -> { where(actor_type: AUTOMATED_ACTOR_TYPES) } @@ -243,18 +243,6 @@ class Account < ApplicationRecord ResolveAccountService.new.call(acct) unless local? end - def sensitized? - sensitized_at.present? - end - - def sensitize!(date = Time.now.utc) - update!(sensitized_at: date) - end - - def unsensitize! - update!(sensitized_at: nil) - end - def memorialize! update!(memorial: true) end diff --git a/app/models/concerns/account/sensitizes.rb b/app/models/concerns/account/sensitizes.rb new file mode 100644 index 0000000000..3bb74324a8 --- /dev/null +++ b/app/models/concerns/account/sensitizes.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +module Account::Sensitizes + extend ActiveSupport::Concern + + included do + scope :sensitized, -> { where.not(sensitized_at: nil) } + end + + def sensitized? + sensitized_at.present? + end + + def sensitize!(date = Time.now.utc) + update!(sensitized_at: date) + end + + def unsensitize! + update!(sensitized_at: nil) + end +end diff --git a/spec/models/concerns/account/sensitizes_spec.rb b/spec/models/concerns/account/sensitizes_spec.rb new file mode 100644 index 0000000000..3596c9a126 --- /dev/null +++ b/spec/models/concerns/account/sensitizes_spec.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe Account::Sensitizes do + describe 'Scopes' do + describe '.sensitized' do + let(:sensitized_account) { Fabricate :account, sensitized_at: 2.days.ago } + + before { Fabricate :account, sensitized_at: false } + + it 'returns an array of accounts who are sensitized' do + expect(Account.sensitized) + .to contain_exactly(sensitized_account) + end + end + end +end