From 04b6e57abe30ffce93771bce80cb61a050afb54b Mon Sep 17 00:00:00 2001 From: Mohamed Said Date: Wed, 2 Jun 2021 12:33:52 +0200 Subject: [PATCH 1/3] allow setting middleware on queued mailables --- src/Illuminate/Mail/Mailable.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/Illuminate/Mail/Mailable.php b/src/Illuminate/Mail/Mailable.php index de319fa78dcd..d5769b03680f 100644 --- a/src/Illuminate/Mail/Mailable.php +++ b/src/Illuminate/Mail/Mailable.php @@ -234,7 +234,13 @@ public function later($delay, Queue $queue) */ protected function newQueuedJob() { - return new SendQueuedMailable($this); + return (new SendQueuedMailable($this)) + ->through( + array_merge( + method_exists($this, 'middleware') ? $this->middleware() : [], + $this->middleware ?? [] + ) + ); } /** From 21ab614f011babdb05434e682ac9ad2ec5ff5e2c Mon Sep 17 00:00:00 2001 From: Mohamed Said Date: Wed, 2 Jun 2021 12:39:03 +0200 Subject: [PATCH 2/3] add tests --- .../Mail/SendingQueuedMailTest.php | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 tests/Integration/Mail/SendingQueuedMailTest.php diff --git a/tests/Integration/Mail/SendingQueuedMailTest.php b/tests/Integration/Mail/SendingQueuedMailTest.php new file mode 100644 index 000000000000..74c131b4393c --- /dev/null +++ b/tests/Integration/Mail/SendingQueuedMailTest.php @@ -0,0 +1,59 @@ +set('mail.driver', 'array'); + + View::addLocation(__DIR__.'/Fixtures'); + } + + public function testMailIsSentWithDefaultLocale() + { + Queue::fake(); + + Mail::to('test@mail.com')->queue(new SendingQueuedMailTestMail); + + Queue::assertPushed(SendQueuedMailable::class, function($job){ + return $job->middleware[0] instanceof RateLimited; + }); + } +} + +class SendingQueuedMailTestMail extends Mailable +{ + /** + * Build the message. + * + * @return $this + */ + public function build() + { + return $this->view('view'); + } + + public function middleware() + { + return [new RateLimited('limiter')]; + } +} From 6d7a20982394f1792349b0f01d56debd66011d7d Mon Sep 17 00:00:00 2001 From: Mohamed Said Date: Wed, 2 Jun 2021 12:40:26 +0200 Subject: [PATCH 3/3] fix style --- tests/Integration/Mail/SendingQueuedMailTest.php | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/tests/Integration/Mail/SendingQueuedMailTest.php b/tests/Integration/Mail/SendingQueuedMailTest.php index 74c131b4393c..cc9df314a4fa 100644 --- a/tests/Integration/Mail/SendingQueuedMailTest.php +++ b/tests/Integration/Mail/SendingQueuedMailTest.php @@ -2,18 +2,12 @@ namespace Illuminate\Tests\Integration\Mail; -use Illuminate\Contracts\Translation\HasLocalePreference; -use Illuminate\Database\Eloquent\Model; -use Illuminate\Foundation\Events\LocaleUpdated; use Illuminate\Mail\Mailable; use Illuminate\Mail\SendQueuedMailable; use Illuminate\Queue\Middleware\RateLimited; -use Illuminate\Support\Carbon; -use Illuminate\Support\Facades\Event; use Illuminate\Support\Facades\Mail; use Illuminate\Support\Facades\Queue; use Illuminate\Support\Facades\View; -use Illuminate\Testing\Assert; use Orchestra\Testbench\TestCase; /** @@ -34,7 +28,7 @@ public function testMailIsSentWithDefaultLocale() Mail::to('test@mail.com')->queue(new SendingQueuedMailTestMail); - Queue::assertPushed(SendQueuedMailable::class, function($job){ + Queue::assertPushed(SendQueuedMailable::class, function ($job) { return $job->middleware[0] instanceof RateLimited; }); }