Passed
Pull Request — master (#156)
by Wilmer
02:29
created

RequestCollectorTest   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 56
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 5
eloc 33
dl 0
loc 56
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A checkCollectedData() 0 5 1
A collectTestData() 0 28 1
A checkIndexData() 0 9 2
A getCollector() 0 3 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Yiisoft\Yii\Debug\Tests\Collector;
6
7
use Psr\Http\Message\ResponseInterface;
8
use Psr\Http\Message\ServerRequestInterface;
9
use Psr\Http\Message\StreamInterface;
10
use Psr\Http\Message\UriInterface;
11
use Yiisoft\Yii\Debug\Collector\CollectorInterface;
12
use Yiisoft\Yii\Debug\Collector\RequestCollector;
13
use Yiisoft\Yii\Http\Event\AfterRequest;
14
use Yiisoft\Yii\Http\Event\BeforeRequest;
15
16
final class RequestCollectorTest extends CollectorTestCase
17
{
18
    /**
19
     * @param CollectorInterface|RequestCollector $collector
20
     */
21
    protected function collectTestData(CollectorInterface $collector): void
22
    {
23
        $requestMock = $this->createMock(ServerRequestInterface::class);
24
        $responseMock = $this->createMock(ResponseInterface::class);
25
        $uriMock = $this->createMock(UriInterface::class);
26
        $bodyMock = $this->createMock(StreamInterface::class);
27
28
        $uriMock->method('getPath')
29
            ->willReturn('url');
30
        $uriMock->method('getQuery')
31
            ->willReturn('');
32
        $uriMock->method('__toString')
33
            ->willReturn('http://test.site/url');
34
35
        $requestMock->method('getMethod')
36
            ->willReturn('GET');
37
        $requestMock->method('getHeaderLine')
38
            ->willReturn('');
39
        $requestMock->method('getUri')
40
            ->willReturn($uriMock);
41
42
        $responseMock->method('getStatusCode')
43
            ->willReturn(200);
44
        $responseMock->method('getBody')
45
            ->willReturn($bodyMock);
46
47
        $collector->collect(new BeforeRequest($requestMock));
0 ignored issues
show
Bug introduced by
The method collect() does not exist on Yiisoft\Yii\Debug\Collector\CollectorInterface. It seems like you code against a sub-type of said class. However, the method does not exist in Yiisoft\Yii\Debug\Collector\QueueCollector. Are you sure you never get one of those? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

47
        $collector->/** @scrutinizer ignore-call */ 
48
                    collect(new BeforeRequest($requestMock));
Loading history...
48
        $collector->collect(new AfterRequest($responseMock));
49
    }
50
51
    protected function getCollector(): CollectorInterface
52
    {
53
        return new RequestCollector();
54
    }
55
56
    protected function checkCollectedData(CollectorInterface $collector): void
57
    {
58
        parent::checkCollectedData($collector);
59
        $this->assertInstanceOf(ServerRequestInterface::class, $collector->getCollected()['request']);
60
        $this->assertInstanceOf(ResponseInterface::class, $collector->getCollected()['response']);
61
    }
62
63
    protected function checkIndexData(CollectorInterface $collector): void
64
    {
65
        parent::checkIndexData($collector);
66
        if ($collector instanceof RequestCollector) {
67
            $data = $collector->getIndexData();
68
69
            $this->assertEquals('http://test.site/url', $data['request']['url']);
70
            $this->assertEquals('GET', $data['request']['method']);
71
            $this->assertEquals(200, $data['response']['statusCode']);
72
        }
73
    }
74
}
75