22
33use Illuminate \Log \Writer ;
44use Illuminate \Mail \Mailer ;
5+ use Illuminate \Mail \Message ;
6+ use Illuminate \Mail \Transport \ArrayTransport ;
57use Illuminate \Queue \QueueManager ;
68use Illuminate \View \Factory ;
79use L4 \Tests \BackwardCompatibleTestCase ;
810use Mockery as m ;
11+ use Symfony \Component \Mailer \SentMessage ;
912
1013class MailMailerTest extends BackwardCompatibleTestCase
1114{
@@ -15,23 +18,27 @@ protected function tearDown(): void
1518 m::close ();
1619 }
1720
18-
1921 public function testMailerSendSendsMessageWithProperViewContent ()
2022 {
2123 unset($ _SERVER ['__mailer.test ' ]);
22- $ mailer = $ this ->getMock (Mailer::class, ['createMessage ' ], $ this ->getMocks ());
23- $ message = m::mock ('StdClass ' );
24- $ mailer ->expects ($ this ->once ())->method ('createMessage ' )->willReturn ($ message );
25- $ view = m::mock ('StdClass ' );
26- $ mailer ->getViewFactory ()->shouldReceive ('make ' )->once ()->with ('foo ' , ['data ' , 'message ' => $ message ])->andReturn ($ view );
27- $ view ->shouldReceive ('render ' )->once ()->andReturn ('rendered.view ' );
28- $ message ->shouldReceive ('setBody ' )->once ()->with ('rendered.view ' , 'text/html ' );
29- $ message ->shouldReceive ('setFrom ' )->never ();
30- $ mailer ->setSwiftMailer (m::mock ('StdClass ' ));
31- $ message ->shouldReceive ('getSwiftMessage ' )->once ()->andReturn ($ message );
32- $ mailer ->getSwiftMailer ()->shouldReceive ('send ' )->once ()->with ($ message , []);
33- $ mailer ->send ('foo ' , ['data ' ], function ($ m ) { $ _SERVER ['__mailer.test ' ] = $ m ; });
34- unset($ _SERVER ['__mailer.test ' ]);
24+
25+ $ view = m::mock (Factory::class);
26+ $ view ->shouldReceive ('make ' )->once ()->andReturn ($ view );
27+ $ view ->shouldReceive ('render ' )->once ()->andReturn ('rendered.view ' );
28+
29+ $ mailer = new Mailer ($ view , $ transport = new ArrayTransport ());
30+ $ mailer ->send ('foo ' , ['data ' ], function (Message $ message ) {
31+ $ message ->to ('taylor@laravel.com ' )->from ('hello@laravel.com ' );
32+ });
33+
34+ $ sentMessages = $ transport ->messages ();
35+ self ::assertCount (1 , $ sentMessages );
36+
37+ /** @var SentMessage $sentMessage */
38+ $ sentMessage = $ sentMessages [0 ];
39+ self ::assertStringContainsString ('rendered.view ' , $ sentMessage ->toString ());
40+ self ::assertEquals ('taylor@laravel.com ' , $ sentMessage ->getEnvelope ()->getRecipients ()[0 ]->getAddress ());
41+ self ::assertEquals ('hello@laravel.com ' , $ sentMessage ->getEnvelope ()->getSender ()->getAddress ());
3542 }
3643
3744
0 commit comments