Passed
Push — main ( 0a89cd...ee99b4 )
by Chema
54s queued 14s
created

test_inject_dependencies_in_controllers()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 10
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 6
c 1
b 0
f 0
dl 0
loc 10
rs 10
cc 1
nc 1
nop 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace GacelaTest\Unit\Router;
6
7
use Gacela\Router\MappingInterfaces;
8
use Gacela\Router\Router;
9
use Gacela\Router\Routes;
10
use GacelaTest\Unit\Router\Fake\Name;
11
use GacelaTest\Unit\Router\Fake\NameInterface;
12
use GacelaTest\Unit\Router\Fixtures\FakeControllerWithDependencies;
13
use GacelaTest\Unit\Router\Fixtures\FakeControllerWithRequest;
14
use PHPUnit\Framework\TestCase;
15
16
final class RouterInjectionTest extends TestCase
17
{
18
    public function test_inject_dependencies_in_controllers(): void
19
    {
20
        $_SERVER['REQUEST_URI'] = 'https://example.org/expected/uri';
21
        $_SERVER['REQUEST_METHOD'] = 'GET';
22
23
        $this->expectOutputString('default-Expected!');
24
25
        Router::configure(static function (Routes $routes, MappingInterfaces $mappingInterfaces): void {
26
            $routes->get('expected/uri', FakeControllerWithDependencies::class);
27
            $mappingInterfaces->add(NameInterface::class, new Name('Expected!'));
28
        });
29
    }
30
31
    public function test_inject_controller_with_request_dependency(): void
32
    {
33
        $_SERVER['REQUEST_URI'] = 'https://example.org/expected';
34
        $_SERVER['REQUEST_METHOD'] = 'GET';
35
        $_GET['name'] = 'Katarn';
36
37
        $this->expectOutputString('Katarn');
38
39
        Router::configure(static function (Routes $routes): void {
40
            $routes->get('expected', FakeControllerWithRequest::class);
41
        });
42
    }
43
}
44