Merge pull request #9617 from mfo/US/move_low_priority_email_in_low_priority_queue

amelioration(email): passe les jobs non prioritaire [appelons ça des bulk email], dans la queue de low_priority
This commit is contained in:
mfo 2023-10-19 03:25:57 +00:00 committed by GitHub
commit 5ad724a4cb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
26 changed files with 190 additions and 35 deletions

View file

@ -1,32 +1,57 @@
RSpec.describe AdministrateurMailer, type: :mailer do
let(:procedure) { create(:procedure) }
let(:admin_email) { 'administrateur@email.fr' }
describe '.notify_procedure_expires_when_termine_forced' do
subject { described_class.notify_procedure_expires_when_termine_forced(admin_email, procedure) }
it { expect(subject.to).to eq([admin_email]) }
it { expect(subject.subject).to include("La suppression automatique des dossiers a été activée sur la démarche") }
context 'when perform_later is called' do
let(:custom_queue) { 'low_priority' }
before { ENV['BULK_EMAIL_QUEUE'] = custom_queue }
it 'enqueues email is custom queue for low priority delivery' do
expect { subject.deliver_later }.to have_enqueued_job.on_queue(custom_queue)
end
end
end
describe '.activate_before_expiration' do
let(:user) { create(:user, reset_password_sent_at: 2.days.ago) }
let(:token) { SecureRandom.hex }
subject { described_class.activate_before_expiration(user, token) }
context 'without SafeMailer configured' do
subject { described_class.activate_before_expiration(user, token) }
it { expect(subject[BalancerDeliveryMethod::FORCE_DELIVERY_METHOD_HEADER]&.value).to eq(nil) }
end
context 'with SafeMailer configured' do
let(:forced_delivery_method) { :kikoo }
before { allow(SafeMailer).to receive(:forced_delivery_method).and_return(forced_delivery_method) }
subject { described_class.activate_before_expiration(user, token) }
it { expect(subject[BalancerDeliveryMethod::FORCE_DELIVERY_METHOD_HEADER]&.value).to eq(forced_delivery_method.to_s) }
end
context 'when perform_later is called' do
it 'enqueues email in default queue for high priority delivery' do
expect { subject.deliver_later }.to have_enqueued_job.on_queue(Rails.application.config.action_mailer.deliver_later_queue_name)
end
end
end
describe '.notify_service_without_siret' do
subject { described_class.notify_service_without_siret(admin_email) }
it { expect(subject.to).to eq([admin_email]) }
it { expect(subject.subject).to eq("Siret manquant sur un de vos services") }
it { expect(subject.body).to include("un de vos services n'a pas son siret renseigné") }
context 'when perform_later is called' do
let(:custom_queue) { 'low_priority' }
before { ENV['BULK_EMAIL_QUEUE'] = custom_queue }
it 'enqueues email is custom queue for low priority delivery' do
expect { subject.deliver_later }.to have_enqueued_job.on_queue(custom_queue)
end
end
end
end

View file

@ -2,15 +2,22 @@ RSpec.describe DeviseUserMailer, type: :mailer do
let(:user) { create(:user) }
let(:token) { SecureRandom.hex }
describe '.confirmation_instructions' do
subject { described_class.confirmation_instructions(user, token, opts = {}) }
context 'without SafeMailer configured' do
subject { described_class.confirmation_instructions(user, token, opts = {}) }
it { expect(subject[BalancerDeliveryMethod::FORCE_DELIVERY_METHOD_HEADER]&.value).to eq(nil) }
end
context 'with SafeMailer configured' do
let(:forced_delivery_method) { :kikoo }
before { allow(SafeMailer).to receive(:forced_delivery_method).and_return(forced_delivery_method) }
subject { described_class.confirmation_instructions(user, token, opts = {}) }
it { expect(subject[BalancerDeliveryMethod::FORCE_DELIVERY_METHOD_HEADER]&.value).to eq(forced_delivery_method.to_s) }
end
context 'when perform_later is called' do
it 'enqueues email in default queue for high priority delivery' do
expect { subject.deliver_later }.to have_enqueued_job.on_queue(Rails.application.config.action_mailer.deliver_later_queue_name)
end
end
end
end

