From 08b577c6572d8f6f0f5dcd25491b44933e36d108 Mon Sep 17 00:00:00 2001 From: Anton Nizhegorodov Date: Sun, 13 Nov 2016 23:42:09 +0200 Subject: [PATCH] Update SlackHandler tests && allow SlackRecord formatter change after construction --- src/Monolog/Handler/Slack/SlackRecord.php | 10 ++++++++++ src/Monolog/Handler/SlackHandler.php | 9 +++++++++ tests/Monolog/Handler/Slack/SlackRecordTest.php | 12 ++++++++++++ tests/Monolog/Handler/SlackHandlerTest.php | 13 ++++++++----- 4 files changed, 39 insertions(+), 5 deletions(-) diff --git a/src/Monolog/Handler/Slack/SlackRecord.php b/src/Monolog/Handler/Slack/SlackRecord.php index 7e3eb7ca..ffe42ef2 100644 --- a/src/Monolog/Handler/Slack/SlackRecord.php +++ b/src/Monolog/Handler/Slack/SlackRecord.php @@ -226,4 +226,14 @@ class SlackRecord return $string; } + + /** + * Sets the formatter + * + * @param FormatterInterface $formatter + */ + public function setFormatter(FormatterInterface $formatter) + { + $this->formatter = $formatter; + } } diff --git a/src/Monolog/Handler/SlackHandler.php b/src/Monolog/Handler/SlackHandler.php index e8d585a7..c2c5a949 100644 --- a/src/Monolog/Handler/SlackHandler.php +++ b/src/Monolog/Handler/SlackHandler.php @@ -11,6 +11,7 @@ namespace Monolog\Handler; +use Monolog\Formatter\FormatterInterface; use Monolog\Logger; use Monolog\Handler\Slack\SlackRecord; @@ -178,4 +179,12 @@ class SlackHandler extends SocketHandler return $this->slackRecord->stringify($fields); } + + public function setFormatter(FormatterInterface $formatter) + { + parent::setFormatter($formatter); + $this->slackRecord->setFormatter($formatter); + + return $this; + } } diff --git a/tests/Monolog/Handler/Slack/SlackRecordTest.php b/tests/Monolog/Handler/Slack/SlackRecordTest.php index 1ef4121d..31a68db2 100644 --- a/tests/Monolog/Handler/Slack/SlackRecordTest.php +++ b/tests/Monolog/Handler/Slack/SlackRecordTest.php @@ -181,12 +181,24 @@ class SlackRecordTest extends TestCase ->method('format') ->will($this->returnCallback(function ($record) { return $record['message'] . 'test'; })); + $formatter2 = $this->createMock(FormatterInterface::class); + $formatter2 + ->expects($this->any()) + ->method('format') + ->will($this->returnCallback(function ($record) { return $record['message'] . 'test1'; })); + $message = 'Test message'; $record = new SlackRecord($this->channel, 'Monolog', false, null, false, false, $formatter); $data = $record->getSlackData($this->getRecord(Logger::WARNING, $message)); $this->assertArrayHasKey('text', $data); $this->assertSame($message . 'test', $data['text']); + + $record->setFormatter($formatter2); + $data = $record->getSlackData($this->getRecord(Logger::WARNING, $message)); + + $this->assertArrayHasKey('text', $data); + $this->assertSame($message . 'test1', $data['text']); } public function testAddsFallbackAndTextToAttachment() diff --git a/tests/Monolog/Handler/SlackHandlerTest.php b/tests/Monolog/Handler/SlackHandlerTest.php index a2c98792..5de7885f 100644 --- a/tests/Monolog/Handler/SlackHandlerTest.php +++ b/tests/Monolog/Handler/SlackHandlerTest.php @@ -56,7 +56,10 @@ class SlackHandlerTest extends TestCase fseek($this->res, 0); $content = fread($this->res, 1024); - $this->assertRegexp('/token=myToken&channel=channel1&username=Monolog&text=&attachments=.*$/', $content); + $this->assertRegExp('/username=Monolog/', $content); + $this->assertRegExp('/channel=channel1/', $content); + $this->assertRegExp('/token=myToken/', $content); + $this->assertRegExp('/attachments/', $content); } public function testWriteContentUsesFormatterIfProvided() @@ -72,8 +75,8 @@ class SlackHandlerTest extends TestCase fseek($this->res, 0); $content2 = fread($this->res, 1024); - $this->assertRegexp('/token=myToken&channel=channel1&username=Monolog&text=test1.*$/', $content); - $this->assertRegexp('/token=myToken&channel=channel1&username=Monolog&text=foo--test2.*$/', $content2); + $this->assertRegexp('/text=test1/', $content); + $this->assertRegexp('/text=foo--test2/', $content2); } public function testWriteContentWithEmoji() @@ -83,7 +86,7 @@ class SlackHandlerTest extends TestCase fseek($this->res, 0); $content = fread($this->res, 1024); - $this->assertRegexp('/icon_emoji=%3Aalien%3A$/', $content); + $this->assertRegexp('/icon_emoji=%3Aalien%3A/', $content); } /** @@ -96,7 +99,7 @@ class SlackHandlerTest extends TestCase fseek($this->res, 0); $content = fread($this->res, 1024); - $this->assertRegexp('/color%22%3A%22'.$expectedColor.'/', $content); + $this->assertRegexp('/%5Bcolor%5D='.$expectedColor.'/', $content); } public function testWriteContentWithPlainTextMessage()