Passed
Push — main ( fd82ee...06a2e6 )
by Chema
50s queued 13s
created

test_object_with_resolvable_dependencies()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 3
c 0
b 0
f 0
dl 0
loc 6
rs 10
cc 1
nc 1
nop 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace GacelaTest\Unit;
6
7
use Gacela\Resolver\Container;
8
use GacelaTest\Fake\ClassWithInterfaceDependencies;
9
use GacelaTest\Fake\ClassWithObjectDependencies;
10
use GacelaTest\Fake\ClassWithoutDependencies;
11
use GacelaTest\Fake\Person;
12
use GacelaTest\Fake\PersonInterface;
13
use PHPUnit\Framework\TestCase;
14
15
final class ContainerTest extends TestCase
16
{
17
    public function test_static_create_without_dependencies(): void
18
    {
19
        $actual = Container::create(ClassWithoutDependencies::class);
20
21
        self::assertEquals(new ClassWithoutDependencies(), $actual);
22
    }
23
24
    public function test_static_create_with_dependencies(): void
25
    {
26
        $actual = Container::create(ClassWithObjectDependencies::class);
27
28
        self::assertEquals(new ClassWithObjectDependencies(new Person()), $actual);
29
    }
30
31
    public function test_without_dependencies(): void
32
    {
33
        $container = new Container();
34
        $actual = $container->get(ClassWithoutDependencies::class);
35
36
        self::assertEquals(new ClassWithoutDependencies(), $actual);
37
    }
38
39
    public function test_object_with_resolvable_dependencies(): void
40
    {
41
        $container = new Container();
42
        $actual = $container->get(ClassWithObjectDependencies::class);
43
44
        self::assertEquals(new ClassWithObjectDependencies(new Person()), $actual);
45
    }
46
47
    public function test_interface_dependency(): void
48
    {
49
        $container = new Container([
50
            PersonInterface::class => Person::class,
51
        ]);
52
        $actual = $container->get(ClassWithObjectDependencies::class);
53
54
        self::assertEquals(new ClassWithObjectDependencies(new Person()), $actual);
55
    }
56
57
    public function test_use_mapped_interface_dependency(): void
58
    {
59
        $person = new Person();
60
        $person->name = 'anything';
61
62
        $container = new Container([
63
            PersonInterface::class => $person,
64
        ]);
65
        $actual = $container->get(ClassWithInterfaceDependencies::class);
66
67
        self::assertEquals(new ClassWithInterfaceDependencies($person), $actual);
68
    }
69
70
    public function test_has_not_existing_class(): void
71
    {
72
        $container = new Container();
73
        $actual = $container->has(InexistentClass::class);
74
75
        self::assertFalse($actual);
76
    }
77
78
    public function test_has_existing_class(): void
79
    {
80
        $container = new Container();
81
        $actual = $container->has(Person::class);
82
83
        self::assertTrue($actual);
84
    }
85
}
86