Passed
Pull Request — master (#417)
by Alejandro
06:44
created

TaskRunnerFactoryTest   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 34
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 3
eloc 18
c 1
b 0
f 0
dl 0
loc 34
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A setUp() 0 3 1
A properlyCreatesService() 0 15 1
A getPropertyFromTaskRunner() 0 6 1
1
<?php
2
declare(strict_types=1);
3
4
namespace ShlinkioTest\Shlink\EventDispatcher\Async;
5
6
use Interop\Container\ContainerInterface;
7
use PHPUnit\Framework\TestCase;
8
use Psr\Log\LoggerInterface;
9
use ReflectionObject;
10
use Shlinkio\Shlink\EventDispatcher\Async\TaskRunner;
11
use Shlinkio\Shlink\EventDispatcher\Async\TaskRunnerFactory;
12
13
class TaskRunnerFactoryTest extends TestCase
14
{
15
    /** @var TaskRunnerFactory */
16
    private $factory;
17
18
    public function setUp(): void
19
    {
20
        $this->factory = new TaskRunnerFactory();
21
    }
22
23
    /** @test */
24
    public function properlyCreatesService(): void
25
    {
26
        $loggerMock = $this->prophesize(LoggerInterface::class);
27
        $logger = $loggerMock->reveal();
28
        $containerMock = $this->prophesize(ContainerInterface::class);
29
        $getLogger = $containerMock->get(LoggerInterface::class)->willReturn($logger);
30
        $container = $containerMock->reveal();
31
32
        $taskRunner = ($this->factory)($container, '');
33
        $loggerProp = $this->getPropertyFromTaskRunner($taskRunner, 'logger');
34
        $containerProp = $this->getPropertyFromTaskRunner($taskRunner, 'container');
35
36
        $this->assertSame($container, $containerProp);
37
        $this->assertSame($logger, $loggerProp);
38
        $getLogger->shouldHaveBeenCalledOnce();
39
    }
40
41
    private function getPropertyFromTaskRunner(TaskRunner $taskRunner, string $propertyName)
42
    {
43
        $ref = new ReflectionObject($taskRunner);
44
        $prop = $ref->getProperty($propertyName);
45
        $prop->setAccessible(true);
46
        return $prop->getValue($taskRunner);
47
    }
48
}
49