mirror of
https://github.com/discourse/discourse.git
synced 2025-02-20 17:52:45 +08:00
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:
parent
8de40e3908
commit
d903d4dc5a
11
app/jobs/scheduled/clean_up_email_change_requests.rb
Normal file
11
app/jobs/scheduled/clean_up_email_change_requests.rb
Normal 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
|
16
spec/jobs/clean_up_email_change_requests_spec.rb
Normal file
16
spec/jobs/clean_up_email_change_requests_spec.rb
Normal 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
|
Loading…
x
Reference in New Issue
Block a user