Passed
Push — master ( e8d625...c24361 )
by Sergei
02:31
created

LoggerInterfaceProxyTest::testLogMethods()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 12
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 9
c 0
b 0
f 0
nc 1
nop 4
dl 0
loc 12
rs 9.9666
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Yiisoft\Yii\Debug\Tests\Unit\Collector;
6
7
use PHPUnit\Framework\Attributes\DataProvider;
8
use PHPUnit\Framework\TestCase;
9
use Psr\Log\LoggerInterface;
10
use Psr\Log\LogLevel;
11
use Yiisoft\Yii\Debug\Collector\LogCollector;
12
use Yiisoft\Yii\Debug\Collector\LoggerInterfaceProxy;
13
14
final class LoggerInterfaceProxyTest extends TestCase
15
{
16
    #[DataProvider('logMethodsProvider')]
17
    public function testLogMethods(string $method, string $level, string $message, array $context): void
18
    {
19
        $logger = $this->createMock(LoggerInterface::class);
20
        $collector = $this->createMock(LogCollector::class);
21
        $collector
22
            ->expects($this->once())
23
            ->method('collect')
24
            ->with($level, $message, $context, __FILE__ . ':27');
25
        $proxy = new LoggerInterfaceProxy($logger, $collector);
26
27
        $proxy->$method($message, $context);
28
    }
29
30
    #[DataProvider('logMethodsProvider')]
31
    public function testMethodLog($method, string $level, string $message, array $context): void
32
    {
33
        $logger = $this->createMock(LoggerInterface::class);
34
        $collector = $this->createMock(LogCollector::class);
35
        $collector
36
            ->expects($this->once())
37
            ->method('collect')
38
            ->with($level, $message, $context, __FILE__ . ':41');
39
        $proxy = new LoggerInterfaceProxy($logger, $collector);
40
41
        $proxy->log($level, $message, $context);
42
    }
43
44
    public static function logMethodsProvider(): iterable
45
    {
46
        yield 'alert' => ['alert', LogLevel::ALERT, 'message', []];
47
        yield 'critical' => ['critical', LogLevel::CRITICAL, 'message', []];
48
        yield 'debug' => ['debug', LogLevel::DEBUG, 'message', []];
49
        yield 'emergency' => ['emergency', LogLevel::EMERGENCY, 'message', []];
50
        yield 'notice' => ['notice', LogLevel::NOTICE, 'message', []];
51
        yield 'error' => ['error', LogLevel::ERROR, 'message', ['context']];
52
        yield 'info' => ['info', LogLevel::INFO, 'message', ['context']];
53
        yield 'warning' => ['warning', LogLevel::WARNING, 'message', ['context']];
54
    }
55
}
56