/
githubmirror
/
framework
Обзор
Документация
Войти
/
githubmirror
/
framework
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
13.x
tests/Mail/AttachableTest.php
172 строки
5 KB
Ahmed Alaa
Add missing void return type to test methods (#56860)
02 сен 2025, 01:45
Не верифицирован
02 сен 2025, 01:45
c0bae54
Код
Авторство
О чём код?
<?php namespace Illuminate\Tests\Mail; use Illuminate\Contracts\Mail\Attachable; use Illuminate\Http\Testing\File; use Illuminate\Mail\Attachment; use Illuminate\Mail\Mailable; use PHPUnit\Framework\TestCase; class AttachableTest extends TestCase { public function testItCanHaveMacroConstructors(): void { Attachment::macro('fromInvoice', function ($name) { return Attachment::fromData(fn () => 'pdf content', $name); }); $mailable = new Mailable; $mailable->attach(new class() implements Attachable { public function toMailAttachment() { return Attachment::fromInvoice('foo') ->as('bar') ->withMime('image/jpeg'); } }); $this->assertSame([ 'data' => 'pdf content', 'name' => 'bar', 'options' => [ 'mime' => 'image/jpeg', ], ], $mailable->rawAttachments[0]); } public function testItCanUtiliseExistingApisOnNonMailBasedResourcesWithPath(): void { Attachment::macro('size', function () { return 99; }); $notification = new class() { public $pathArgs; public function withPathAttachment() { $this->pathArgs = func_get_args(); } }; $attachable = new class() implements Attachable { public function toMailAttachment() { return Attachment::fromPath('foo.jpg') ->as('bar') ->withMime('text/css'); } }; $attachable->toMailAttachment()->attachWith( fn ($path, $attachment) => $notification->withPathAttachment($path, $attachment->as, $attachment->mime, $attachment->size()), fn () => null ); $this->assertSame([ 'foo.jpg', 'bar', 'text/css', 99, ], $notification->pathArgs); } public function testItCanUtiliseExistingApisOnNonMailBasedResourcesWithArgs(): void { Attachment::macro('size', function () { return 99; }); $notification = new class() { public $pathArgs; public $dataArgs; public function withDataAttachment() { $this->dataArgs = func_get_args(); } }; $attachable = new class() implements Attachable { public function toMailAttachment() { return Attachment::fromData(fn () => 'expected attachment body', 'bar') ->withMime('text/css'); } }; $attachable->toMailAttachment()->attachWith( fn () => null, fn ($data, $attachment) => $notification->withDataAttachment($data(), $attachment->as, $attachment->mime, $attachment->size()), ); $this->assertSame([ 'expected attachment body', 'bar', 'text/css', 99, ], $notification->dataArgs); } public function testFromUrlMethod(): void { $mailable = new class extends Mailable { public function build() { $this->attach(new class implements Attachable { public function toMailAttachment() { return Attachment::fromUrl('https://example.com/file.pdf') ->as('example.pdf') ->withMime('application/pdf'); } }); } }; $mailable->build(); $this->assertSame([ 'file' => 'https://example.com/file.pdf', 'options' => [ 'as' => 'example.pdf', 'mime' => 'application/pdf', ], ], $mailable->attachments[0]); } public function testFromUploadedFileMethod(): void { $mailable = new class extends Mailable { public function build() { $this->attach(new class implements Attachable { public function toMailAttachment() { return Attachment::fromUploadedFile( File::createWithContent('example.pdf', 'content') ->mimeType('application/pdf') ); } }); } }; $mailable->build(); $this->assertSame([ 'data' => 'content', 'name' => 'example.pdf', 'options' => [ 'mime' => 'application/pdf', ], ], $mailable->rawAttachments[0]); } }