diff options
author | Igor Scheller <igor.scheller@igorshp.de> | 2019-07-16 02:59:33 +0200 |
---|---|---|
committer | msquare <msquare@notrademark.de> | 2019-07-20 23:58:14 +0200 |
commit | fece50ca0993d2b52e09be8543cb796594681c9a (patch) | |
tree | a6d83abc8bd431dc12807ecefc8c9bbf0332e870 /tests/Unit | |
parent | 9e9fee25f20e131d4c7d4fa70a0d215dcc37c6f8 (diff) |
Basic coverage tests of logger classes for 100% unit tests coverage
Diffstat (limited to 'tests/Unit')
-rw-r--r-- | tests/Unit/HasDatabase.php | 1 | ||||
-rw-r--r-- | tests/Unit/Logger/EngelsystemLoggerTest.php | 72 | ||||
-rw-r--r-- | tests/Unit/Models/LogEntryTest.php | 43 |
3 files changed, 116 insertions, 0 deletions
diff --git a/tests/Unit/HasDatabase.php b/tests/Unit/HasDatabase.php index 175c244b..7a58bb2b 100644 --- a/tests/Unit/HasDatabase.php +++ b/tests/Unit/HasDatabase.php @@ -44,6 +44,7 @@ trait HasDatabase ['migration' => '2018_01_01_000003_fix_old_tables'], ['migration' => '2018_01_01_000004_cleanup_group_privileges'], ['migration' => '2018_01_01_000005_add_angel_supporter_permissions'], + ['migration' => '2018_12_27_000000_fix_missing_arrival_dates'], ]); $migration->run(__DIR__ . '/../../db/migrations'); diff --git a/tests/Unit/Logger/EngelsystemLoggerTest.php b/tests/Unit/Logger/EngelsystemLoggerTest.php new file mode 100644 index 00000000..0f4c8c32 --- /dev/null +++ b/tests/Unit/Logger/EngelsystemLoggerTest.php @@ -0,0 +1,72 @@ +<?php + +namespace Engelsystem\Test\Unit\Logger; + +use Engelsystem\Logger\EngelsystemLogger; +use Engelsystem\Models\LogEntry; +use Engelsystem\Test\Unit\ServiceProviderTest; +use InvalidArgumentException; +use PHPUnit\Framework\MockObject\MockObject; +use Psr\Log\LogLevel; + +class EngelsystemLoggerTest extends ServiceProviderTest +{ + /** + * @covers \Engelsystem\Logger\EngelsystemLogger::__construct + * @covers \Engelsystem\Logger\EngelsystemLogger::log + */ + public function testLog() + { + /** @var LogEntry|MockObject $logEntry */ + $logEntry = $this->createMock(LogEntry::class); + $logEntry->expects($this->once()) + ->method('create') + ->with(['level' => LogLevel::INFO, 'message' => 'I\'m an information!']); + + $logger = new EngelsystemLogger($logEntry); + + $logger->log(LogLevel::INFO, 'I\'m an information!'); + } + + /** + * @covers \Engelsystem\Logger\EngelsystemLogger::log + * @covers \Engelsystem\Logger\EngelsystemLogger::checkLevel + */ + public function testCheckLevel() + { + /** @var LogEntry|MockObject $logEntry */ + $logEntry = $this->createMock(LogEntry::class); + $logger = new EngelsystemLogger($logEntry); + + $this->expectException(InvalidArgumentException::class); + $logger->log('FooBar', 'Random Stuff'); + } + + /** + * @covers \Engelsystem\Logger\EngelsystemLogger::interpolate + */ + public function testInterpolate() + { + /** @var LogEntry|MockObject $logEntry */ + $logEntry = $this->createMock(LogEntry::class); + $logEntry->expects($this->exactly(3)) + ->method('create') + ->withConsecutive( + [['level' => LogLevel::DEBUG, 'message' => 'User: Foo']], + [['level' => LogLevel::NOTICE, 'message' => 'User: {user}']], + [['level' => LogLevel::NOTICE, 'message' => 'User: Bar']] + ); + + $logger = new EngelsystemLogger($logEntry); + + $logger->log(LogLevel::DEBUG, 'User: {user}', ['user' => 'Foo']); + $logger->log(LogLevel::NOTICE, 'User: {user}', ['user' => ['name' => 'Lorem']]); + $logger->log(LogLevel::NOTICE, 'User: {user}', [ + 'user' => + new class + { + public function __toString() { return 'Bar'; } + } + ]); + } +} diff --git a/tests/Unit/Models/LogEntryTest.php b/tests/Unit/Models/LogEntryTest.php new file mode 100644 index 00000000..0a0efa3c --- /dev/null +++ b/tests/Unit/Models/LogEntryTest.php @@ -0,0 +1,43 @@ +<?php + +namespace Engelsystem\Test\Unit\Models; + +use Engelsystem\Models\LogEntry; +use Engelsystem\Test\Unit\HasDatabase; +use PHPUnit\Framework\TestCase; +use Psr\Log\LogLevel; + +class LogEntryTest extends TestCase +{ + use HasDatabase; + + /** + * @covers \Engelsystem\Models\LogEntry::filter + */ + public function testFilter() + { + foreach ([ + 'I\'m an info' => LogLevel::INFO, + '*Insert explosion here*' => LogLevel::EMERGENCY, + 'Tracing along' => LogLevel::DEBUG, + 'Oops' => LogLevel::ERROR, + 'It\'s happening' => LogLevel::INFO, + 'Something is wrong' => LogLevel::ERROR, + 'Ohi' => LogLevel::INFO, + ] as $message => $level) { + (new LogEntry(['level' => $level, 'message' => $message]))->save(); + } + + $this->assertCount(7, LogEntry::filter()); + $this->assertCount(3, LogEntry::filter(LogLevel::INFO)); + $this->assertCount(1, LogEntry::filter('Oops')); + } + + /** + * Prepare test + */ + protected function setUp(): void + { + $this->initDatabase(); + } +} |