Passed
Push — main ( 6979ab...4bfe8a )
by Chema
02:12
created

InstanceCreatorTest   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 39
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 17
c 1
b 0
f 0
dl 0
loc 39
rs 10
wmc 4

4 Methods

Rating   Name   Duplication   Size   Complexity  
A test_use_mapped_interface_dependency() 0 11 1
A test_object_dependencies() 0 6 1
A test_without_dependencies() 0 6 1
A test_interface_dependency() 0 8 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Unit;
6
7
use Gacela\InstanceCreator\InstanceCreator;
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 InstanceCreatorTest extends TestCase
16
{
17
    public function test_without_dependencies(): void
18
    {
19
        $resolver = new InstanceCreator();
20
        $actual = $resolver->createByClassName(ClassWithoutDependencies::class);
21
22
        self::assertEquals(new ClassWithoutDependencies(), $actual);
23
    }
24
25
    public function test_object_dependencies(): void
26
    {
27
        $resolver = new InstanceCreator();
28
        $actual = $resolver->createByClassName(ClassWithObjectDependencies::class);
29
30
        self::assertEquals(new ClassWithObjectDependencies(new Person()), $actual);
31
    }
32
33
    public function test_interface_dependency(): void
34
    {
35
        $resolver = new InstanceCreator([
36
            PersonInterface::class => Person::class,
37
        ]);
38
        $actual = $resolver->createByClassName(ClassWithObjectDependencies::class);
39
40
        self::assertEquals(new ClassWithObjectDependencies(new Person()), $actual);
41
    }
42
43
    public function test_use_mapped_interface_dependency(): void
44
    {
45
        $person = new Person();
46
        $person->name = 'anything';
47
48
        $resolver = new InstanceCreator([
49
            PersonInterface::class => $person,
50
        ]);
51
        $actual = $resolver->createByClassName(ClassWithInterfaceDependencies::class);
52
53
        self::assertEquals(new ClassWithInterfaceDependencies($person), $actual);
54
    }
55
}
56