View file

@ -3,27 +3,40 @@ RSpec.describe InstructeurMailer, type: :mailer do
let(:sender) { create(:instructeur) }
let(:recipient) { create(:instructeur) }
let(:dossier) { create(:dossier) }
subject { described_class.send_dossier(sender, dossier, recipient) }
it { expect(subject.body).to include('Bonjour') }
context 'when perform_later is called' do
let(:custom_queue) { 'low_priority' }
before { ENV['BULK_EMAIL_QUEUE'] = custom_queue }
it 'enqueues email is custom queue for low priority delivery' do
expect { subject.deliver_later }.to have_enqueued_job.on_queue(custom_queue)
end
end
end
describe '#send_login_token' do
let(:user) { create(:instructeur) }
let(:token) { SecureRandom.hex }
subject { described_class.send_login_token(user, token) }
context 'without SafeMailer configured' do
subject { described_class.send_login_token(user, token) }
it { expect(subject[BalancerDeliveryMethod::FORCE_DELIVERY_METHOD_HEADER]&.value).to eq(nil) }
end
context 'with SafeMailer configured' do
let(:forced_delivery_method) { :kikoo }
before { allow(SafeMailer).to receive(:forced_delivery_method).and_return(forced_delivery_method) }
subject { described_class.send_login_token(user, token) }
it { expect(subject[BalancerDeliveryMethod::FORCE_DELIVERY_METHOD_HEADER]&.value).to eq(forced_delivery_method.to_s) }
end
context 'when perform_later is called' do
it 'enqueues email in default queue for high priority delivery' do
expect { subject.deliver_later }.to have_enqueued_job.on_queue(Rails.application.config.action_mailer.deliver_later_queue_name)
end
end
end
describe '#last_week_overview' do
@ -62,5 +75,14 @@ RSpec.describe InstructeurMailer, type: :mailer do
expect(subject.body).to be_blank
end
end
context 'when perform_later is called' do
let(:custom_queue) { 'low_priority' }
before { ENV['BULK_EMAIL_QUEUE'] = custom_queue }
it 'enqueues email is custom queue for low priority delivery' do
expect { subject.deliver_later }.to have_enqueued_job.on_queue(custom_queue)
end
end
end
end

View file

@ -1,9 +1,8 @@
RSpec.describe InviteMailer, type: :mailer do
let(:deliver) { mailer.deliver_now }
let(:deliver) { subject.deliver_now }
subject { InviteMailer.invite_user(invite) }
describe '.invite_user' do
let(:mailer) { InviteMailer.invite_user(invite) }
let(:invite) { create(:invite, user: create(:user)) }
it 'creates a target_user_link' do
expect { deliver }
@ -20,29 +19,34 @@ RSpec.describe InviteMailer, type: :mailer do
end
begin
mailer.body
subject.body
rescue => e
nil
end
mailer.body
subject.body
expect(TargetedUserLink.where(target_model: invite, user: invite.user).count).to eq(1)
end
end
context 'without SafeMailer configured' do
it { expect(mailer[BalancerDeliveryMethod::FORCE_DELIVERY_METHOD_HEADER]&.value).to eq(nil) }
it { expect(subject[BalancerDeliveryMethod::FORCE_DELIVERY_METHOD_HEADER]&.value).to eq(nil) }
end
context 'with SafeMailer configured' do
let(:forced_delivery_method) { :kikoo }
before { allow(SafeMailer).to receive(:forced_delivery_method).and_return(forced_delivery_method) }
it { expect(mailer[BalancerDeliveryMethod::FORCE_DELIVERY_METHOD_HEADER]&.value).to eq(forced_delivery_method.to_s) }
it { expect(subject[BalancerDeliveryMethod::FORCE_DELIVERY_METHOD_HEADER]&.value).to eq(forced_delivery_method.to_s) }
end
context 'when perform_later is called' do
it 'enqueues email in default queue for high priority delivery' do
expect { invite }.to have_enqueued_job.on_queue(Rails.application.config.action_mailer.deliver_later_queue_name)
end
end
end
describe '.invite_guest' do
let(:mailer) { InviteMailer.invite_guest(invite) }
let(:invite) { create(:invite, user: nil, email: 'kikoo@lol.fr') }
it 'creates a target_user_link' do
@ -69,14 +73,20 @@ RSpec.describe InviteMailer, type: :mailer do
end
begin
mailer.body
subject.body
rescue => e
nil
end
mailer.body
subject.body
expect(TargetedUserLink.where(target_model: invite, user: invite.user).count).to eq(1)
end
end
context 'when perform_later is called' do
it 'enqueues email in default queue for high priority delivery' do
expect { invite }.to have_enqueued_job.on_queue(Rails.application.config.action_mailer.deliver_later_queue_name)
end
end
end
end

