Reputation: 9185
How can I check the content of a bounced email?
require "rails_helper"
RSpec.describe EventsMailbox do
it "requires a current user" do
expect(mail_processed).to have_bounced
# here I would like to check the content of the bounced email
end
def mail
Mail.new(
from: "[email protected]",
subject: "Some subject",
body: "Some body"
)
end
def mail_processed
@mail_processed ||= process(mail)
end
end
Upvotes: 1
Views: 178
Reputation: 9185
Here is how I did it, the key was that perform_enqueued_jobs
that allows emails to be retrieved from ActionMailer::Base.deliveries
:
require "rails_helper"
RSpec.describe EventsMailbox do
include ActiveJob::TestHelper
around(:each) { |example| perform_enqueued_jobs { example.run } }
it "requires a current user", focus: true do
expect(mail_processed).to have_bounced
expect(last_delivery.from).to eq(["[email protected]"])
expect(last_delivery.to).to eq(["[email protected]"])
expect(last_delivery_text).to(
include("You need to be registered on Socializus")
)
end
def mail
Mail.new(
from: "[email protected]",
to: "[email protected]",
subject: "Some subject",
body: "Some body"
)
end
def mail_processed
@mail_processed ||= process(mail)
end
def last_delivery
ActionMailer::Base.deliveries.last
end
def last_delivery_text
return unless last_delivery
text_part = last_delivery.parts.detect { _1.mime_type == "text/plain" }
return unless text_part
text_part.body.to_s
end
end
Upvotes: 0