You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
1.7 KiB
60 lines
1.7 KiB
# frozen_string_literal: true |
|
|
|
require 'rails_helper' |
|
|
|
describe Scheduler::SelfDestructScheduler do |
|
let(:worker) { described_class.new } |
|
|
|
describe '#perform' do |
|
let!(:account) { Fabricate(:account, domain: nil, suspended_at: nil) } |
|
|
|
context 'when not in self destruct mode' do |
|
before do |
|
allow(SelfDestructHelper).to receive(:self_destruct?).and_return(false) |
|
end |
|
|
|
it 'returns without processing' do |
|
worker.perform |
|
|
|
expect(account.reload.suspended_at).to be_nil |
|
end |
|
end |
|
|
|
context 'when in self-destruct mode' do |
|
before do |
|
allow(SelfDestructHelper).to receive(:self_destruct?).and_return(true) |
|
end |
|
|
|
context 'when sidekiq is overwhelmed' do |
|
before do |
|
stats = instance_double(Sidekiq::Stats, enqueued: described_class::MAX_ENQUEUED**2) |
|
allow(Sidekiq::Stats).to receive(:new).and_return(stats) |
|
end |
|
|
|
it 'returns without processing' do |
|
worker.perform |
|
|
|
expect(account.reload.suspended_at).to be_nil |
|
end |
|
end |
|
|
|
context 'when sidekiq is operational' do |
|
it 'suspends local non-suspended accounts' do |
|
worker.perform |
|
|
|
expect(account.reload.suspended_at).to_not be_nil |
|
end |
|
|
|
it 'suspends local suspended accounts marked for deletion' do |
|
account.update(suspended_at: 10.days.ago) |
|
deletion_request = Fabricate(:account_deletion_request, account: account) |
|
|
|
worker.perform |
|
|
|
expect(account.reload.suspended_at).to be > 1.day.ago |
|
expect { deletion_request.reload }.to raise_error(ActiveRecord::RecordNotFound) |
|
end |
|
end |
|
end |
|
end |
|
end
|
|
|