sterntours/trunk/_vendor/symfony/swiftmailer-bundle/Tests/Command/SendEmailCommandTest.php
Kevin Adametz 33458b2ca3 Update
2020-03-07 19:46:02 +01:00

84 lines
2.9 KiB
PHP

<?php
namespace Symfony\Bundle\SwiftmailerBundle\Tests\Command;
use Symfony\Bundle\SwiftmailerBundle\Command\SendEmailCommand;
use Symfony\Component\Console\Tester\CommandTester;
use Symfony\Component\DependencyInjection\Container;
use Symfony\Component\DependencyInjection\ContainerInterface;
class SendEmailCommandTest extends \PHPUnit_Framework_TestCase
{
public function testRecoverSpoolTransport()
{
$realTransport = $this->getMockBuilder('Swift_Transport')->getMock();
$spool = $this->getMockBuilder('Swift_Spool')->getMock();
$spool
->expects($this->once())
->method('flushQueue')
->with($realTransport)
->will($this->returnValue(5))
;
$spoolTransport = new \Swift_Transport_SpoolTransport(new \Swift_Events_SimpleEventDispatcher(), $spool);
$container = $this->buildContainer($spoolTransport, $realTransport);
$tester = $this->executeCommand($container);
$this->assertStringEndsWith("5 emails sent\n", $tester->getDisplay());
}
public function testRecoverLoadbalancedTransportWithSpool()
{
$realTransport = $this->getMockBuilder('Swift_Transport')->getMock();
$spool = $this->getMockBuilder('Swift_Spool')->getMock();
$spool
->expects($this->once())
->method('flushQueue')
->with($realTransport)
->will($this->returnValue(7))
;
$spoolTransport = new \Swift_Transport_SpoolTransport(new \Swift_Events_SimpleEventDispatcher(), $spool);
$loadBalancedTransport = new \Swift_Transport_LoadBalancedTransport();
$loadBalancedTransport->setTransports(array($spoolTransport));
$container = $this->buildContainer($loadBalancedTransport, $realTransport);
$tester = $this->executeCommand($container);
$this->assertStringEndsWith("7 emails sent\n", $tester->getDisplay());
}
/**
* @return Container
*/
private function buildContainer(\Swift_Transport $transport, \Swift_Transport $realTransport, $name = 'default')
{
$mailer = new \Swift_Mailer($transport);
$container = new Container();
$container->set(sprintf('swiftmailer.mailer.%s', $name), $mailer);
$container->set(sprintf('swiftmailer.mailer.%s.transport.real', $name), $realTransport);
$container->setParameter('swiftmailer.mailers', array($name => $mailer));
$container->setParameter(sprintf('swiftmailer.mailer.%s.spool.enabled', $name), true);
return $container;
}
/**
* @return CommandTester
*/
private function executeCommand(ContainerInterface $container, $input = array(), $options = array())
{
$command = new SendEmailCommand();
$command->setContainer($container);
$tester = new CommandTester($command);
$tester->execute($input, $options);
return $tester;
}
}