BaseTestCase   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 52
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 7

Importance

Changes 0
Metric Value
wmc 4
lcom 1
cbo 7
dl 0
loc 52
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A setUp() 0 15 1
A createRequest() 0 11 2
A call() 0 7 1
1
<?php
2
3
namespace Philae\Tests;
4
5
use Middlewares\Utils\Factory\ServerRequestFactory;
6
use Philae\Application;
7
use Philae\DefaultServiceProvider;
8
use Philae\Middlewares as PhilaeMiddlewares;
9
use PHPUnit\Framework\TestCase;
10
use Psr\Http\Message\ResponseInterface;
11
use Psr\Http\Message\ServerRequestInterface;
12
13
abstract class BaseTestCase extends TestCase
14
{
15
    /**
16
     * @var Application
17
     */
18
    protected $app;
19
20
    protected function setUp()
21
    {
22
        $this->app = new Application();
23
        $this->app->addServiceProvider(new DefaultServiceProvider());
24
        $this->app->setMiddlewares(
25
            [
26
                // dispatch the request
27
                new PhilaeMiddlewares\RouteDispatcher(),
28
                // transform the handler response
29
                new PhilaeMiddlewares\ResponseTransformer(),
30
                // execute the request handler
31
                (new PhilaeMiddlewares\RequestHandler())->arguments($this->app),
32
            ]
33
        );
34
    }
35
36
    /**
37
     * @param string $method
38
     * @param string $uri
39
     * @return ServerRequestInterface
40
     */
41
    protected function createRequest($method, $uri)
42
    {
43
        if (!preg_match('/^http/', $uri)) {
44
            $uri = 'http://localhost/' . ltrim($uri, '/');
45
        }
46
47
        $request = (new ServerRequestFactory())->createServerRequest($method, $uri);
48
        $this->assertInstanceOf(ServerRequestInterface::class, $request);
49
50
        return $request;
51
    }
52
53
    /**
54
     * @param ServerRequestInterface $request
55
     * @return ResponseInterface
56
     */
57
    protected function call(ServerRequestInterface $request)
58
    {
59
        $response = $this->app->dispatch($request);
60
        $this->assertInstanceOf(ResponseInterface::class, $response);
61
62
        return $response;
63
    }
64
}
65