LazyMiddlewareTest   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 40
Duplicated Lines 0 %

Importance

Changes 3
Bugs 0 Features 0
Metric Value
eloc 14
dl 0
loc 40
rs 10
c 3
b 0
f 0
wmc 5

8 Methods

Rating   Name   Duplication   Size   Complexity  
A hp$0 ➔ setUp() 0 12 1
A hp$0 ➔ has() 0 3 1
A hp$0 ➔ testDefersToMiddlewareImplemention() 0 11 1
A hp$0 ➔ testFailsIfContainerDoesNotHaveMiddleware() 0 6 1
A hp$0 ➔ get() 0 3 1
testFailsIfContainerDoesNotHaveMiddleware() 0 6 ?
setUp() 0 12 ?
testDefersToMiddlewareImplemention() 0 11 ?
1
<?php
2
declare(strict_types=1);
3
4
namespace Northwoods\Middleware;
5
6
use InvalidArgumentException;
7
use Northwoods\Middleware\Fixture\Handler;
8
use Northwoods\Middleware\Fixture\Middleware;
9
use Nyholm\Psr7\ServerRequest;
10
use PHPUnit\Framework\TestCase;
11
use Psr\Container\ContainerInterface;
12
13
class LazyMiddlewareTest extends TestCase
14
{
15
    /** @var ContainerInterface */
16
    private $container;
17
18
    protected function setUp(): void
19
    {
20
        $this->container = new class implements ContainerInterface
21
        {
22
            public function has($id)
23
            {
24
                return class_exists($id);
25
            }
26
27
            public function get($id)
28
            {
29
                return new $id();
30
            }
31
        };
32
    }
33
34
    public function testDefersToMiddlewareImplemention(): void
35
    {
36
        $middleware = new LazyMiddleware($this->container, Middleware::class);
37
38
        $handler = new Handler();
39
        $request = new ServerRequest('GET', 'https://example.com/');
40
41
        $response = $middleware->process($request, $handler);
42
43
        $this->assertEquals(200, $response->getStatusCode());
44
        $this->assertEquals(Middleware::class, (string) $response->getBody());
45
    }
46
47
    public function testFailsIfContainerDoesNotHaveMiddleware(): void
48
    {
49
        $this->expectException(InvalidArgumentException::class);
50
        $this->expectExceptionMessage('invalid');
51
52
        new LazyMiddleware($this->container, 'invalid');
53
    }
54
}
55