Passed
Pull Request — master (#209)
by Alexander
26:16 queued 23:43
created

MiddlewareCollectorTest   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 35
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 16
dl 0
loc 35
rs 10
c 0
b 0
f 0
wmc 4

4 Methods

Rating   Name   Duplication   Size   Complexity  
A collectTestData() 0 8 1
A checkCollectedData() 0 9 1
A getCollector() 0 3 1
A createCallableMiddleware() 0 4 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Yiisoft\Yii\Debug\Tests\Unit\Collector;
6
7
use Nyholm\Psr7\Response;
8
use Nyholm\Psr7\ServerRequest;
9
use Psr\Http\Server\MiddlewareInterface;
10
use Yiisoft\Di\Container;
11
use Yiisoft\Di\ContainerConfig;
12
use Yiisoft\Middleware\Dispatcher\Event\AfterMiddleware;
13
use Yiisoft\Middleware\Dispatcher\Event\BeforeMiddleware;
14
use Yiisoft\Middleware\Dispatcher\MiddlewareFactory;
15
use Yiisoft\Yii\Debug\Collector\CollectorInterface;
16
use Yiisoft\Yii\Debug\Collector\Web\MiddlewareCollector;
17
use Yiisoft\Yii\Debug\Tests\Shared\AbstractCollectorTestCase;
18
use Yiisoft\Yii\Debug\Tests\Unit\Support\DummyMiddleware;
19
20
final class MiddlewareCollectorTest extends AbstractCollectorTestCase
21
{
22
    /**
23
     * @param CollectorInterface|MiddlewareCollector $collector
24
     */
25
    protected function collectTestData(CollectorInterface $collector): void
26
    {
27
        $collector->collect(new BeforeMiddleware($this->createCallableMiddleware(static fn () => 1), new ServerRequest('GET', '/test')));
0 ignored issues
show
Bug introduced by
The method collect() does not exist on Yiisoft\Yii\Debug\Collector\CollectorInterface. Since it exists in all sub-types, consider adding an abstract or default implementation to Yiisoft\Yii\Debug\Collector\CollectorInterface. ( Ignorable by Annotation )

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

27
        $collector->/** @scrutinizer ignore-call */ 
28
                    collect(new BeforeMiddleware($this->createCallableMiddleware(static fn () => 1), new ServerRequest('GET', '/test')));
Loading history...
28
        $collector->collect(new BeforeMiddleware($this->createCallableMiddleware([DummyMiddleware::class, 'process']), new ServerRequest('GET', '/test')));
29
        $collector->collect(new BeforeMiddleware(new DummyMiddleware(), new ServerRequest('GET', '/test')));
30
        $collector->collect(new AfterMiddleware(new DummyMiddleware(), new Response(200)));
31
        $collector->collect(new AfterMiddleware($this->createCallableMiddleware(static fn () => 1), new Response(200)));
32
        $collector->collect(new AfterMiddleware($this->createCallableMiddleware([DummyMiddleware::class, 'process']), new Response(200)));
33
    }
34
35
    protected function getCollector(): CollectorInterface
36
    {
37
        return new MiddlewareCollector();
38
    }
39
40
    protected function checkCollectedData(array $data): void
41
    {
42
        parent::checkCollectedData($data);
43
44
        $this->assertNotEmpty($data['beforeStack']);
45
        $this->assertNotEmpty($data['afterStack']);
46
        $this->assertNotEmpty($data['actionHandler']);
47
        $this->assertEquals(DummyMiddleware::class, $data['actionHandler']['name']);
48
        $this->assertEquals('GET', $data['actionHandler']['request']->getMethod());
49
    }
50
51
    private function createCallableMiddleware(callable|array $callable): MiddlewareInterface
52
    {
53
        $factory = new MiddlewareFactory(new Container(ContainerConfig::create()));
54
        return $factory->create($callable);
55
    }
56
}
57