tech(review): quelques améliorations de style

This commit is contained in:
Martin 2023-11-16 14:12:18 +01:00 committed by mfo
parent e99f9b5c17
commit 3a9b520a93
2 changed files with 15 additions and 15 deletions

View file

@ -3,9 +3,9 @@ class Expired::UsersDeletionService < Expired::MailRateLimiter
# we are working on two dataset because we apply two incompatible join on the same query # we are working on two dataset because we apply two incompatible join on the same query
# inner join on users not having dossier.en_instruction [so we do not destroy users with dossiers.en_instruction] # inner join on users not having dossier.en_instruction [so we do not destroy users with dossiers.en_instruction]
# outer join on users not having dossier at all [so we destroy users without dossiers] # outer join on users not having dossier at all [so we destroy users without dossiers]
[expiring_users_without_dossiers, expiring_users_with_dossiers].each do |expiring_segment| [expired_users_without_dossiers, expired_users_with_dossiers].each do |expired_segment|
delete_expired_users(expiring_segment) delete_notified_users(expired_segment)
send_inactive_close_to_expiration_notice(expiring_segment) send_inactive_close_to_expiration_notice(expired_segment)
end end
end end
@ -20,8 +20,8 @@ class Expired::UsersDeletionService < Expired::MailRateLimiter
end end
end end
def delete_expired_users(users) def delete_notified_users(users)
to_delete_only(users).find_each do |user| only_notified(users).find_each do |user|
begin begin
user.delete_and_keep_track_dossiers_also_delete_user(nil) user.delete_and_keep_track_dossiers_also_delete_user(nil)
rescue => e rescue => e
@ -31,11 +31,11 @@ class Expired::UsersDeletionService < Expired::MailRateLimiter
end end
# rubocop:disable DS/Unscoped # rubocop:disable DS/Unscoped
def expiring_users_with_dossiers def expired_users_with_dossiers
users = User.arel_table users = User.arel_table
dossiers = Dossier.arel_table dossiers = Dossier.arel_table
expiring_users expired_users
.joins( .joins(
users.join(dossiers, Arel::Nodes::InnerJoin) users.join(dossiers, Arel::Nodes::InnerJoin)
.on(users[:id].eq(dossiers[:user_id]) .on(users[:id].eq(dossiers[:user_id])
@ -44,11 +44,11 @@ class Expired::UsersDeletionService < Expired::MailRateLimiter
) )
end end
def expiring_users_without_dossiers def expired_users_without_dossiers
expiring_users.where.missing(:dossiers) expired_users.where.missing(:dossiers)
end end
def expiring_users def expired_users
User.unscoped User.unscoped
.where.missing(:expert, :instructeur, :administrateur) .where.missing(:expert, :instructeur, :administrateur)
.where(last_sign_in_at: ..Expired::INACTIVE_USER_RETATION_IN_YEAR.years.ago) .where(last_sign_in_at: ..Expired::INACTIVE_USER_RETATION_IN_YEAR.years.ago)
@ -60,7 +60,7 @@ class Expired::UsersDeletionService < Expired::MailRateLimiter
.limit(daily_limit) # ensure to not send too much email .limit(daily_limit) # ensure to not send too much email
end end
def to_delete_only(users) def only_notified(users)
users.where.not(inactive_close_to_expiration_notice_sent_at: Expired::REMAINING_WEEKS_BEFORE_EXPIRATION.weeks.ago..) users.where.not(inactive_close_to_expiration_notice_sent_at: Expired::REMAINING_WEEKS_BEFORE_EXPIRATION.weeks.ago..)
.limit(daily_limit) # event if we do not send email, avoid to destroy 800k user in one batch .limit(daily_limit) # event if we do not send email, avoid to destroy 800k user in one batch
end end

View file

@ -114,9 +114,9 @@ describe Expired::UsersDeletionService do
end end
end end
describe '#expiring_users_without_dossiers' do describe '#expired_users_without_dossiers' do
let(:dossier) { nil } let(:dossier) { nil }
subject { Expired::UsersDeletionService.new.send(:expiring_users_without_dossiers) } subject { Expired::UsersDeletionService.new.send(:expired_users_without_dossiers) }
context 'when user last_sign_in_at is 1 year ago and has no dossier' do context 'when user last_sign_in_at is 1 year ago and has no dossier' do
let(:user) { create(:user, last_sign_in_at: last_signed_in_not_expired) } let(:user) { create(:user, last_sign_in_at: last_signed_in_not_expired) }
@ -150,10 +150,10 @@ describe Expired::UsersDeletionService do
end end
end end
describe '#expiring_users_with_dossiers' do describe '#expired_users_with_dossiers' do
let(:user) { create(:user, last_sign_in_at: last_signed_in_expired) } let(:user) { create(:user, last_sign_in_at: last_signed_in_expired) }
let(:dossier) { create(:dossier, :brouillon, user:, created_at: last_signed_in_expired) } let(:dossier) { create(:dossier, :brouillon, user:, created_at: last_signed_in_expired) }
subject { Expired::UsersDeletionService.new.send(:expiring_users_with_dossiers) } subject { Expired::UsersDeletionService.new.send(:expired_users_with_dossiers) }
context 'when user is not expired' do context 'when user is not expired' do
let(:user) { create(:user, last_sign_in_at: last_signed_in_not_expired) } let(:user) { create(:user, last_sign_in_at: last_signed_in_not_expired) }