SwiftMailerHandlerTest.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <?php
  2. namespace Monolog\Handler;
  3. use Monolog\Logger;
  4. use Monolog\TestCase;
  5. class SwiftMailerHandlerTest extends TestCase
  6. {
  7. /** @var \Swift_Mailer|\PHPUnit_Framework_MockObject_MockObject */
  8. private $mailer;
  9. public function setUp()
  10. {
  11. $this->mailer = $this
  12. ->getMockBuilder('Swift_Mailer')
  13. ->disableOriginalConstructor()
  14. ->getMock();
  15. }
  16. public function testMessageCreationIsLazyWhenUsingCallback()
  17. {
  18. $this->mailer->expects($this->never())
  19. ->method('send');
  20. $callback = function () {
  21. throw new \RuntimeException('Swift_Message creation callback should not have been called in this test');
  22. };
  23. $handler = new SwiftMailerHandler($this->mailer, $callback);
  24. $records = array(
  25. $this->getRecord(Logger::DEBUG),
  26. $this->getRecord(Logger::INFO),
  27. );
  28. $handler->handleBatch($records);
  29. }
  30. public function testMessageCanBeCustomizedGivenLoggedData()
  31. {
  32. // Wire Mailer to expect a specific Swift_Message with a customized Subject
  33. $expectedMessage = new \Swift_Message();
  34. $this->mailer->expects($this->once())
  35. ->method('send')
  36. ->with($this->callback(function ($value) use ($expectedMessage) {
  37. return $value instanceof \Swift_Message
  38. && $value->getSubject() === 'Emergency'
  39. && $value === $expectedMessage;
  40. }));
  41. // Callback dynamically changes subject based on number of logged records
  42. $callback = function ($content, array $records) use ($expectedMessage) {
  43. $subject = count($records) > 0 ? 'Emergency' : 'Normal';
  44. $expectedMessage->setSubject($subject);
  45. return $expectedMessage;
  46. };
  47. $handler = new SwiftMailerHandler($this->mailer, $callback);
  48. // Logging 1 record makes this an Emergency
  49. $records = array(
  50. $this->getRecord(Logger::EMERGENCY),
  51. );
  52. $handler->handleBatch($records);
  53. }
  54. }