Skip to content

Commit

Permalink
add unit test for Logger
Browse files Browse the repository at this point in the history
  • Loading branch information
klimov-paul committed Jul 18, 2023
1 parent 196b92b commit 3db875e
Show file tree
Hide file tree
Showing 3 changed files with 164 additions and 0 deletions.
104 changes: 104 additions & 0 deletions tests/LoggerTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,10 @@

namespace yii1tech\psr\log\test;

use CLogger;
use Psr\Log\LogLevel;
use yii1tech\psr\log\Logger;
use yii1tech\psr\log\test\support\ArrayLogger;

class LoggerTest extends TestCase
{
Expand All @@ -16,4 +19,105 @@ public function testSetUpYiiLogEnabled(): void
$logger->enableYiiLog(true);
$this->assertTrue($logger->yiiLogEnabled);
}

public function testSetupPsrLogger(): void
{
$logger = new Logger();

$psrLogger = new ArrayLogger();

$logger->setPsrLogger($psrLogger);

$this->assertSame($psrLogger, $logger->getPsrLogger());

$logger->setPsrLogger([
'class' => ArrayLogger::class,
]);

$this->assertTrue($logger->getPsrLogger() instanceof ArrayLogger);
}

public function testWritePsrLog(): void
{
$psrLogger = new ArrayLogger();

$logger = (new Logger())
->setPsrLogger($psrLogger);

$logger->log('test message', CLogger::LEVEL_INFO, 'test-category');

$logs = $psrLogger->flush();
$this->assertFalse(empty($logs[0]));
$this->assertSame(LogLevel::INFO, $logs[0]['level']);
$this->assertSame('test message', $logs[0]['message']);
$this->assertSame(['category' => 'test-category'], $logs[0]['context']);

$logger->log('test message', CLogger::LEVEL_INFO, ['category' => 'context-category']);

$logs = $psrLogger->flush();
$this->assertFalse(empty($logs[0]));
$this->assertSame(['category' => 'context-category'], $logs[0]['context']);

$logger->log('test message', CLogger::LEVEL_INFO, ['foo' => 'bar']);

$logs = $psrLogger->flush();
$this->assertFalse(empty($logs[0]));
$this->assertSame(
[
'foo' => 'bar',
'category' => 'application',
],
$logs[0]['context']
);
}

public function testWriteYiiLog(): void
{
$logger = (new Logger())
->enableYiiLog(true);

$logger->log('test message', CLogger::LEVEL_INFO, 'test-category');

$logs = $logger->getLogs();
$logger->flush();

$this->assertFalse(empty($logs[0]));
$this->assertSame('test message', $logs[0][0]);
$this->assertSame(LogLevel::INFO, $logs[0][1]);
$this->assertSame('test-category', $logs[0][2]);

$logger->log('test message', CLogger::LEVEL_INFO, ['category' => 'context-category']);

$logs = $logger->getLogs();
$logger->flush();

$this->assertFalse(empty($logs[0]));
$this->assertSame('context-category', $logs[0][2]);

$logger->log('test message', CLogger::LEVEL_INFO, ['foo' => 'bar']);

$logs = $logger->getLogs();
$logger->flush();

$this->assertFalse(empty($logs[0]));
$this->assertSame('application', $logs[0][2]);

$logger->log('test message', LogLevel::INFO, 'test-category');

$logs = $logger->getLogs();
$logger->flush();

$this->assertFalse(empty($logs[0]));
$this->assertSame(LogLevel::INFO, $logs[0][1]);
}

public function testDisableYiiLog(): void
{
$logger = (new Logger())
->enableYiiLog(false);

$logger->log('test message', CLogger::LEVEL_INFO, 'test-category');

$this->assertEmpty($logger->getLogs());
}
}
39 changes: 39 additions & 0 deletions tests/support/AbstractArrayLogger.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
<?php

namespace yii1tech\psr\log\test\support;

use Psr\Log\LoggerInterface;
use Psr\Log\LoggerTrait;

/**
* AbstractArrayLogger is an intermediate class for {@see ArrayLogger} creation.
*
* Its existence required since {@see \Psr\Log\LoggerInterface} changes signature over different PHP versions.
*/
abstract class AbstractArrayLogger implements LoggerInterface
{
use LoggerTrait;

/**
* @var array[] written log entries.
*/
public $logs = [];

protected function baseLog($level, $message, array $context = []): void
{
$this->logs[] = [
'level' => $level,
'message' => $message,
'context' => $context,
];
}

public function flush(): array
{
$logs = $this->logs;

$this->logs = [];

return $logs;
}
}
21 changes: 21 additions & 0 deletions tests/support/ArrayLogger.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<?php

namespace yii1tech\psr\log\test\support;

if (version_compare(phpversion(), '8.0', '>=')) {
class ArrayLogger extends AbstractArrayLogger
{
public function log($level, string|\Stringable $message, array $context = []): void
{
$this->baseLog($level, $message, $context);
}
}
} else {
class ArrayLogger extends AbstractArrayLogger
{
public function log($level, $message, array $context = []): void
{
$this->baseLog($level, $message, $context);
}
}
}

0 comments on commit 3db875e

Please sign in to comment.