Passed
Push — add-pre-plugins ( a890af...421a8c )
by Chema
02:48
created

LocatorTest::test_get_non_existing_singleton()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 2
nc 1
nop 0
dl 0
loc 5
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\Locator;
8
use GacelaTest\Fixtures\StringValue;
9
use PHPUnit\Framework\TestCase;
10
11
final class LocatorTest extends TestCase
12
{
13
    private Locator $locator;
14
15
    public function setUp(): void
16
    {
17
        Locator::resetInstance();
18
        $this->locator = Locator::getInstance();
19
    }
20
21
    public function tearDown(): void
22
    {
23
        Locator::resetInstance();
24
    }
25
26
    public function test_get_concrete_class(): void
27
    {
28
        /** @var StringValue $stringValue */
29
        $stringValue = $this->locator->get(StringValue::class);
30
        self::assertInstanceOf(StringValue::class, $stringValue);
31
        self::assertSame('', $stringValue->value());
32
        $stringValue->setValue('updated value');
33
34
        /** @var StringValue $stringValue2 */
35
        $stringValue2 = $this->locator->get(StringValue::class);
36
        self::assertSame('updated value', $stringValue2->value());
37
    }
38
39
    public function test_get_null_from_non_existing_class(): void
40
    {
41
        $nullValue = $this->locator->get(NonExisting::class);
42
43
        self::assertNull($nullValue);
44
    }
45
46
    public function test_get_non_existing_singleton(): void
47
    {
48
        $nullValue = Locator::getSingleton(NonExisting::class);
49
50
        self::assertNull($nullValue);
51
    }
52
53
    public function test_get_existing_singleton(): void
54
    {
55
        Locator::addSingleton(StringValue::class, new StringValue('str'));
56
57
        $singleton = Locator::getSingleton(StringValue::class);
58
59
        self::assertEquals(new StringValue('str'), $singleton);
60
    }
61
}
62