Don’t use alias_method_chain, use a proxy method

This commit is contained in:
gregoirenovel 2017-05-27 01:08:01 +02:00
parent bc7fc2634e
commit ec69086ebc
7 changed files with 38 additions and 41 deletions

View file

@ -19,11 +19,11 @@ class Admin::MailTemplatesController < AdminController
def mail_templates def mail_templates
[ [
@procedure.initiated_mail, @procedure.initiated_mail_template,
@procedure.received_mail, @procedure.received_mail_template,
@procedure.closed_mail, @procedure.closed_mail_template,
@procedure.refused_mail, @procedure.refused_mail_template,
@procedure.without_continuation_mail @procedure.without_continuation_mail_template
] ]
end end

View file

@ -99,7 +99,7 @@ class Backoffice::DossiersController < Backoffice::DossiersListController
dossier.received! dossier.received!
flash.notice = 'Dossier considéré comme reçu.' flash.notice = 'Dossier considéré comme reçu.'
NotificationMailer.send_notification(dossier, dossier.procedure.received_mail).deliver_now! NotificationMailer.send_notification(dossier, dossier.procedure.received_mail_template).deliver_now!
redirect_to backoffice_dossier_path(id: dossier.id) redirect_to backoffice_dossier_path(id: dossier.id)
end end
@ -112,7 +112,7 @@ class Backoffice::DossiersController < Backoffice::DossiersListController
dossier.next_step! 'gestionnaire', 'refuse' dossier.next_step! 'gestionnaire', 'refuse'
flash.notice = 'Dossier considéré comme refusé.' flash.notice = 'Dossier considéré comme refusé.'
NotificationMailer.send_notification(dossier, dossier.procedure.refused_mail).deliver_now! NotificationMailer.send_notification(dossier, dossier.procedure.refused_mail_template).deliver_now!
redirect_to backoffice_dossier_path(id: dossier.id) redirect_to backoffice_dossier_path(id: dossier.id)
end end
@ -125,7 +125,7 @@ class Backoffice::DossiersController < Backoffice::DossiersListController
dossier.next_step! 'gestionnaire', 'without_continuation' dossier.next_step! 'gestionnaire', 'without_continuation'
flash.notice = 'Dossier considéré comme sans suite.' flash.notice = 'Dossier considéré comme sans suite.'
NotificationMailer.send_notification(dossier, dossier.procedure.without_continuation_mail).deliver_now! NotificationMailer.send_notification(dossier, dossier.procedure.without_continuation_mail_template).deliver_now!
redirect_to backoffice_dossier_path(id: dossier.id) redirect_to backoffice_dossier_path(id: dossier.id)
end end
@ -138,7 +138,7 @@ class Backoffice::DossiersController < Backoffice::DossiersListController
dossier.next_step! 'gestionnaire', 'close' dossier.next_step! 'gestionnaire', 'close'
flash.notice = 'Dossier traité avec succès.' flash.notice = 'Dossier traité avec succès.'
NotificationMailer.send_notification(dossier, dossier.procedure.closed_mail).deliver_now! NotificationMailer.send_notification(dossier, dossier.procedure.closed_mail_template).deliver_now!
redirect_to backoffice_dossier_path(id: dossier.id) redirect_to backoffice_dossier_path(id: dossier.id)
end end

View file

@ -52,7 +52,7 @@ class Users::DescriptionController < UsersController
else else
if dossier.draft? if dossier.draft?
dossier.initiated! dossier.initiated!
NotificationMailer.send_notification(dossier, procedure.initiated_mail).deliver_now! NotificationMailer.send_notification(dossier, procedure.initiated_mail_template).deliver_now!
end end
flash.notice = 'Félicitations, votre demande a bien été enregistrée.' flash.notice = 'Félicitations, votre demande a bien été enregistrée.'
redirect_to url_for(controller: :recapitulatif, action: :show, dossier_id: dossier.id) redirect_to url_for(controller: :recapitulatif, action: :show, dossier_id: dossier.id)

View file

