Skip to content

Commit 3d7aa14

Browse files
committed
Add EmailDelivery concern and test
This adds an additional method to the MemberMailer class. It's currently called #chaser and it sends...the chaser email. In the next commit I'll call it from a Job, or maybe a Service that's called from a Job Signed-off-by: jonathan.kerr <3410350+jonodrew@users.noreply.github.com>
1 parent 0084c1b commit 3d7aa14

File tree

4 files changed

+50
-0
lines changed

4 files changed

+50
-0
lines changed
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
module EmailDelivery
2+
extend ActiveSupport::Concern
3+
4+
private
5+
6+
def log_sent_email
7+
member = params[:member]
8+
return unless member
9+
10+
MemberEmailDelivery.create!(
11+
member: member,
12+
subject: mail.subject,
13+
body: mail.body.to_s,
14+
to: mail.to,
15+
cc: mail.cc,
16+
bcc: mail.bcc
17+
)
18+
end
19+
end

app/mailers/member_mailer.rb

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,16 @@
11
class MemberMailer < ApplicationMailer
22
include EmailHeaderHelper
3+
include EmailDelivery
4+
5+
after_action :log_sent_email, only: [:chaser]
6+
7+
def chaser
8+
@member = params[:member]
9+
subject = "It’s been a while, how are you doing? ♥️"
10+
mail mail_args(@member, subject, 'hello@codebar.io', 'hello@codebar.io') do |format|
11+
format.html {render 'three_month_chaser'}
12+
end
13+
end
314

415
def welcome(member)
516
if member.student?
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
class MemberEmailDelivery < ApplicationRecord
2+
belongs_to :member, polymorphic: true, optional: true
3+
end

spec/mailers/member_mailer_spec.rb

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,4 +115,21 @@
115115
end.to change { ActionMailer::Base.deliveries.count }.by 1
116116
end
117117
end
118+
119+
describe "#chaser" do
120+
it "logs the sent email" do
121+
expect do
122+
MemberMailer
123+
.with(member: member)
124+
.chaser
125+
.deliver_now
126+
end.to change(MemberEmailDelivery, :count).by(1)
127+
128+
log = MemberEmailDelivery.last
129+
130+
expect(log.member).to eq(member)
131+
expect(log.subject).to eq("It’s been a while, how are you doing? ♥️")
132+
expect(log.to).to eq([member.email])
133+
end
134+
end
118135
end

0 commit comments

Comments
 (0)