BaseTestCase::runApp()   A
last analyzed

Complexity

Conditions 3
Paths 4

Size

Total Lines 39
Code Lines 21

Duplication

Lines 0
Ratio 0 %

Importance

Changes 3
Bugs 0 Features 0
Metric Value
cc 3
eloc 21
c 3
b 0
f 0
nc 4
nop 3
dl 0
loc 39
rs 9.584
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Tests\integration;
6
7
use Slim\App;
8
use Slim\Http\Request;
9
use Slim\Http\Response;
10
use Slim\Http\Environment;
11
use Psr\Http\Message\ResponseInterface;
12
13
class BaseTestCase extends \PHPUnit\Framework\TestCase
14
{
15
    public static string $jwt = '';
16
17
    public function runApp(
18
        string $requestMethod,
19
        string $requestUri,
20
        array $requestData = null
21
    ): ResponseInterface {
22
        $environment = Environment::mock(
23
            [
24
                'REQUEST_METHOD' => $requestMethod,
25
                'REQUEST_URI' => $requestUri
26
            ]
27
        );
28
29
        $request = Request::createFromEnvironment($environment);
30
        $request = $request->withHeader('Authorization', self::$jwt);
31
32
        if (isset($requestData)) {
33
            $request = $request->withParsedBody($requestData);
34
        }
35
36
        $baseDir = __DIR__ . '/../../';
37
        $dotenv = \Dotenv\Dotenv::createUnsafeImmutable($baseDir);
38
        $envFile = $baseDir . '.env';
39
        if (file_exists($envFile)) {
40
            $dotenv->load();
41
        }
42
43
        $settings = require __DIR__ . '/../../src/App/Settings.php';
44
45
        $app = new App($settings);
46
47
        $container = $app->getContainer();
48
49
        require __DIR__ . '/../../src/App/Dependencies.php';
50
        require __DIR__ . '/../../src/App/Services.php';
51
        require __DIR__ . '/../../src/App/Repositories.php';
52
        require __DIR__ . '/../../src/App/Routes.php';
53
        (require __DIR__ . '/../../src/App/Routes.php')($app);
54
55
        return $app->process($request, new Response());
56
    }
57
}
58