DEV: Periodically delete old email change requests (#13054)

Email change requests are never deleted no matter if they completed
successfully or not. The abandoned requests have the disadvantage of
showing up as unconfirmed emails in user's preferences page.
This commit is contained in:
Dan Ungureanu 2021-05-14 10:34:56 +03:00 committed by GitHub
parent 8de40e3908
commit d903d4dc5a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 27 additions and 0 deletions

View File

@ -0,0 +1,11 @@
# frozen_string_literal: true
module Jobs
class CleanUpEmailChangeRequests < ::Jobs::Scheduled
every 1.day
def execute(args)
EmailChangeRequest.where('updated_at < ?', 1.month.ago).delete_all
end
end
end

View File

@ -0,0 +1,16 @@
# frozen_string_literal: true
require 'rails_helper'
describe Jobs::CleanUpEmailChangeRequests do
it "deletes records older than 1 month" do
very_old = Fabricate(:email_change_request, updated_at: 32.days.ago)
yesterday = Fabricate(:email_change_request, updated_at: 1.day.ago)
today = Fabricate(:email_change_request, updated_at: Time.zone.now)
expect { described_class.new.execute({}) }.to change { EmailChangeRequest.count }.by(-1)
expect { very_old.reload }.to raise_error(ActiveRecord::RecordNotFound)
expect(yesterday.reload).to be_present
expect(today.reload).to be_present
end
end