Completed
Push — master ( e66582...3d2cfc )
by Alejandro
21s queued 12s
created

ErrorLoggerTest::provideStatusCodes()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 12
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 10
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 12
rs 9.9332
1
<?php
2
3
declare(strict_types=1);
4
5
namespace ShlinkioTest\Shlink\Common\Logger;
6
7
use Exception;
8
use Laminas\Diactoros\Response;
9
use Laminas\Diactoros\ServerRequest;
10
use PHPUnit\Framework\TestCase;
11
use Prophecy\Prophecy\ObjectProphecy;
12
use Psr\Log\LoggerInterface;
13
use Psr\Log\LogLevel;
14
use Shlinkio\Shlink\Common\Logger\ErrorLogger;
15
16
class ErrorLoggerTest extends TestCase
17
{
18
    private ErrorLogger $errorLogger;
19
    private ObjectProphecy $logger;
20
21
    public function setUp(): void
22
    {
23
        $this->logger = $this->prophesize(LoggerInterface::class);
24
        $this->errorLogger = new ErrorLogger($this->logger->reveal());
25
    }
26
27
    /**
28
     * @test
29
     * @dataProvider provideStatusCodes
30
     */
31
    public function delegatesIntoInternalLoggerWhenInvoked(int $status, string $expectedLevel): void
32
    {
33
        $e = new Exception('Something wrong');
34
        $log = $this->logger->log($expectedLevel, (string) $e);
35
36
        ($this->errorLogger)($e, new ServerRequest(), (new Response())->withStatus($status));
37
38
        $log->shouldHaveBeenCalledOnce();
39
    }
40
41
    public function provideStatusCodes(): iterable
42
    {
43
        yield 'status 500' => [500, LogLevel::ERROR];
44
        yield 'status 503' => [503, LogLevel::ERROR];
45
        yield 'status 504' => [504, LogLevel::ERROR];
46
        yield 'status 400' => [400, LogLevel::DEBUG];
47
        yield 'status 401' => [401, LogLevel::DEBUG];
48
        yield 'status 403' => [403, LogLevel::DEBUG];
49
        yield 'status 404' => [404, LogLevel::DEBUG];
50
        yield 'status 499' => [499, LogLevel::DEBUG];
51
        yield 'status 200' => [200, LogLevel::DEBUG];
52
        yield 'status 301' => [301, LogLevel::DEBUG];
53
    }
54
}
55