123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444 |
- <?php
- namespace Illuminate\Tests\Mail;
- use Illuminate\Mail\Mailable;
- use PHPUnit\Framework\TestCase;
- class MailMailableTest extends TestCase
- {
- public function testMailableSetsRecipientsCorrectly()
- {
- $mailable = new WelcomeMailableStub;
- $mailable->to('taylor@laravel.com');
- $this->assertEquals([['name' => null, 'address' => 'taylor@laravel.com']], $mailable->to);
- $this->assertTrue($mailable->hasTo('taylor@laravel.com'));
- $mailable = new WelcomeMailableStub;
- $mailable->to('taylor@laravel.com', 'Taylor Otwell');
- $this->assertEquals([['name' => 'Taylor Otwell', 'address' => 'taylor@laravel.com']], $mailable->to);
- $this->assertTrue($mailable->hasTo('taylor@laravel.com', 'Taylor Otwell'));
- $this->assertTrue($mailable->hasTo('taylor@laravel.com'));
- $mailable = new WelcomeMailableStub;
- $mailable->to(['taylor@laravel.com']);
- $this->assertEquals([['name' => null, 'address' => 'taylor@laravel.com']], $mailable->to);
- $this->assertTrue($mailable->hasTo('taylor@laravel.com'));
- $this->assertFalse($mailable->hasTo('taylor@laravel.com', 'Taylor Otwell'));
- $mailable = new WelcomeMailableStub;
- $mailable->to([['name' => 'Taylor Otwell', 'email' => 'taylor@laravel.com']]);
- $this->assertEquals([['name' => 'Taylor Otwell', 'address' => 'taylor@laravel.com']], $mailable->to);
- $this->assertTrue($mailable->hasTo('taylor@laravel.com', 'Taylor Otwell'));
- $this->assertTrue($mailable->hasTo('taylor@laravel.com'));
- $mailable = new WelcomeMailableStub;
- $mailable->to(new MailableTestUserStub);
- $this->assertEquals([['name' => 'Taylor Otwell', 'address' => 'taylor@laravel.com']], $mailable->to);
- $this->assertTrue($mailable->hasTo(new MailableTestUserStub));
- $this->assertTrue($mailable->hasTo('taylor@laravel.com'));
- $mailable = new WelcomeMailableStub;
- $mailable->to(collect([new MailableTestUserStub]));
- $this->assertEquals([['name' => 'Taylor Otwell', 'address' => 'taylor@laravel.com']], $mailable->to);
- $this->assertTrue($mailable->hasTo(new MailableTestUserStub));
- $this->assertTrue($mailable->hasTo('taylor@laravel.com'));
- $mailable = new WelcomeMailableStub;
- $mailable->to(collect([new MailableTestUserStub, new MailableTestUserStub]));
- $this->assertEquals([
- ['name' => 'Taylor Otwell', 'address' => 'taylor@laravel.com'],
- ['name' => 'Taylor Otwell', 'address' => 'taylor@laravel.com'],
- ], $mailable->to);
- $this->assertTrue($mailable->hasTo(new MailableTestUserStub));
- $this->assertTrue($mailable->hasTo('taylor@laravel.com'));
- foreach (['', null, [], false] as $address) {
- $mailable = new WelcomeMailableStub;
- $mailable->to($address);
- $this->assertFalse($mailable->hasTo(new MailableTestUserStub));
- $this->assertFalse($mailable->hasTo($address));
- }
- }
- public function testMailableSetsCcRecipientsCorrectly()
- {
- $mailable = new WelcomeMailableStub;
- $mailable->cc('taylor@laravel.com');
- $this->assertEquals([['name' => null, 'address' => 'taylor@laravel.com']], $mailable->cc);
- $this->assertTrue($mailable->hasCc('taylor@laravel.com'));
- $mailable = new WelcomeMailableStub;
- $mailable->cc('taylor@laravel.com', 'Taylor Otwell');
- $this->assertEquals([['name' => 'Taylor Otwell', 'address' => 'taylor@laravel.com']], $mailable->cc);
- $this->assertTrue($mailable->hasCc('taylor@laravel.com', 'Taylor Otwell'));
- $this->assertTrue($mailable->hasCc('taylor@laravel.com'));
- $mailable = new WelcomeMailableStub;
- $mailable->cc(['taylor@laravel.com']);
- $this->assertEquals([['name' => null, 'address' => 'taylor@laravel.com']], $mailable->cc);
- $this->assertTrue($mailable->hasCc('taylor@laravel.com'));
- $this->assertFalse($mailable->hasCc('taylor@laravel.com', 'Taylor Otwell'));
- $mailable = new WelcomeMailableStub;
- $mailable->cc([['name' => 'Taylor Otwell', 'email' => 'taylor@laravel.com']]);
- $this->assertEquals([['name' => 'Taylor Otwell', 'address' => 'taylor@laravel.com']], $mailable->cc);
- $this->assertTrue($mailable->hasCc('taylor@laravel.com', 'Taylor Otwell'));
- $this->assertTrue($mailable->hasCc('taylor@laravel.com'));
- $mailable = new WelcomeMailableStub;
- $mailable->cc(new MailableTestUserStub);
- $this->assertEquals([['name' => 'Taylor Otwell', 'address' => 'taylor@laravel.com']], $mailable->cc);
- $this->assertTrue($mailable->hasCc(new MailableTestUserStub));
- $this->assertTrue($mailable->hasCc('taylor@laravel.com'));
- $mailable = new WelcomeMailableStub;
- $mailable->cc(collect([new MailableTestUserStub]));
- $this->assertEquals([['name' => 'Taylor Otwell', 'address' => 'taylor@laravel.com']], $mailable->cc);
- $this->assertTrue($mailable->hasCc(new MailableTestUserStub));
- $this->assertTrue($mailable->hasCc('taylor@laravel.com'));
- $mailable = new WelcomeMailableStub;
- $mailable->cc(collect([new MailableTestUserStub, new MailableTestUserStub]));
- $this->assertEquals([
- ['name' => 'Taylor Otwell', 'address' => 'taylor@laravel.com'],
- ['name' => 'Taylor Otwell', 'address' => 'taylor@laravel.com'],
- ], $mailable->cc);
- $this->assertTrue($mailable->hasCc(new MailableTestUserStub));
- $this->assertTrue($mailable->hasCc('taylor@laravel.com'));
- $mailable = new WelcomeMailableStub;
- $mailable->cc(['taylor@laravel.com', 'not-taylor@laravel.com']);
- $this->assertEquals([
- ['name' => null, 'address' => 'taylor@laravel.com'],
- ['name' => null, 'address' => 'not-taylor@laravel.com'],
- ], $mailable->cc);
- $this->assertTrue($mailable->hasCc('taylor@laravel.com'));
- $this->assertTrue($mailable->hasCc('not-taylor@laravel.com'));
- foreach (['', null, [], false] as $address) {
- $mailable = new WelcomeMailableStub;
- $mailable->cc($address);
- $this->assertFalse($mailable->hasCc(new MailableTestUserStub));
- $this->assertFalse($mailable->hasCc($address));
- }
- }
- public function testMailableSetsBccRecipientsCorrectly()
- {
- $mailable = new WelcomeMailableStub;
- $mailable->bcc('taylor@laravel.com');
- $this->assertEquals([['name' => null, 'address' => 'taylor@laravel.com']], $mailable->bcc);
- $this->assertTrue($mailable->hasBcc('taylor@laravel.com'));
- $mailable = new WelcomeMailableStub;
- $mailable->bcc('taylor@laravel.com', 'Taylor Otwell');
- $this->assertEquals([['name' => 'Taylor Otwell', 'address' => 'taylor@laravel.com']], $mailable->bcc);
- $this->assertTrue($mailable->hasBcc('taylor@laravel.com', 'Taylor Otwell'));
- $this->assertTrue($mailable->hasBcc('taylor@laravel.com'));
- $mailable = new WelcomeMailableStub;
- $mailable->bcc(['taylor@laravel.com']);
- $this->assertEquals([['name' => null, 'address' => 'taylor@laravel.com']], $mailable->bcc);
- $this->assertTrue($mailable->hasBcc('taylor@laravel.com'));
- $this->assertFalse($mailable->hasBcc('taylor@laravel.com', 'Taylor Otwell'));
- $mailable = new WelcomeMailableStub;
- $mailable->bcc([['name' => 'Taylor Otwell', 'email' => 'taylor@laravel.com']]);
- $this->assertEquals([['name' => 'Taylor Otwell', 'address' => 'taylor@laravel.com']], $mailable->bcc);
- $this->assertTrue($mailable->hasBcc('taylor@laravel.com', 'Taylor Otwell'));
- $this->assertTrue($mailable->hasBcc('taylor@laravel.com'));
- $mailable = new WelcomeMailableStub;
- $mailable->bcc(new MailableTestUserStub);
- $this->assertEquals([['name' => 'Taylor Otwell', 'address' => 'taylor@laravel.com']], $mailable->bcc);
- $this->assertTrue($mailable->hasBcc(new MailableTestUserStub));
- $this->assertTrue($mailable->hasBcc('taylor@laravel.com'));
- $mailable = new WelcomeMailableStub;
- $mailable->bcc(collect([new MailableTestUserStub]));
- $this->assertEquals([['name' => 'Taylor Otwell', 'address' => 'taylor@laravel.com']], $mailable->bcc);
- $this->assertTrue($mailable->hasBcc(new MailableTestUserStub));
- $this->assertTrue($mailable->hasBcc('taylor@laravel.com'));
- $mailable = new WelcomeMailableStub;
- $mailable->bcc(collect([new MailableTestUserStub, new MailableTestUserStub]));
- $this->assertEquals([
- ['name' => 'Taylor Otwell', 'address' => 'taylor@laravel.com'],
- ['name' => 'Taylor Otwell', 'address' => 'taylor@laravel.com'],
- ], $mailable->bcc);
- $this->assertTrue($mailable->hasBcc(new MailableTestUserStub));
- $this->assertTrue($mailable->hasBcc('taylor@laravel.com'));
- $mailable = new WelcomeMailableStub;
- $mailable->bcc(['taylor@laravel.com', 'not-taylor@laravel.com']);
- $this->assertEquals([
- ['name' => null, 'address' => 'taylor@laravel.com'],
- ['name' => null, 'address' => 'not-taylor@laravel.com'],
- ], $mailable->bcc);
- $this->assertTrue($mailable->hasBcc('taylor@laravel.com'));
- $this->assertTrue($mailable->hasBcc('not-taylor@laravel.com'));
- foreach (['', null, [], false] as $address) {
- $mailable = new WelcomeMailableStub;
- $mailable->bcc($address);
- $this->assertFalse($mailable->hasBcc(new MailableTestUserStub));
- $this->assertFalse($mailable->hasBcc($address));
- }
- }
- public function testMailableSetsReplyToCorrectly()
- {
- $mailable = new WelcomeMailableStub;
- $mailable->replyTo('taylor@laravel.com');
- $this->assertEquals([['name' => null, 'address' => 'taylor@laravel.com']], $mailable->replyTo);
- $this->assertTrue($mailable->hasReplyTo('taylor@laravel.com'));
- $mailable = new WelcomeMailableStub;
- $mailable->replyTo('taylor@laravel.com', 'Taylor Otwell');
- $this->assertEquals([['name' => 'Taylor Otwell', 'address' => 'taylor@laravel.com']], $mailable->replyTo);
- $this->assertTrue($mailable->hasReplyTo('taylor@laravel.com', 'Taylor Otwell'));
- $this->assertTrue($mailable->hasReplyTo('taylor@laravel.com'));
- $mailable = new WelcomeMailableStub;
- $mailable->replyTo(['taylor@laravel.com']);
- $this->assertEquals([['name' => null, 'address' => 'taylor@laravel.com']], $mailable->replyTo);
- $this->assertTrue($mailable->hasReplyTo('taylor@laravel.com'));
- $this->assertFalse($mailable->hasReplyTo('taylor@laravel.com', 'Taylor Otwell'));
- $mailable = new WelcomeMailableStub;
- $mailable->replyTo([['name' => 'Taylor Otwell', 'email' => 'taylor@laravel.com']]);
- $this->assertEquals([['name' => 'Taylor Otwell', 'address' => 'taylor@laravel.com']], $mailable->replyTo);
- $this->assertTrue($mailable->hasReplyTo('taylor@laravel.com', 'Taylor Otwell'));
- $this->assertTrue($mailable->hasReplyTo('taylor@laravel.com'));
- $mailable = new WelcomeMailableStub;
- $mailable->replyTo(new MailableTestUserStub);
- $this->assertEquals([['name' => 'Taylor Otwell', 'address' => 'taylor@laravel.com']], $mailable->replyTo);
- $this->assertTrue($mailable->hasReplyTo(new MailableTestUserStub));
- $this->assertTrue($mailable->hasReplyTo('taylor@laravel.com'));
- $mailable = new WelcomeMailableStub;
- $mailable->replyTo(collect([new MailableTestUserStub]));
- $this->assertEquals([['name' => 'Taylor Otwell', 'address' => 'taylor@laravel.com']], $mailable->replyTo);
- $this->assertTrue($mailable->hasReplyTo(new MailableTestUserStub));
- $this->assertTrue($mailable->hasReplyTo('taylor@laravel.com'));
- $mailable = new WelcomeMailableStub;
- $mailable->replyTo(collect([new MailableTestUserStub, new MailableTestUserStub]));
- $this->assertEquals([
- ['name' => 'Taylor Otwell', 'address' => 'taylor@laravel.com'],
- ['name' => 'Taylor Otwell', 'address' => 'taylor@laravel.com'],
- ], $mailable->replyTo);
- $this->assertTrue($mailable->hasReplyTo(new MailableTestUserStub));
- $this->assertTrue($mailable->hasReplyTo('taylor@laravel.com'));
- foreach (['', null, [], false] as $address) {
- $mailable = new WelcomeMailableStub;
- $mailable->replyTo($address);
- $this->assertFalse($mailable->hasReplyTo(new MailableTestUserStub));
- $this->assertFalse($mailable->hasReplyTo($address));
- }
- }
- public function testMailableSetsFromCorrectly()
- {
- $mailable = new WelcomeMailableStub;
- $mailable->from('taylor@laravel.com');
- $this->assertEquals([['name' => null, 'address' => 'taylor@laravel.com']], $mailable->from);
- $this->assertTrue($mailable->hasFrom('taylor@laravel.com'));
- $mailable = new WelcomeMailableStub;
- $mailable->from('taylor@laravel.com', 'Taylor Otwell');
- $this->assertEquals([['name' => 'Taylor Otwell', 'address' => 'taylor@laravel.com']], $mailable->from);
- $this->assertTrue($mailable->hasFrom('taylor@laravel.com', 'Taylor Otwell'));
- $this->assertTrue($mailable->hasFrom('taylor@laravel.com'));
- $mailable = new WelcomeMailableStub;
- $mailable->from(['taylor@laravel.com']);
- $this->assertEquals([['name' => null, 'address' => 'taylor@laravel.com']], $mailable->from);
- $this->assertTrue($mailable->hasFrom('taylor@laravel.com'));
- $this->assertFalse($mailable->hasFrom('taylor@laravel.com', 'Taylor Otwell'));
- $mailable = new WelcomeMailableStub;
- $mailable->from([['name' => 'Taylor Otwell', 'email' => 'taylor@laravel.com']]);
- $this->assertEquals([['name' => 'Taylor Otwell', 'address' => 'taylor@laravel.com']], $mailable->from);
- $this->assertTrue($mailable->hasFrom('taylor@laravel.com', 'Taylor Otwell'));
- $this->assertTrue($mailable->hasFrom('taylor@laravel.com'));
- $mailable = new WelcomeMailableStub;
- $mailable->from(new MailableTestUserStub);
- $this->assertEquals([['name' => 'Taylor Otwell', 'address' => 'taylor@laravel.com']], $mailable->from);
- $this->assertTrue($mailable->hasFrom(new MailableTestUserStub));
- $this->assertTrue($mailable->hasFrom('taylor@laravel.com'));
- $mailable = new WelcomeMailableStub;
- $mailable->from(collect([new MailableTestUserStub]));
- $this->assertEquals([['name' => 'Taylor Otwell', 'address' => 'taylor@laravel.com']], $mailable->from);
- $this->assertTrue($mailable->hasFrom(new MailableTestUserStub));
- $this->assertTrue($mailable->hasFrom('taylor@laravel.com'));
- $mailable = new WelcomeMailableStub;
- $mailable->from(collect([new MailableTestUserStub, new MailableTestUserStub]));
- $this->assertEquals([
- ['name' => 'Taylor Otwell', 'address' => 'taylor@laravel.com'],
- ['name' => 'Taylor Otwell', 'address' => 'taylor@laravel.com'],
- ], $mailable->from);
- $this->assertTrue($mailable->hasFrom(new MailableTestUserStub));
- $this->assertTrue($mailable->hasFrom('taylor@laravel.com'));
- foreach (['', null, [], false] as $address) {
- $mailable = new WelcomeMailableStub;
- $mailable->from($address);
- $this->assertFalse($mailable->hasFrom(new MailableTestUserStub));
- $this->assertFalse($mailable->hasFrom($address));
- }
- }
- public function testItIgnoresDuplicatedRawAttachments()
- {
- $mailable = new WelcomeMailableStub;
- $mailable->attachData('content1', 'report-1.txt');
- $this->assertCount(1, $mailable->rawAttachments);
- $mailable->attachData('content2', 'report-2.txt');
- $this->assertCount(2, $mailable->rawAttachments);
- $mailable->attachData('content1', 'report-1.txt');
- $mailable->attachData('content2', 'report-2.txt');
- $this->assertCount(2, $mailable->rawAttachments);
- $mailable->attachData('content1', 'report-3.txt');
- $mailable->attachData('content2', 'report-4.txt');
- $this->assertCount(4, $mailable->rawAttachments);
- $this->assertSame([
- [
- 'data' => 'content1',
- 'name' => 'report-1.txt',
- 'options' => [],
- ],
- [
- 'data' => 'content2',
- 'name' => 'report-2.txt',
- 'options' => [],
- ],
- [
- 'data' => 'content1',
- 'name' => 'report-3.txt',
- 'options' => [],
- ],
- [
- 'data' => 'content2',
- 'name' => 'report-4.txt',
- 'options' => [],
- ],
- ], $mailable->rawAttachments);
- }
- public function testItIgnoresDuplicateStorageAttachments()
- {
- $mailable = new WelcomeMailableStub;
- $mailable->attachFromStorageDisk('disk1', 'sample/file.txt');
- $this->assertCount(1, $mailable->diskAttachments);
- $mailable->attachFromStorageDisk('disk1', 'sample/file2.txt');
- $this->assertCount(2, $mailable->diskAttachments);
- $mailable->attachFromStorageDisk('disk1', 'sample/file.txt', 'file.txt');
- $mailable->attachFromStorageDisk('disk1', 'sample/file2.txt');
- $this->assertCount(2, $mailable->diskAttachments);
- $mailable->attachFromStorageDisk('disk2', 'sample/file.txt', 'file.txt');
- $mailable->attachFromStorageDisk('disk2', 'sample/file2.txt');
- $this->assertCount(4, $mailable->diskAttachments);
- $mailable->attachFromStorageDisk('disk1', 'sample/file.txt', 'custom.txt');
- $this->assertCount(5, $mailable->diskAttachments);
- $this->assertSame([
- [
- 'disk' => 'disk1',
- 'path' => 'sample/file.txt',
- 'name' => 'file.txt',
- 'options' => [],
- ],
- [
- 'disk' => 'disk1',
- 'path' => 'sample/file2.txt',
- 'name' => 'file2.txt',
- 'options' => [],
- ],
- [
- 'disk' => 'disk2',
- 'path' => 'sample/file.txt',
- 'name' => 'file.txt',
- 'options' => [],
- ],
- [
- 'disk' => 'disk2',
- 'path' => 'sample/file2.txt',
- 'name' => 'file2.txt',
- 'options' => [],
- ],
- [
- 'disk' => 'disk1',
- 'path' => 'sample/file.txt',
- 'name' => 'custom.txt',
- 'options' => [],
- ],
- ], $mailable->diskAttachments);
- }
- public function testMailableBuildsViewData()
- {
- $mailable = new WelcomeMailableStub;
- $mailable->build();
- $expected = [
- 'first_name' => 'Taylor',
- 'lastName' => 'Otwell',
- 'framework' => 'Laravel',
- ];
- $this->assertSame($expected, $mailable->buildViewData());
- }
- public function testMailerMayBeSet()
- {
- $mailable = new WelcomeMailableStub;
- $mailable->mailer('array');
- $mailable = unserialize(serialize($mailable));
- $this->assertSame('array', $mailable->mailer);
- }
- }
- class WelcomeMailableStub extends Mailable
- {
- public $framework = 'Laravel';
- protected $version = '5.3';
- /**
- * Build the message.
- *
- * @return $this
- */
- public function build()
- {
- $this->with('first_name', 'Taylor')
- ->withLastName('Otwell');
- }
- }
- class MailableTestUserStub
- {
- public $name = 'Taylor Otwell';
- public $email = 'taylor@laravel.com';
- }
|