Passed
Push — bugfix/support-windows ( 0e99e7...b5ecf8 )
by Jesús
06:33 queued 02:55
created

LocatorTest::test_get_existing_singleton()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 3
nc 1
nop 0
dl 0
loc 7
rs 10
c 1
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace GacelaTest\Unit\Framework\Container;
6
7
use Gacela\Framework\Container\Container;
8
use Gacela\Framework\Container\Locator;
9
use GacelaTest\Fixtures\StringValue;
10
use PHPUnit\Framework\TestCase;
11
12
final class LocatorTest extends TestCase
13
{
14
    public function setUp(): void
15
    {
16
        Locator::resetInstance();
17
    }
18
19
    public function test_get_concrete_class(): void
20
    {
21
        /** @var StringValue $stringValue */
22
        $stringValue = Locator::getInstance()->get(StringValue::class);
23
        self::assertInstanceOf(StringValue::class, $stringValue);
24
        self::assertSame('', $stringValue->value());
25
        $stringValue->setValue('updated value');
26
27
        /** @var StringValue $stringValue2 */
28
        $stringValue2 = Locator::getInstance()->get(StringValue::class);
29
        self::assertSame('updated value', $stringValue2->value());
30
    }
31
32
    public function test_get_non_existing_singleton(): void
33
    {
34
        $nullValue = Locator::getSingleton(NonExisting::class);
35
36
        self::assertNull($nullValue);
37
    }
38
39
    public function test_get_existing_singleton(): void
40
    {
41
        Locator::addSingleton(StringValue::class, new StringValue('str'));
42
43
        $singleton = Locator::getSingleton(StringValue::class);
44
45
        self::assertEquals(new StringValue('str'), $singleton);
46
    }
47
48
    public function test_get_existing_singleton_from_container(): void
49
    {
50
        $container = new Container(bindings: [
51
            StringValue::class => new StringValue('str'),
52
        ]);
53
54
        $singleton = Locator::getSingleton(StringValue::class, $container);
55
56
        self::assertEquals(new StringValue('str'), $singleton);
57
    }
58
}
59