Passed
Push — test-DocBlockServiceNotFoundEx... ( e04a65 )
by Chema
04:01
created

DocBlockResolverTest::test_service_not_found()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 4
nc 1
nop 0
dl 0
loc 7
rs 10
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace GacelaTest\Integration\Framework\DocBlockResolver;
6
7
use Gacela\Framework\Bootstrap\GacelaConfig;
8
use Gacela\Framework\ClassResolver\DocBlockService\DocBlockServiceNotFoundException;
9
use Gacela\Framework\ClassResolver\DocBlockService\DocBlockServiceResolver;
10
use Gacela\Framework\ClassResolver\DocBlockService\MissingClassDefinitionException;
11
use Gacela\Framework\DocBlockResolver\DocBlockResolvable;
12
use Gacela\Framework\DocBlockResolver\DocBlockResolver;
13
use Gacela\Framework\Gacela;
14
use GacelaTest\Integration\Framework\DocBlockResolver\Module\FakeCommand;
15
use GacelaTest\Integration\Framework\DocBlockResolver\Module\FakeConfig;
16
use GacelaTest\Integration\Framework\DocBlockResolver\Module\FakeFacade;
17
use GacelaTest\Integration\Framework\DocBlockResolver\Module\FakeFactory;
18
use GacelaTest\Integration\Framework\DocBlockResolver\Module\FakeRandomService;
19
use PHPUnit\Framework\TestCase;
20
21
final class DocBlockResolverTest extends TestCase
22
{
23
    protected function setUp(): void
24
    {
25
        Gacela::bootstrap(__DIR__, static function (GacelaConfig $config): void {
26
            $config->resetInMemoryCache();
27
        });
28
    }
29
30
    public function test_missing_class_definition(): void
31
    {
32
        $this->expectException(MissingClassDefinitionException::class);
33
34
        (new FakeCommand())->getUnknown();
35
    }
36
37
    public function test_service_not_found(): void
38
    {
39
        $this->expectException(DocBlockServiceNotFoundException::class);
40
41
        $resolver = new DocBlockServiceResolver('');
42
        $command = new FakeCommand();
43
        $resolver->resolve($command);
44
    }
45
46
    public function test_normalize_facade(): void
47
    {
48
        $resolver = DocBlockResolver::fromCaller(new FakeCommand());
49
        $actual = $resolver->getDocBlockResolvable('getFacade');
50
        $expected = new DocBlockResolvable(FakeFacade::class, 'Facade');
51
52
        self::assertEquals($expected, $actual);
53
    }
54
55
    public function test_normalize_factory(): void
56
    {
57
        $resolver = DocBlockResolver::fromCaller(new FakeFacade());
58
        $actual = $resolver->getDocBlockResolvable('getFactory');
59
        $expected = new DocBlockResolvable(FakeFactory::class, 'Factory');
60
61
        self::assertEquals($expected, $actual);
62
    }
63
64
    public function test_normalize_config(): void
65
    {
66
        $resolver = DocBlockResolver::fromCaller(new FakeFactory());
67
        $actual = $resolver->getDocBlockResolvable('getConfig');
68
        $expected = new DocBlockResolvable(FakeConfig::class, 'Config');
69
70
        self::assertEquals($expected, $actual);
71
    }
72
73
    public function test_normalize_random(): void
74
    {
75
        $resolver = DocBlockResolver::fromCaller(new FakeCommand());
76
        $actual = $resolver->getDocBlockResolvable('getRandom');
77
        $expected = new DocBlockResolvable(FakeRandomService::class, 'FakeRandomService');
78
79
        self::assertEquals($expected, $actual);
80
    }
81
}
82