View file

@ -1,5 +1,5 @@
RSpec.describe UserMailer, type: :mailer do
let(:user) { build(:user) }
let(:user) { create(:user) }
describe '.new_account_warning' do
subject { described_class.new_account_warning(user) }
@ -25,6 +25,12 @@ RSpec.describe UserMailer, type: :mailer do
before { allow(SafeMailer).to receive(:forced_delivery_method).and_return(forced_delivery_method) }
it { expect(subject[BalancerDeliveryMethod::FORCE_DELIVERY_METHOD_HEADER]&.value).to eq(forced_delivery_method.to_s) }
end
context 'when perform_later is called' do
it 'enqueues email in default queue for high priority delivery' do
expect { subject.deliver_later }.to have_enqueued_job.on_queue(Rails.application.config.action_mailer.deliver_later_queue_name)
end
end
end
describe '.ask_for_merge' do
@ -44,6 +50,12 @@ RSpec.describe UserMailer, type: :mailer do
before { allow(SafeMailer).to receive(:forced_delivery_method).and_return(forced_delivery_method) }
it { expect(subject[BalancerDeliveryMethod::FORCE_DELIVERY_METHOD_HEADER]&.value).to eq(forced_delivery_method.to_s) }
end
context 'when perform_later is called' do
it 'enqueues email in default queue for high priority delivery' do
expect { subject.deliver_later }.to have_enqueued_job.on_queue(Rails.application.config.action_mailer.deliver_later_queue_name)
end
end
end
describe '.france_connect_merge_confirmation' do
@ -64,6 +76,12 @@ RSpec.describe UserMailer, type: :mailer do
before { allow(SafeMailer).to receive(:forced_delivery_method).and_return(forced_delivery_method) }
it { expect(subject[BalancerDeliveryMethod::FORCE_DELIVERY_METHOD_HEADER]&.value).to eq(forced_delivery_method.to_s) }
end
context 'when perform_later is called' do
it 'enqueues email in default queue for high priority delivery' do
expect { subject.deliver_later }.to have_enqueued_job.on_queue(Rails.application.config.action_mailer.deliver_later_queue_name)
end
end
end
describe '.send_archive' do
@ -84,5 +102,14 @@ RSpec.describe UserMailer, type: :mailer do
it { expect(subject.body).to have_link('Consulter mes archives', href: admin_procedure_archives_url(procedure)) }
it { expect(subject.body).to have_link("#{procedure.id} #{procedure.libelle}", href: admin_procedure_url(procedure)) }
end
context 'when perform_later is called' do
let(:role) { create(:administrateur) }
let(:custom_queue) { 'low_priority' }
before { ENV['BULK_EMAIL_QUEUE'] = custom_queue }
it 'enqueues email is custom queue for low priority delivery' do
expect { subject.deliver_later }.to have_enqueued_job.on_queue(custom_queue)
end
end
end
end