Add new tests for external updates logger.

parent 5002857e
......@@ -10,6 +10,7 @@
namespace Longman\TelegramBot\Tests\Unit;
use Longman\TelegramBot\Exception\TelegramLogException;
use Longman\TelegramBot\TelegramLog;
use Monolog\Handler\StreamHandler;
use Monolog\Logger;
......@@ -27,17 +28,18 @@ class TelegramLogTest extends TestCase
* @var array Dummy logfile paths
*/
private static $logfiles = [
'error' => '/tmp/php-telegram-bot-errorlog.log',
'debug' => '/tmp/php-telegram-bot-debuglog.log',
'update' => '/tmp/php-telegram-bot-updatelog.log',
'external' => '/tmp/php-telegram-bot-externallog.log',
'error' => '/tmp/php-telegram-bot-error.log',
'debug' => '/tmp/php-telegram-bot-debug.log',
'update' => '/tmp/php-telegram-bot-update.log',
'external' => '/tmp/php-telegram-bot-external.log',
'external_update' => '/tmp/php-telegram-bot-external_update.log',
];
protected function setUp()
{
// Make sure no logger instance is set before each test.
TestHelpers::setStaticProperty('Longman\TelegramBot\TelegramLog', 'logger', null);
TestHelpers::setStaticProperty('Longman\TelegramBot\TelegramLog', 'update_logger', null);
TestHelpers::setStaticProperty(TelegramLog::class, 'logger', null);
TestHelpers::setStaticProperty(TelegramLog::class, 'update_logger', null);
}
protected function tearDown()
......@@ -48,39 +50,35 @@ class TelegramLogTest extends TestCase
}
}
/**
* @expectedException \Longman\TelegramBot\Exception\TelegramLogException
*/
public function testNewInstanceWithoutErrorPath()
{
$this->setExpectedException(TelegramLogException::class);
TelegramLog::initErrorLog('');
}
/**
* @expectedException \Longman\TelegramBot\Exception\TelegramLogException
*/
public function testNewInstanceWithoutDebugPath()
{
$this->setExpectedException(TelegramLogException::class);
TelegramLog::initDebugLog('');
}
/**
* @expectedException \Longman\TelegramBot\Exception\TelegramLogException
*/
public function testNewInstanceWithoutUpdatePath()
{
$this->setExpectedException(TelegramLogException::class);
TelegramLog::initUpdateLog('');
}
public function testErrorStream()
{
$file = self::$logfiles['error'];
$this->assertFileNotExists($file);
TelegramLog::initErrorLog($file);
TelegramLog::error('my error');
TelegramLog::error('my 50% error');
TelegramLog::error('my old %s %s error', 'custom', 'placeholder');
TelegramLog::error('my new {place} {holder} error', ['place' => 'custom', 'holder' => 'placeholder']);
$this->assertFileExists($file);
$error_log = file_get_contents($file);
$this->assertContains('bot_log.ERROR: my error', $error_log);
......@@ -92,12 +90,14 @@ class TelegramLogTest extends TestCase
public function testDebugStream()
{
$file = self::$logfiles['debug'];
$this->assertFileNotExists($file);
TelegramLog::initDebugLog($file);
TelegramLog::debug('my debug');
TelegramLog::debug('my 50% debug');
TelegramLog::debug('my old %s %s debug', 'custom', 'placeholder');
TelegramLog::debug('my new {place} {holder} debug', ['place' => 'custom', 'holder' => 'placeholder']);
$this->assertFileExists($file);
$debug_log = file_get_contents($file);
$this->assertContains('bot_log.DEBUG: my debug', $debug_log);
......@@ -109,12 +109,14 @@ class TelegramLogTest extends TestCase
public function testUpdateStream()
{
$file = self::$logfiles['update'];
$this->assertFileNotExists($file);
TelegramLog::initUpdateLog($file);
TelegramLog::update('my update');
TelegramLog::update('my 50% update');
TelegramLog::update('my old %s %s update', 'custom', 'placeholder');
TelegramLog::update('my new {place} {holder} update', ['place' => 'custom', 'holder' => 'placeholder']);
$this->assertFileExists($file);
$update_log = file_get_contents($file);
$this->assertContains('my update', $update_log);
......@@ -126,13 +128,17 @@ class TelegramLogTest extends TestCase
public function testExternalStream()
{
$file = self::$logfiles['external'];
$file_update = self::$logfiles['external_update'];
$this->assertFileNotExists($file);
$this->assertFileNotExists($file_update);
$external_monolog = new Logger('bot_external_log');
$external_monolog->pushHandler(new StreamHandler($file, Logger::ERROR));
$external_monolog->pushHandler(new StreamHandler($file, Logger::DEBUG));
$external_logger = new Logger('bot_external_log');
$external_logger->pushHandler(new StreamHandler($file, Logger::ERROR));
$external_logger->pushHandler(new StreamHandler($file, Logger::DEBUG));
$external_update_logger = new Logger('bot_external_update_log');
$external_update_logger->pushHandler(new StreamHandler($file_update, Logger::INFO));
TelegramLog::initialize($external_monolog);
TelegramLog::initialize($external_logger, $external_update_logger);
TelegramLog::error('my error');
TelegramLog::error('my 50% error');
TelegramLog::error('my old %s %s error', 'custom', 'placeholder');
......@@ -141,9 +147,15 @@ class TelegramLogTest extends TestCase
TelegramLog::debug('my 50% debug');
TelegramLog::debug('my old %s %s debug', 'custom', 'placeholder');
TelegramLog::debug('my new {place} {holder} debug', ['place' => 'custom', 'holder' => 'placeholder']);
TelegramLog::update('my update');
TelegramLog::update('my 50% update');
TelegramLog::update('my old %s %s update', 'custom', 'placeholder');
TelegramLog::update('my new {place} {holder} update', ['place' => 'custom', 'holder' => 'placeholder']);
$this->assertFileExists($file);
$this->assertFileExists($file_update);
$file_contents = file_get_contents($file);
$file_update_contents = file_get_contents($file_update);
$this->assertContains('bot_external_log.ERROR: my error', $file_contents);
$this->assertContains('bot_external_log.ERROR: my 50% error', $file_contents);
$this->assertContains('bot_external_log.ERROR: my old custom placeholder error', $file_contents);
......@@ -152,5 +164,9 @@ class TelegramLogTest extends TestCase
$this->assertContains('bot_external_log.DEBUG: my 50% debug', $file_contents);
$this->assertContains('bot_external_log.DEBUG: my old custom placeholder debug', $file_contents);
$this->assertContains('bot_external_log.DEBUG: my new custom placeholder debug', $file_contents);
$this->assertContains('bot_external_update_log.INFO: my update', $file_update_contents);
$this->assertContains('bot_external_update_log.INFO: my 50% update', $file_update_contents);
$this->assertContains('bot_external_update_log.INFO: my old custom placeholder update', $file_update_contents);
$this->assertContains('bot_external_update_log.INFO: my new custom placeholder update', $file_update_contents);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment