|
2 | 2 |
|
3 | 3 | require "abstract_unit"
|
4 | 4 | require "active_job"
|
| 5 | +require "mailers/base_mailer" |
5 | 6 | require "mailers/delayed_mailer"
|
| 7 | +require "mailers/params_mailer" |
6 | 8 |
|
7 | 9 | class MessageDeliveryTest < ActiveSupport::TestCase
|
8 | 10 | include ActiveJob::TestHelper
|
@@ -136,6 +138,67 @@ class DummyJob < ActionMailer::MailDeliveryJob; end
|
136 | 138 | end
|
137 | 139 | end
|
138 | 140 |
|
| 141 | + test "deliver_all_later enqueues multiple deliveries" do |
| 142 | + mail1 = DelayedMailer.test_message(1) |
| 143 | + mail2 = DelayedMailer.test_kwargs(argument: 1) |
| 144 | + |
| 145 | + assert_performed_with(job: ActionMailer::MailDeliveryJob, args: ["DelayedMailer", "test_message", "deliver_now", params: nil, args: [1]]) do |
| 146 | + assert_performed_with(job: ActionMailer::MailDeliveryJob, args: ["DelayedMailer", "test_kwargs", "deliver_now", params: nil, args: [argument: 1]]) do |
| 147 | + ActionMailer.deliver_all_later(mail1, mail2) |
| 148 | + end |
| 149 | + end |
| 150 | + end |
| 151 | + |
| 152 | + test "deliver_all_later! enqueues multiple deliveries" do |
| 153 | + mail1 = DelayedMailer.test_message(1) |
| 154 | + mail2 = DelayedMailer.test_kwargs(argument: 1) |
| 155 | + |
| 156 | + assert_performed_with(job: ActionMailer::MailDeliveryJob, args: ["DelayedMailer", "test_message", "deliver_now!", params: nil, args: [1]]) do |
| 157 | + assert_performed_with(job: ActionMailer::MailDeliveryJob, args: ["DelayedMailer", "test_kwargs", "deliver_now!", params: nil, args: [argument: 1]]) do |
| 158 | + ActionMailer.deliver_all_later!(mail1, mail2) |
| 159 | + end |
| 160 | + end |
| 161 | + end |
| 162 | + |
| 163 | + test "deliver_all_later enqueues multiple deliveries with correct jobs" do |
| 164 | + old_delivery_job = BaseMailer.delivery_job |
| 165 | + BaseMailer.delivery_job = DummyJob |
| 166 | + |
| 167 | + mail1 = DelayedMailer.test_message |
| 168 | + mail2 = BaseMailer.welcome |
| 169 | + |
| 170 | + assert_performed_with(job: ActionMailer::MailDeliveryJob, args: ["DelayedMailer", "test_message", "deliver_now", params: nil, args: []]) do |
| 171 | + assert_performed_with(job: DummyJob, args: ["BaseMailer", "welcome", "deliver_now", params: nil, args: []]) do |
| 172 | + ActionMailer.deliver_all_later(mail1, mail2) |
| 173 | + end |
| 174 | + end |
| 175 | + ensure |
| 176 | + BaseMailer.delivery_job = old_delivery_job |
| 177 | + end |
| 178 | + |
| 179 | + test "deliver_all_later enqueues multiple deliveries with custom options" do |
| 180 | + mail1 = DelayedMailer.test_message(1) |
| 181 | + mail2 = DelayedMailer.test_message(2) |
| 182 | + |
| 183 | + assert_performed_with(job: ActionMailer::MailDeliveryJob, args: ["DelayedMailer", "test_message", "deliver_now", params: nil, args: [1]], queue: "another_queue") do |
| 184 | + assert_performed_with(job: ActionMailer::MailDeliveryJob, args: ["DelayedMailer", "test_message", "deliver_now", params: nil, args: [2]], queue: "another_queue") do |
| 185 | + ActionMailer.deliver_all_later(mail1, mail2, queue: :another_queue) |
| 186 | + end |
| 187 | + end |
| 188 | + end |
| 189 | + |
| 190 | + test "deliver_all_later enqueues parameterized emails" do |
| 191 | + mail1 = DelayedMailer.test_message(1) |
| 192 | + mail2 = ParamsMailer.with(inviter: "[email protected]", invitee: "[email protected]").invitation |
| 193 | + |
| 194 | + assert_performed_with(job: ActionMailer::MailDeliveryJob, args: ["DelayedMailer", "test_message", "deliver_now", params: nil, args: [1]]) do |
| 195 | + assert_performed_with(job: ActionMailer::MailDeliveryJob, |
| 196 | + args: ["ParamsMailer", "invitation", "deliver_now", args: [], params: { inviter: "[email protected]", invitee: "[email protected]" }]) do |
| 197 | + ActionMailer.deliver_all_later(mail1, mail2) |
| 198 | + end |
| 199 | + end |
| 200 | + end |
| 201 | + |
139 | 202 | test "job delegates error handling to mailer" do
|
140 | 203 | # Superclass not rescued by mailer's rescue_from RuntimeError
|
141 | 204 | message = DelayedMailer.test_raise("StandardError")
|
|
0 commit comments