1
0
mirror of https://github.com/Seldaek/monolog.git synced 2025-08-05 04:37:38 +02:00

Add more tests to SlackRecordTest

Conflicts:
- tests/Monolog/Handler/Slack/SlackRecordTest.php - merged the tests
This commit is contained in:
Anton Nizhegorodov
2016-11-13 22:12:56 +02:00
committed by Haralan Dobrev
parent 97eb782e8c
commit ec75076ded

View File

@@ -11,6 +11,7 @@
namespace Monolog\Handler\Slack; namespace Monolog\Handler\Slack;
use Monolog\Formatter\FormatterInterface;
use Monolog\Logger; use Monolog\Logger;
use Monolog\TestCase; use Monolog\TestCase;
@@ -19,6 +20,13 @@ use Monolog\TestCase;
*/ */
class SlackRecordTest extends TestCase class SlackRecordTest extends TestCase
{ {
private $channel;
protected function setUp()
{
$this->channel = 'monolog_alerts';
}
public function dataGetAttachmentColor() public function dataGetAttachmentColor()
{ {
return array( return array(
@@ -47,12 +55,30 @@ class SlackRecordTest extends TestCase
); );
} }
public function testAddsChannel()
{
$record = new SlackRecord($this->channel);
$data = $record->getSlackData($this->getRecord());
$this->assertArrayHasKey('channel', $data);
$this->assertSame($this->channel, $data['channel']);
}
public function testStringifyReturnsNullWithNoLineFormatter() public function testStringifyReturnsNullWithNoLineFormatter()
{ {
$slackRecord = new SlackRecord('#test'); $slackRecord = new SlackRecord('#test');
$this->assertNull($slackRecord->stringify(array('foo' => 'bar'))); $this->assertNull($slackRecord->stringify(array('foo' => 'bar')));
} }
public function testAddsDefaultUsername()
{
$record = new SlackRecord($this->channel);
$data = $record->getSlackData($this->getRecord());
$this->assertArrayHasKey('username', $data);
$this->assertSame('Monolog', $data['username']);
}
/** /**
* @return array * @return array
*/ */
@@ -81,4 +107,225 @@ class SlackRecordTest extends TestCase
$this->assertSame($expectedResult, $slackRecord->stringify($fields)); $this->assertSame($expectedResult, $slackRecord->stringify($fields));
} }
public function testAddsCustomUsername()
{
$username = 'Monolog bot';
$record = new SlackRecord($this->channel, $username);
$data = $record->getSlackData($this->getRecord());
$this->assertArrayHasKey('username', $data);
$this->assertSame($username, $data['username']);
}
public function testNoIcon()
{
$record = new SlackRecord($this->channel);
$data = $record->getSlackData($this->getRecord());
$this->assertArrayNotHasKey('icon_emoji', $data);
}
public function testAddsIcon()
{
$record = new SlackRecord($this->channel, 'Monolog', true, 'ghost');
$data = $record->getSlackData($this->getRecord());
$this->assertArrayHasKey('icon_emoji', $data);
$this->assertSame(':ghost:', $data['icon_emoji']);
}
public function testAddsEmptyTextIfUseAttachment()
{
$record = new SlackRecord($this->channel);
$data = $record->getSlackData($this->getRecord());
$this->assertArrayHasKey('text', $data);
$this->assertSame('', $data['text']);
}
public function testAttachmentsEmptyIfNoAttachment()
{
$record = new SlackRecord($this->channel, 'Monolog', false);
$data = $record->getSlackData($this->getRecord());
$this->assertArrayHasKey('attachments', $data);
$this->assertSame(array(), $data['attachments']);
}
public function testAddsOneAttachment()
{
$record = new SlackRecord($this->channel);
$data = $record->getSlackData($this->getRecord());
$this->assertArrayHasKey('attachments', $data);
$this->assertArrayHasKey(0, $data['attachments']);
$this->assertInternalType('array', $data['attachments'][0]);
}
public function testTextEqualsMessageIfNoFormatter()
{
$message = 'Test message';
$record = new SlackRecord($this->channel, 'Monolog', false);
$data = $record->getSlackData($this->getRecord(Logger::WARNING, $message));
$this->assertArrayHasKey('text', $data);
$this->assertSame($message, $data['text']);
}
public function testTextEqualsFormatterOutput()
{
$formatter = $this->createMock(FormatterInterface::class);
$formatter
->expects($this->any())
->method('format')
->will($this->returnCallback(function ($record) { return $record['message'] . 'test'; }));
$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']);
}
public function testAddsFallbackAndTextToAttachment()
{
$message = 'Test message';
$record = new SlackRecord($this->channel);
$data = $record->getSlackData($this->getRecord(Logger::WARNING, $message));
$this->assertSame($message, $data['attachments'][0]['text']);
$this->assertSame($message, $data['attachments'][0]['fallback']);
}
public function testMapsLevelToColorAttachmentColor()
{
$record = new SlackRecord($this->channel);
$errorLoggerRecord = $this->getRecord(Logger::ERROR);
$emergencyLoggerRecord = $this->getRecord(Logger::EMERGENCY);
$warningLoggerRecord = $this->getRecord(Logger::WARNING);
$infoLoggerRecord = $this->getRecord(Logger::INFO);
$debugLoggerRecord = $this->getRecord(Logger::DEBUG);
$data = $record->getSlackData($errorLoggerRecord);
$this->assertSame(SlackRecord::COLOR_DANGER, $data['attachments'][0]['color']);
$data = $record->getSlackData($emergencyLoggerRecord);
$this->assertSame(SlackRecord::COLOR_DANGER, $data['attachments'][0]['color']);
$data = $record->getSlackData($warningLoggerRecord);
$this->assertSame(SlackRecord::COLOR_WARNING, $data['attachments'][0]['color']);
$data = $record->getSlackData($infoLoggerRecord);
$this->assertSame(SlackRecord::COLOR_GOOD, $data['attachments'][0]['color']);
$data = $record->getSlackData($debugLoggerRecord);
$this->assertSame(SlackRecord::COLOR_DEFAULT, $data['attachments'][0]['color']);
}
public function testAddsShortAttachmentWithoutContextAndExtra()
{
$level = Logger::ERROR;
$levelName = Logger::getLevelName($level);
$record = new SlackRecord($this->channel, 'Monolog', true, null, true);
$data = $record->getSlackData($this->getRecord($level, 'test', array('test' => 1)));
$attachment = $data['attachments'][0];
$this->assertArrayHasKey('title', $attachment);
$this->assertArrayHasKey('fields', $attachment);
$this->assertSame($levelName, $attachment['title']);
$this->assertSame(array(), $attachment['fields']);
}
public function testAddsShortAttachmentWithContextAndExtra()
{
$level = Logger::ERROR;
$levelName = Logger::getLevelName($level);
$record = new SlackRecord($this->channel, 'Monolog', true, null, true, true);
$loggerRecord = $this->getRecord($level, 'test', array('test' => 1));
$loggerRecord['extra'] = array('tags' => array('web'));
$data = $record->getSlackData($loggerRecord);
$attachment = $data['attachments'][0];
$this->assertArrayHasKey('title', $attachment);
$this->assertArrayHasKey('fields', $attachment);
$this->assertCount(2, $attachment['fields']);
$this->assertSame($levelName, $attachment['title']);
$this->assertSame(
array(
array(
'title' => 'Extra',
'value' => 'tags: ["web"]',
'short' => true
),
array(
'title' => 'Context',
'value' => 'test: 1',
'short' => true
)
),
$attachment['fields']
);
}
public function testAddsLongAttachmentWithoutContextAndExtra()
{
$level = Logger::ERROR;
$levelName = Logger::getLevelName($level);
$record = new SlackRecord($this->channel, 'Monolog', true, null);
$data = $record->getSlackData($this->getRecord($level, 'test', array('test' => 1)));
$attachment = $data['attachments'][0];
$this->assertArrayHasKey('title', $attachment);
$this->assertArrayHasKey('fields', $attachment);
$this->assertCount(1, $attachment['fields']);
$this->assertSame('Message', $attachment['title']);
$this->assertSame(
array(array(
'title' => 'Level',
'value' => $levelName,
'short' => true
)),
$attachment['fields']
);
}
public function testAddsLongAttachmentWithContextAndExtra()
{
$level = Logger::ERROR;
$levelName = Logger::getLevelName($level);
$record = new SlackRecord($this->channel, 'Monolog', true, null, false, true);
$loggerRecord = $this->getRecord($level, 'test', array('test' => 1));
$loggerRecord['extra'] = array('tags' => array('web'));
$data = $record->getSlackData($loggerRecord);
$expectedFields = array(
array(
'title' => 'Level',
'value' => $levelName,
'short' => true,
),
array(
'title' => 'tags',
'value' => array('web'),
'short' => false
),
array(
'title' => 'test',
'value' => 1,
'short' => false
)
);
$attachment = $data['attachments'][0];
$this->assertArrayHasKey('title', $attachment);
$this->assertArrayHasKey('fields', $attachment);
$this->assertCount(3, $attachment['fields']);
$this->assertSame('Message', $attachment['title']);
$this->assertSame(
$expectedFields,
$attachment['fields']
);
}
} }