[Fix #1454] Send weekly overview emails async, overview param is not correctly serialized by activejob so it is computed again when email is send

This commit is contained in:
Mathieu Magnin 2018-02-21 17:40:41 +01:00
parent adffe1cd05
commit 0c6aa42f55
4 changed files with 7 additions and 6 deletions

View file

@ -523,7 +523,7 @@ Performance/FlatMap:
Enabled: true
Performance/HashEachMethods:
Enabled: true
Enabled: false
Performance/LstripRstrip:
Enabled: true

View file

@ -7,7 +7,7 @@ class WeeklyOverviewJob < ApplicationJob
Gestionnaire.all
.map { |gestionnaire| [gestionnaire, gestionnaire.last_week_overview] }
.reject { |_, overview| overview.nil? }
.each { |gestionnaire, overview| GestionnaireMailer.last_week_overview(gestionnaire, overview).deliver_now }
.each { |gestionnaire, _| GestionnaireMailer.last_week_overview(gestionnaire).deliver_later }
end
end
end

View file

@ -5,8 +5,9 @@ class GestionnaireMailer < ApplicationMailer
send_mail email, password, "Vous avez été nommé accompagnateur sur la plateforme TPS"
end
def last_week_overview(gestionnaire, overview)
def last_week_overview(gestionnaire)
headers['X-mailjet-campaign'] = 'last_week_overview'
overview = gestionnaire.last_week_overview
send_mail gestionnaire.email, overview, 'Vos activités sur TPS'
end

View file

@ -4,7 +4,7 @@ RSpec.describe WeeklyOverviewJob, type: :job do
describe 'perform' do
let!(:gestionnaire) { create(:gestionnaire) }
let(:overview) { double('overview') }
let(:mailer_double) { double('mailer', deliver_now: true) }
let(:mailer_double) { double('mailer', deliver_later: true) }
context 'if the feature is enabled' do
before { allow(Features).to receive(:weekly_overview).and_return(true) }
@ -16,8 +16,8 @@ RSpec.describe WeeklyOverviewJob, type: :job do
WeeklyOverviewJob.new.perform
end
it { expect(GestionnaireMailer).to have_received(:last_week_overview).with(gestionnaire, overview) }
it { expect(mailer_double).to have_received(:deliver_now) }
it { expect(GestionnaireMailer).to have_received(:last_week_overview).with(gestionnaire) }
it { expect(mailer_double).to have_received(:deliver_later) }
end
context 'with one gestionnaire with no overviews' do