Last active
June 24, 2022 11:58
-
-
Save abarrak/99773e1bf295f927a52f5493c7742854 to your computer and use it in GitHub Desktop.
Perform Enqueued Mail Job in Rails Tests
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Extend in your test_helper.rb or any other `/supprot` setup you have. | |
class ActiveSupport::TestCase | |
## | |
# === NOTICE: | |
# Ensure you have `ActionMailer::TestHelper` in the test class .. | |
# | |
# This method performs any enqueued job during tests manually, | |
# Helpful when testing the queueing of your jobs then the result of their execution. | |
# | |
# === Author: (abarrak) | |
# | |
# === returns: the result of the job execution. | |
# | |
# === example: (integration test for ActiveJob/ActionMailer) | |
# | |
# test "my action mailer" do | |
# post signup_url, params: @valid_params | |
# | |
# # .. other assertions .. | |
# | |
# assert_enqueued_jobs 1 | |
# assert_enqueued_emails 1 | |
# assert_no_emails | |
# assert_empty ActionMailer::Base.deliveries | |
# | |
# perform_lastest_mail_job | |
# | |
# assert_emails 1 | |
# assert_not_empty ActionMailer::Base.deliveries | |
# mail = ActionMailer::Base.deliveries.last | |
# assert_not_nil mail | |
# assert_equal mail.to, [user.email] | |
# assert_equal mail.from, ["no-replay@example.com"] | |
# # .... | |
# end | |
# | |
# ==== | |
def perform_lastest_mail_job | |
last_job = enqueued_jobs.first[:args] | |
gid = last_job.pop['_aj_globalid'] | |
last_job << GlobalID::Locator.locate(gid) | |
perform_enqueued_jobs { ActionMailer::DeliveryJob.perform_now(*last_job) } | |
end | |
end | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Links