@ -99,11 +99,11 @@ class Procedure < ActiveRecord::Base
procedure.logo_secure_token = nil procedure.logo_secure_token = nil
procedure.remote_logo_url = self.logo_url procedure.remote_logo_url = self.logo_url
procedure.initiated_mail = initiated_mail_without_override.try(:dup) procedure.initiated_mail = initiated_mail.try(:dup)
procedure.received_mail = received_mail_without_override.try(:dup) procedure.received_mail = received_mail.try(:dup)
procedure.closed_mail = closed_mail_without_override.try(:dup) procedure.closed_mail = closed_mail.try(:dup)
procedure.refused_mail = refused_mail_without_override.try(:dup) procedure.refused_mail = refused_mail.try(:dup)
procedure.without_continuation_mail = without_continuation_mail_without_override.try(:dup) procedure.without_continuation_mail = without_continuation_mail.try(:dup)
return procedure if procedure.save return procedure if procedure.save
end end
@ -137,28 +137,23 @@ class Procedure < ActiveRecord::Base
ProcedureOverview.new(self, start_date, notifications_count) ProcedureOverview.new(self, start_date, notifications_count)
end end
def initiated_mail_with_override def initiated_mail_template
self.initiated_mail_without_override || Mails::InitiatedMail.default initiated_mail || Mails::InitiatedMail.default
end end
alias_method_chain "initiated_mail", :override
def received_mail_with_override def received_mail_template
self.received_mail_without_override || Mails::ReceivedMail.default received_mail || Mails::ReceivedMail.default
end end
alias_method_chain "received_mail", :override
def closed_mail_with_override def closed_mail_template
self.closed_mail_without_override || Mails::ClosedMail.default closed_mail || Mails::ClosedMail.default
end end
alias_method_chain "closed_mail", :override
def refused_mail_with_override def refused_mail_template
self.refused_mail_without_override || Mails::RefusedMail.default refused_mail || Mails::RefusedMail.default
end end
alias_method_chain "refused_mail", :override
def without_continuation_mail_with_override def without_continuation_mail_template
self.without_continuation_mail_without_override || Mails::WithoutContinuationMail.default without_continuation_mail || Mails::WithoutContinuationMail.default
end end
alias_method_chain "without_continuation_mail", :override
end end

View file

@ -33,7 +33,7 @@ describe Admin::MailTemplatesController, type: :controller do
it { expect(response).to redirect_to admin_procedure_mail_templates_path(procedure) } it { expect(response).to redirect_to admin_procedure_mail_templates_path(procedure) }
context 'the mail template' do context 'the mail template' do
subject { procedure.reload ; procedure.initiated_mail } subject { procedure.reload ; procedure.initiated_mail_template }
it { expect(subject.object).to eq(object) } it { expect(subject.object).to eq(object) }
it { expect(subject.body).to eq(body) } it { expect(subject.body).to eq(body) }

View file

@ -1,7 +1,7 @@
class NotificationMailerPreview < ActionMailer::Preview class NotificationMailerPreview < ActionMailer::Preview
def send_notification def send_notification
NotificationMailer.send_notification(Dossier.last, Dossier.last.procedure.initiated_mail) NotificationMailer.send_notification(Dossier.last, Dossier.last.procedure.initiated_mail_template)
end end
end end

View file

@ -2,18 +2,20 @@ require 'spec_helper'
describe Procedure do describe Procedure do
describe 'mail templates' do describe 'mail templates' do
it { expect(subject.initiated_mail).to be_a(Mails::InitiatedMail) } subject { create(:procedure) }
it { expect(subject.received_mail).to be_a(Mails::ReceivedMail) }
it { expect(subject.closed_mail).to be_a(Mails::ClosedMail) } it { expect(subject.initiated_mail_template).to be_a(Mails::InitiatedMail) }
it { expect(subject.refused_mail).to be_a(Mails::RefusedMail) } it { expect(subject.received_mail_template).to be_a(Mails::ReceivedMail) }
it { expect(subject.without_continuation_mail).to be_a(Mails::WithoutContinuationMail) } it { expect(subject.closed_mail_template).to be_a(Mails::ClosedMail) }
it { expect(subject.refused_mail_template).to be_a(Mails::RefusedMail) }
it { expect(subject.without_continuation_mail_template).to be_a(Mails::WithoutContinuationMail) }
end end
describe 'initiated_mail' do describe 'initiated_mail' do
subject { create(:procedure) } subject { create(:procedure) }
context 'when initiated_mail is not customize' do context 'when initiated_mail is not customize' do
it { expect(subject.initiated_mail.body).to eq(Mails::InitiatedMail.default.body) } it { expect(subject.initiated_mail_template.body).to eq(Mails::InitiatedMail.default.body) }
end end
context 'when initiated_mail is customize' do context 'when initiated_mail is customize' do
@ -22,7 +24,7 @@ describe Procedure do
subject.save subject.save
subject.reload subject.reload
end end
it { expect(subject.initiated_mail.body).to eq('sisi') } it { expect(subject.initiated_mail_template.body).to eq('sisi') }
end end
context 'when initiated_mail is customize ... again' do context 'when initiated_mail is customize ... again' do
@ -31,7 +33,7 @@ describe Procedure do
subject.save subject.save
subject.reload subject.reload
end end
it { expect(subject.initiated_mail.body).to eq('toto') } it { expect(subject.initiated_mail_template.body).to eq('toto') }
it { expect(Mails::InitiatedMail.count).to eq(1) } it { expect(Mails::InitiatedMail.count).to eq(1) }
end end
@ -185,7 +187,7 @@ describe Procedure do
end end
it 'should not duplicate default mail_template' do it 'should not duplicate default mail_template' do
expect(subject.initiated_mail.attributes).to eq Mails::InitiatedMail.default.attributes expect(subject.initiated_mail_template.attributes).to eq Mails::InitiatedMail.default.attributes
end end
it 'should not duplicate specific related objects' do it 'should not duplicate specific related objects' do