diff options
author | David Heinemeier Hansson <david@loudthinking.com> | 2017-01-28 11:20:46 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-01-28 11:20:46 +0100 |
commit | 1cec84ad2ddd843484ed40b1eb7492063ce71baf (patch) | |
tree | 888dd547e0d204f1a280217424162293042feff3 /actionmailer/test | |
parent | 05112b21310c3ea04026176a5f7ca11040454ac1 (diff) | |
download | rails-1cec84ad2ddd843484ed40b1eb7492063ce71baf.tar.gz rails-1cec84ad2ddd843484ed40b1eb7492063ce71baf.tar.bz2 rails-1cec84ad2ddd843484ed40b1eb7492063ce71baf.zip |
Offer the option to use parameterization for shared processing of headers and ivars (#27825)
Offer the option to use parameterization for shared processing of headers and ivars
Diffstat (limited to 'actionmailer/test')
-rw-r--r-- | actionmailer/test/mailers/params_mailer.rb | 11 | ||||
-rw-r--r-- | actionmailer/test/parameterized_test.rb | 44 |
2 files changed, 55 insertions, 0 deletions
diff --git a/actionmailer/test/mailers/params_mailer.rb b/actionmailer/test/mailers/params_mailer.rb new file mode 100644 index 0000000000..4c0fae6d91 --- /dev/null +++ b/actionmailer/test/mailers/params_mailer.rb @@ -0,0 +1,11 @@ +class ParamsMailer < ActionMailer::Base + before_action { @inviter, @invitee = params[:inviter], params[:invitee] } + + default to: Proc.new { @invitee }, from: -> { @inviter } + + def invitation + mail(subject: "Welcome to the project!") do |format| + format.text { render plain: "So says #{@inviter}" } + end + end +end diff --git a/actionmailer/test/parameterized_test.rb b/actionmailer/test/parameterized_test.rb new file mode 100644 index 0000000000..47cfe6d712 --- /dev/null +++ b/actionmailer/test/parameterized_test.rb @@ -0,0 +1,44 @@ +require "abstract_unit" +require "active_job" +require "mailers/params_mailer" + +class ParameterizedTest < ActiveSupport::TestCase + include ActiveJob::TestHelper + + setup do + @previous_logger = ActiveJob::Base.logger + ActiveJob::Base.logger = Logger.new(nil) + + @original_delivery_method = ActionMailer::Base.delivery_method + ActionMailer::Base.delivery_method = :test + + @previous_delivery_method = ActionMailer::Base.delivery_method + @previous_deliver_later_queue_name = ActionMailer::Base.deliver_later_queue_name + ActionMailer::Base.deliver_later_queue_name = :test_queue + ActionMailer::Base.delivery_method = :test + + @mail = ParamsMailer.with(inviter: "david@basecamp.com", invitee: "jason@basecamp.com").invitation + end + + teardown do + ActiveJob::Base.logger = @previous_logger + ParamsMailer.deliveries.clear + + ActionMailer::Base.delivery_method = @original_delivery_method + + ActionMailer::Base.delivery_method = @previous_delivery_method + ActionMailer::Base.deliver_later_queue_name = @previous_deliver_later_queue_name + end + + test "parameterized headers" do + assert_equal(["jason@basecamp.com"], @mail.to) + assert_equal(["david@basecamp.com"], @mail.from) + assert_equal("So says david@basecamp.com", @mail.body.encoded) + end + + test "should enqueue the email with params" do + assert_performed_with(job: ActionMailer::Parameterized::DeliveryJob, args: ["ParamsMailer", "invitation", "deliver_now", { inviter: "david@basecamp.com", invitee: "jason@basecamp.com" } ]) do + @mail.deliver_later + end + end +end |