Passed
Push — main ( d16966...c5cd47 )
by Chema
04:19
created

ClassInfoTest.php$1 ➔ test_string_real_class()   A

Complexity

Conditions 1

Size

Total Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
c 0
b 0
f 0
dl 0
loc 7
rs 10
1
<?php
2
3
declare(strict_types=1);
4
5
namespace GacelaTest\Unit\Framework\ClassResolver;
6
7
use Gacela\Framework\AbstractDependencyProvider;
8
use Gacela\Framework\AbstractFacade;
9
use Gacela\Framework\ClassResolver\ClassInfo;
10
use Gacela\Framework\Container\Container;
11
use GacelaTest\Fixtures\ClassInfoTestingFacade;
12
use PHPUnit\Framework\TestCase;
13
14
final class ClassInfoTest extends TestCase
15
{
16
    public function test_anonymous_class(): void
17
    {
18
        $facade = new class() extends AbstractFacade {
19
        };
20
        $actual = ClassInfo::from($facade, 'Factory');
21
22
        self::assertSame('module-name@anonymous', $actual->getModuleNamespace(), 'full namespace');
23
        self::assertSame('module-name@anonymous\ClassInfoTest', $actual->getModuleName(), 'module');
24
        self::assertSame('\module-name@anonymous\ClassInfoTest\Factory', $actual->getCacheKey(), 'cache key');
25
    }
26
27
    public function test_anonymous_dep_pro_class(): void
28
    {
29
        $dependencyProvider = new class() extends AbstractDependencyProvider {
0 ignored issues
show
Deprecated Code introduced by
The class Gacela\Framework\AbstractDependencyProvider has been deprecated: in favor of AbstractProvider ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

29
        $dependencyProvider = new class() extends /** @scrutinizer ignore-deprecated */ AbstractDependencyProvider {
Loading history...
30
            public function provideModuleDependencies(Container $container): void
31
            {
32
            }
33
        };
34
        $actual = ClassInfo::from($dependencyProvider, 'DependencyProvider');
35
36
        self::assertSame('module-name@anonymous', $actual->getModuleNamespace(), 'full namespace');
37
        self::assertSame('module-name@anonymous\ClassInfoTest', $actual->getModuleName(), 'module');
38
        self::assertSame('\module-name@anonymous\ClassInfoTest\Provider', $actual->getCacheKey(), 'cache key');
39
    }
40
41
    public function test_object_real_class(): void
42
    {
43
        $facade = new ClassInfoTestingFacade();
44
        $actual = ClassInfo::from($facade, 'Factory');
45
46
        self::assertSame('GacelaTest', $actual->getModuleNamespace(), 'full namespace');
47
        self::assertSame('Fixtures', $actual->getModuleName(), 'fixtures');
48
        self::assertSame('\GacelaTest\Fixtures\Factory', $actual->getCacheKey(), 'cache key');
49
    }
50
51
    public function test_string_real_class(): void
52
    {
53
        $actual = ClassInfo::from(ClassInfoTestingFacade::class, 'Factory');
54
55
        self::assertSame('GacelaTest', $actual->getModuleNamespace(), 'full namespace');
56
        self::assertSame('Fixtures', $actual->getModuleName(), 'module');
57
        self::assertSame('\GacelaTest\Fixtures\Factory', $actual->getCacheKey(), 'cache key');
58
    }
59
}
60